L'envie d'écrire un peut me viens pas que sur mon blog mais aussi sur cadernis !
Aujourd’hui je vais vous présenter un code très basique Celui d'un Updater assez simple mais vraiment améliorable !
Il et améliorable sur :
-Ne pas utiliser une DLL pour dezip les fichiers ( Amuser vous avec les offset )
Loading Image
-Au lieu de télécharger et dezip un fichier à chaque nouvelle maj faire une comparaisons Client/Server des fichiers et juste télécharger ce qu'il faut ( Avec les date de modifications :p ) Plus besoin de librairie pour dezip ni de fichier versions.txt cette méthode reste la meilleur
Voila le lien du ZIP: Contenant mon code source:
Updater 1.0
Étudions maintenant mon code source :
Imports System.Net 'Pour les webclient
Imports ICSharpCode.SharpZipLib.Zip 'Pour le Dezip
Imports ICSharpCode.SharpZipLib 'Pour le dézip
Imports System.IO 'Pour le fichier versions.txt
Imports System.Threading 'Pour les pauses, et le multithreading
'Une Fonction de pause par ToOns Mon code utilise beaucoup de pause pour donner un résultat propre a l'utilisateur
Friend Sub pause(ByVal ms_to_wait As Long)
Dim endwait As Double
endwait = Environment.TickCount + ms_to_wait
While Environment.TickCount < endwait
System.Threading.Thread.Sleep(1)
Application.DoEvents()
End While
End Sub
'Les délégués pour l'inter-thread
Delegate Sub _Progressebar(ByVal Progressebar As ProgressBar, ByVal Value As Integer)
Dim deleguerprograssebar As New _Progressebar(AddressOf Set_Progressebar)
Sub Set_Progressebar(ByVal progressebar As ProgressBar, ByVal value As Integer)
progressebar.Value = value
End Sub
Delegate Sub _Label(ByVal Label As ComponentFactory.Krypton.Toolkit.KryptonLabel, ByVal x As String)
Dim deleguerlabel As New _Label(AddressOf Set_Label)
Sub Set_Label(ByVal Label As ComponentFactory.Krypton.Toolkit.KryptonLabel, ByVal x As String)
Label.Text = x
End Sub
End Class
'Parser les byte reçu pour faire une progresse bar
Private Sub client_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
Dim percentage As Double = bytesIn / totalBytes * 100
Dim monflux As Integer = Int32.Parse(Math.Truncate(percentage).ToString())
Invoke(deleguerprograssebar, PB_DLL, monflux)
Invoke(deleguerlabel, LBL_STATUS, "Téléchargement en cours: " & PB_DLL.Value & "%")
End Sub
Le reste du code reste basique je suis ouvert à vos questions !