giUpdate - Una DLL per l'aggiornamento automatico di un programma
giUpdater è una DLL sviluppata in VB.NET (utilizza il Microsoft framework 2.0) che permette di controllare la disponibilità di un eventuale aggiornamento per il nostro software. La libreria consente anche di scaricare la nuova versione.
Il funzionamento di base della dll è molto semplice e può essere riassunto in 4 passi:
-
lettura di uno script remoto;
-
elaborazione dello script;
-
eventuale segnalazione della disponibilità della nuova versione;
-
eventuale download della nuova versione.
Per l'utilizzo e l'integrazione di giUpdater con il tuo programma puoi prendere spunto dal seguente progetto (VB.NET) di esempio. L'esempio e la dll possono essere scaricati cliccando sulla seguente icona:
Per la descrizione di metodi, eventi e proprietà della libreria clicca sul seguente link:Documentazione tecnica
Lo script remoto (PHP)
Lo script remoto viene elaborato da giUpdater che eseguirà determinate azioni; per capire meglio vediamo un esempio:
<? //NON MODIFICARE ////////////////////////////////////////////////////////// header('Content-type: text/plain'); ////////////////////////////////////////////////////////// ?> <? $last_version= "1.1.0.1"; //es: 1.0.0.0 $script_version="1.0.0.0"; //versione di questo file $length_byte=1024; //dimensione in byte del pacchetto di installazione $priority=3; //priorità dell'aggiornamento $dir_setup= "http://localhost/test_updater/"; $tmp=str_replace(".","_",$last_version); $filename_setup=$dir_setup . "NOME_SOFTWARE" . $tmp . ".exe"; echo "La tua versione:" . $_GET['localversion'] . "\n"; echo "[START]\n"; //inizio script echo "script_version=" . $script_version ."\n"; //ultima versione disponibile echo "last_version=" . $last_version ."\n"; //ultima versione disponibile echo "length_byte=" . $length_byte ."\n"; //ultima versione disponibile echo "priority=" . $priority ."\n"; //priorità dell'aggiornamento echo "dir_setup=" . $dir_setup ."\n"; //cartella in cui risiede il nuovo pacchetto di installazione echo "filename_setup=" . $filename_setup ."\n"; //nome del file del pacchetto di installazione echo "[END]\n"; //fine script ?> |
Lo script vero e proprio è compreso tra le stringhe [START] e [END]; prima e/o dopo questi tag possono essere aggiunte altre istruzioni php (per esempio può essere richiamata una funzione per la creazione di statistiche e quindi la stima di utilizzo del nostro software).
Personalizzazione dello script
La personalizzazione dello script è possibile modificando le seguenti righe:
<? $last_version= "1.1.0.1"; //es: 1.0.0.0 identifica l'ultima versione disponibile del software da aggiornare. $script_version="1.0.0.0"; //versione di questo file $length_byte=1024; //dimensione in byte del pacchetto di installazione $priority=3; //priorità dell'aggiornamento $dir_setup= "http://localhost/test_updater/"; //identifica la directory che contiene la nuova versione. $filename_setup=$dir_setup . "NOME_SOFTWARE" . $tmp . ".exe"; ?> |
La variabile $filename conterrà quindi il percorso completo del pacchetto di aggiornamento che si desidera scaricare. Nell'esempio, $filename=”http://localhost/test_updater/NOME_SOFTWARE1_1_0_1.exe”
Test della libreria
Ecco un semplice esempio di come utilizzare la libreria:
- Creare un nuovo progetto;
- Aggiungere il riferimento alla dll;
- Inserire un tasto (settare la proprietà name a Button1 ) e una progress bar (settare la proprietà name a ProgressBar1);
- Inserire il seguente codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim nomeFileLocale As String = Application.StartupPath Dim giUP As New giUpdater.Updater("http://www.myvirtualglab.org/serpanalyzer/servizio/update/update.php", My.Application.Info.Version) AddHandler giUP.SendMessage, AddressOf SendMessageHandler AddHandler giUP.Update, AddressOf AggiornaHandler AddHandler giUP.UpdateProgress, AddressOf Progress AddHandler giUP.DownloadCompleted, AddressOf DownloadCompleted giUP.run() Dim i As Integer For i = 0 To giUP.ErrorList.Count - 1 'MsgBox(giUP.ErrorList(i).Message) Next MsgBox("Last version=" & giUP.LastVersion.ToString & vbCrLf & "Local version=" & My.Application.Info.Version.ToString & vbCrLf & "Devo aggiornare= " & giUP.IsTimeToUpdate & vbCrLf & "Priorità= " & giUP.Priority) MsgBox("Il file verrà salvato in " & nomeFileLocale) giUP.DownloadNewVersion(nomeFileLocale) 'MsgBox("Build=" & My.Application.Info.Version.Build) 'MsgBox("Revision=" & My.Application.Info.Version.Revision) 'MsgBox("Script version=" & giUP.scriptVersion.ToString) 'MsgBox("Dimensione setup=" & giUP.DimensionSetup.ToString) 'MsgBox("Dll version=" & giUP.VersionDLL.ToString) Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub SendMessageHandler(ByVal sender As System.Object, ByVal e As SendMessageEventArgs) 'MessageBox.Show(e.Message) End Sub Private Sub AggiornaHandler(ByVal sender As System.Object, ByVal e As UpdateEventArgs) MessageBox.Show("Devo aggiornare;" & e.Priority) End Sub Private Sub Progress(ByVal sender As System.Object, ByVal e As DownloadProgressChangedEventArgs) Me.Text = e.ProgressPercentage & "%" End Sub Private Sub DownloadCompleted(ByVal sender As System.Object) Me.Text = "Download completato" MessageBox.Show("Download completato!") End Sub |
