Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Aggiornamento automatico
Forum - Visual Basic 6 - Aggiornamento automatico

Avatar
Lupetto (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/01/2008

Segnala al moderatore
Postato alle 23:11
Martedì, 08/01/2008
Ciao a tutti
Vorrei sapere come inserire un aggiornamento automatico nella mia applicazione(vb6)
L'ho visto in molte applicazioni usate in vb6,
ho pensato che si dovrebbe usare l'inet, ma non ho la minima idea di come fare.
spero che mi possiate dare una mano, ciau a presto :)

PM Quote
Avatar
kryc (Ex-Member)
Rookie


Messaggi: 36
Iscritto: 11/12/2007

Segnala al moderatore
Postato alle 5:20
Mercoledì, 09/01/2008
per far si che gli utenti scarichino l'aggiornamento, dal host remoto in cui lo upperai, devi usare il controllo inet.

Aggiungi il controllo inet al progetto, nella proprietà Protocol, metti icFTP E in remote port metti 21

Dopodiche inserisci questo codice al caricamento del form

Codice sorgente - presumibilmente Visual Basic 6

  1. Inet1.Execute "ftp://TuoAccount:TuaPassword@ftp.TuoHost", "GET ." & "\" & nomefile  & " " & nomefile
  2. While Inet1.StillExecuting: DoEvents: Wend



prova così

PM Quote
Avatar
BytE-FucK (Normal User)
Pro


Messaggi: 171
Iscritto: 09/10/2007

Segnala al moderatore
Postato alle 10:51
Mercoledì, 09/01/2008
Allora:

Aggiungi il controllo inet come detto sopra...

Uppa sul tuo sito(prova.it) un file chiamato versione.txt con scritto 2.0.0,che è l'attuale versione disponibile.
Quindi avrai www.prova.it/versione.txt

Adesso il controllo inet,anche senza autentificazione ftp andrà a prendere la versione e confronterà con quella in uso dal programma(facciamo in questo caso vekkia,1.0.0)

quindi fai una cosa tipo :
Codice sorgente - presumibilmente VB.NET

  1. Dim versione as string
  2. versione = inet1.openurl("www.sito.it/versione.txt")
  3. if versione > [b]app.version[/b] then
  4. SCARICA()
  5. else
  6. MsgBox "Non ci sono nuove versioni"
  7. end if



Non è molto difficile,la parte che ti ho grassettato permette di sapere la versione dell'applicazione che si setta il project proprietes ;)

Per quanto riguarda la funzione scarica è semplice metti un semplice UrlFileToDownload ( API ) e scarichi exename & version ...

Se non hai capito qualcosa posta :k:

PM Quote
Avatar
Lupetto (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/01/2008

Segnala al moderatore
Postato alle 17:32
Mercoledì, 09/01/2008
Ho risolto facendo così:
in una label ho messo la versione corrente e in una txt non visibile ho messo che leggeva il file txt.
poi ho messo un progressbar che aumenta e una volta arrivato a 100 verifica se il testo contenuti nella text e nella label sono uguali dice versione aggiornata altrimenti dice ci sono aggiornamenti disponibili.
Sotto vi posto il codice che ho usato:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2.             Dim inet As Object
  3.             Dim b() As Byte
  4.    
  5.                  Const icByteArray = 1
  6.  
  7.                  Set inet = CreateObject("InetCtls.Inet")
  8.    
  9.                   b() = inet.OpenURL("http://www.sito.it/versione.txt", icByteArray)
  10.  
  11.                  Text1.Text = StrConv(b, vbUnicode)
  12.  
  13.                  Set inet = Nothing
  14. End Sub
  15.  
  16. Private Sub Timer1_Timer()
  17. If ProgBarXP1.Value = 100 Then
  18.   If Text1.Text = Form1.Label10.Caption Then
  19.   MsgBox "Versione Aggiornata"
  20.   Else
  21.   MsgBox "Nuovi aggiornamenti disponibili"
  22.   End If
  23. Timer1.Enabled = False
  24. Form2.Hide
  25. Unload Me
  26. Else
  27. ProgBarXP1.Value = ProgBarXP1.Value + 1
  28. End If
  29. End Sub


Ultima modifica effettuata da Lupetto il 09/01/2008 alle 17:32
PM Quote
Avatar
gvigliani (Normal User)
Pro


Messaggi: 106
Iscritto: 30/12/2006

Segnala al moderatore
Postato alle 19:53
Mercoledì, 09/01/2008
Ciao ragazzi, faccio notare che con la funzione utilizzata , il programma verrebbe caricato correttamente soltanto una prima volta. Questo perche' dopo il downloading, una copia del file verrebbe memorizzata nella directory temporanea di intenet explorer. Al successivo downloading, questo verrebbe intercettato e presumendo che si voglia scaricare lo stesso file , erroneamente, quello che verrebbe scaricato sarebbe solo quello memorizzato nella cache. Il problema è conosciuto e di non facilissima soluzione. La funzione da richiamare è la
FtpGetFile ma, da sola non serve a niente se non è correttamente supportata ed implementata. Altro problema è che, se il file da aggiornare è in uso, il sistema operativo non permettera' mai la sua cancellazione o sostituzione. Io, ho risolto il problema creando il programma di aggiornamento esterno al programma principale che una volta chiamato chiude il precedente richiamandolo. Una volta completato il download e la sostituzione, questo dovrebbe pensare alla sua chiusura ed al richiamo del programma principale.
Ci vuole piu' a dirlo che a farlo. Un'altra cosa di cui bisogna tener conto è che il file di aggiornamento deve avere una estensione diversa da .exe altrimenti qualsiasi sito lo rifiuterebbe. Quindi bisogna attrezzare il programma principale a creare un aggiornamento .zip ed un download che pensi anche allo scompattamento dello stesso. Se vuoi degli esempi non hai che da chiedere. Ti bastera' sostituire il file che vuoi trasferire e ricevere ed il gioco è fatto.
Saluti

PM Quote
Avatar
Lupetto (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/01/2008

Segnala al moderatore
Postato alle 23:24
Mercoledì, 09/01/2008
gvigliani, grazie per questo chiarimento.
non ho capito la cosa del file temporaneo che salva ie... io per scaricare uso questo

Codice sorgente - presumibilmente VB.NET

  1. Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long
  2. Private Sub Command1_Click()
  3.    Dim sDownload As String
  4.    sDownload = StrConv(Link, vbUnicode)
  5.    Call DoFileDownload(sDownload)
  6. End Sub



Poi ho capito il fatto che se è in eseguzione non lo fa cancellare e infatti farò in modo che una volta ke ha iniziato a scaricare il programma si chiuda e quindi l'utente avvia il nuovo setup (anche se verrebbe in modo grezzo) comunque vista la tua disponibilità un sorgente non farebbe male :)


Ultima modifica effettuata da Lupetto il 09/01/2008 alle 23:26
PM Quote
Avatar
BytE-FucK (Normal User)
Pro


Messaggi: 171
Iscritto: 09/10/2007

Segnala al moderatore
Postato alle 10:58
Giovedì, 10/01/2008
Ottimo lupetto...
Comunque il problema che memorizza il file,è risolvibile cancellandolo dalla directory temporanea...

Un altra cosa,credo che  non venga salvato nulla,perche inet mette il tutto nella variabile specificata,o la label :k:

PM Quote
Avatar
Jamester (Normal User)
Newbie


Messaggi: 1
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 10:15
Mercoledì, 08/07/2009
Testo quotato

Postato originariamente da Lupetto:

Ho risolto facendo così:
in una label ho messo la versione corrente e in una txt non visibile ho messo che leggeva il file txt.
poi ho messo un progressbar che aumenta e una volta arrivato a 100 verifica se il testo contenuti nella text e nella label sono uguali dice versione aggiornata altrimenti dice ci sono aggiornamenti disponibili.
Sotto vi posto il codice che ho usato:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2.             Dim inet As Object
  3.             Dim b() As Byte
  4.    
  5.                  Const icByteArray = 1
  6.  
  7.                  Set inet = CreateObject("InetCtls.Inet")
  8.    
  9.                   b() = inet.OpenURL("http://www.sito.it/versione.txt", icByteArray)
  10.  
  11.                  Text1.Text = StrConv(b, vbUnicode)
  12.  
  13.                  Set inet = Nothing
  14. End Sub
  15.  
  16. Private Sub Timer1_Timer()
  17. If ProgBarXP1.Value = 100 Then
  18.   If Text1.Text = Form1.Label10.Caption Then
  19.   MsgBox "Versione Aggiornata"
  20.   Else
  21.   MsgBox "Nuovi aggiornamenti disponibili"
  22.   End If
  23. Timer1.Enabled = False
  24. Form2.Hide
  25. Unload Me
  26. Else
  27. ProgBarXP1.Value = ProgBarXP1.Value + 1
  28. End If
  29. End Sub




Potresti spiegare meglio questo codice? Dov'e' che fa il controllo cn il testo del file versione.txt? io vedo un txt e una label nella stessa form. Ho provato cosi come lo hai scritto il codice cambiando il sito e il nome della form ma non succede assolutamente niente

PM Quote