In diesem Tutorial erkläre ich euch, wie ihr eine einfache Update Funktion in euer Programm einbaut.
Die Funktionsweise
Das Programm lädt eine *.txt Datei herunter, in der die neueste Version und deren URL steht. Es wird geprüft, ob die Version auf dem Server ist, als die, die gerade ausgeführt wird. Wenn ja, wird die neue Version heruntergeladen. Das gerade laufende Programm wird beendet und durch das Neue ersetzt.
Die *.txt-Datei
In der ersten Zeile der Datei muss die Version stehen. Zum Beispiel 1.
In der zweiten Zeile muss die URL zur neusten Version stehen.
Die Update Funktion
Im Form Load des Programms stellt ihr die aktuelle Version ein. In meinem Beispiel ist es die Version 1.
Code:
Dim Version as Integer
Version = 1
Der Code der jetzt folgt wird am besten in einem Modul als Public Function eingefügt.
Als erstes legt ihr die URL für die *.txt-Datei mit der Versionsinfo fest.
Code:
Dim URL as String
URL = "http://server.se.funpic.de/Updates/neuerals.txt"
Als nächstes den Pfad für die *.txt-Datei auf dem PC.
Code:
Dim VersionInfo as String
VersionInfo = Environ$("windir") & "\versinf.txt"
Jetzt ladet ihr die *.txt-Datei herunter.
Code:
URLDownloadToFile(0, URL, VersionInfo, 0, 0)
Ihr benötigt dazu noch folgende API:
Code:
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Jetzt lest ihr die Version aus Zeile 1 und die URL aus Zeile 2 aus.
Code:
Dim TheVersion as String
Dim UpdateURL as String
Open VersionInfo for Input as #1
Input #1, TheVersion
Input #1, UpdateURL
Close #1
Nun testet ihr, ob die neuste Version älter oder genau so alt ist wie eure.
Falls ja, wird die Funktion beendet und die *.txt wird gelöscht.
falls nein läuft sie weiter und das Update beginnt.
Code:
If CInt(TheVersion) <= Version Then
Kill VersionInfo
Exit Function
End If
Jetzt fragt ihr den Benutzer über MsgBox ob er updaten will.
Falls ja, läuft die Sub weiter. Falls nein, wird sie beendet und die *.txt gelöscht.
Code:
MsgBox "Eine neuere Version ist verfügbar. Wollen sie jetzt updaten?", vbYesNo, "Update verfügbar"
If vbNo Then
Kill VersionInfo
Exit Sub
End If
Jetzt ladet ihr das Update herunter.
Code:
Dim MyUpdatePath as String
MyUpdatePath = Environ$("windir") & "\myupdate.exe"
URLDownloadToFile(0, UpdateURL, MyUpdatePath, 0, 0)
Nun erstellt ihr eine Batch-Datei die euer Programm mit dem Update ersetzt.
Wir benutzen eine Batch-Datei, weil sie den Vorteil hat, dass sie sich selbst löschen kann.
Das kommt daher, dass sie nur Skripte an die Konsole übergibt.
Code:
Dim BatchPath as String
BatchPath = Environ$("windir") & "\batchdata.bat"