In diesem Tutorial möchte ich euch zeigen wie man einen recht guten Updater für eure Anwendungen Programmiert.
Wir brauchen:
1x Form
1x Label
1x ProgressBar
1xFTP Server (square7,ohost,bplaced,kilu. etc...
(Wichtig: Gestaltet die Form am besten klein, da wir den updater in eure Anwendungen einbinden müssen)
So
Diesen Code fügt ihr in die Form ein, aber ich bitte euch nicht einfach Copy&Paste zu betreiben.
Versucht den Code zu verstehen
Code:
Imports System.Net
Public Class Form1
Private WithEvents httpclient As WebClient
Dim pfad As String = Nothing
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Hide()
ShowDialog:
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName = Nothing Then
GoTo ShowDialog
End If
pfad = SaveFileDialog1.FileName
Try
httpclient = New WebClient
Dim URL As String = "" 'Hier kommt der Link zur Datei die immer geupdated werden soll
Me.Show()
Application.DoEvents()
httpclient.DownloadFileAsync(New Uri(url), pfad)
Application.DoEvents()
Catch ex As Exception
MsgBox("Es ist folgender Fehler aufgetreten:" & vbNewLine & ex.ToString, MsgBoxStyle.Critical, "Es ist ein Fehler aufgetreten")
End Try
End Sub
Private Sub httpclient_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles httpclient.DownloadFileCompleted
MsgBox("") 'Die nachricht die angezeigt werden soll,wenn das update fertig ist
Process.Start(pfad)
Me.Close()
End Sub
Private Sub httpclient_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles httpclient.DownloadProgressChanged
Me.ProgressBar1.Value = e.ProgressPercentage
Dim totalbytes As Double = e.TotalBytesToReceive
Dim bytes As Double = e.BytesReceived
Me.Label1.Text = bytes & " KB von " & totalbytes & "KB"
End Sub
End Class
Nun brauchen wir noch den Code für eure Anwendung damit der Updater überhaupt sinn hat.
Dieser code kommt bei eurer Anwendung in die Form die als erstes gestartet wird(man kann es auch variabel machen, aber ich finde es so besser xP)
wie oben bereits gesagt kein reines copy&paste machen, sondern code verstehen
Code:
Dim VersionChecker As New System.Net.WebClient ' Erstellt eine neue Instanz von Webclient
Dim ServerVersion As String = VersionChecker.DownloadString("euerftp\version.ini") 'Hier wird der Inhalt der Datei runtergeladen (zB. 1.1)
Dim MeineVersion As String = Me.Label_v.Text ' Hier wird der Variable MeineVersion der Text von dem Label zugewiesen zB. 1.0
If Not ServerVersion = MeineVersion Then
MsgBox("Es ist eine Neuere Version von .. verfügbar,es wir nun Automatisch geupdatet", MsgBoxStyle.Information) 'text der kommt falls neue version vorhanden
Shell(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\updater.exe")
End
Und ein Label in der die Aktuelle Version steht,also zb 1.0 das is das besagte Label_v.text
Wie ihr dem Code eventuell bereits entlesen habt läuft das ganze über eine .ini die auf eurem ftp ist.
Falls in der ini 1.1 steht wird der updater automatisch updaten.
Falls in der ini 1.0 steht passiert nichts,also müsst ihr immer die V_Nummer in eurer Anwendung anpassen..
Okay, wir haben es fast geschafft, jetzt müssen wir nurnoch den updater in eure Anwendung einbinden
Das machen wir einfach so
Oben im Tooltip
Projekt/.... Eigentschaften/Ressourcen/Ressource Hinzufügen/Vorhandene Datei hinzufügen/updater auswählen.
Okay nun ist euer Updater startklar.
Ich hoffe ich konnte euch Helfen
Mfg:
-DoctorPixl







