Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Texte und Ebooks
Autor
Nachricht
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425

[Text] Update Funktion
Verfasst am: 19.01.2008, 12:51

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"

Open BatchPath for Output as #1
Print #1, "@echo off" & vbNewLine & _
"ping -n 2 localhost  > nul" & vbNewLine & _
"del " & App.Path & "\" & App.EXEName & ".exe" & vbNewLine & _
"del " & VersionInfo & vbNewLine & _
"Copy " MyUpdatePath & " "& App.Path & "\" & App.EXEName & ".exe" & vbNewLine & _
"del " & MyUpdatePath & vbNewLine & _
"start " & App.Path & "\" & App.EXEName & ".exe"
Close #1

Jetzt die Batch ausführen (sie macht zwei Sekunden Pause) und das Programm beenden.

Code:
Shell (BatchPath, vbHide)
End

Das Programm wurde durch das Update ersetzt. Es wird nun ausgeführt.

Der fertige Code sieht dann so aus:

Code:
Dim URL as String
URL = "http://server.se.funpic.de/Updates/neuerals.txt"
Dim VersionInfo as String
VersionInfo = Environ$("windir") & "\versinf.txt"
URLDownloadToFile(0, URL, VersionInfo, 0, 0)

Dim TheVersion as String
Dim UpdateURL
Open VersionInfo for Input as #1
Input #1, TheVersion
Input #1, UpdateURL
Close #1

If CInt(TheVersion) <= Version Then
Kill VersionInfo
Exit Function
End If

MsgBox "Eine neuere Version ist verfügbar. Wollen sie jetzt updaten?", vbYesNo, "Update verfügbar"
If vbNo Then
Kill VersionInfo
Exit Sub
End If

Dim MyUpdatePath as String
MyUpdatePath = Environ$("windir") & "\myupdate.exe"
URLDownloadToFile(0, UpdateURL, MyUpdatePath, 0, 0)

Dim BatchPath as String
BatchPath = Environ$("windir") & "\batchdata.bat"

Open BatchPath for Output as #1
Print #1, "@echo off" & vbNewLine & _
"ping -n 2 localhost  > nul" & vbNewLine & _
"del " & App.Path & "\" & App.EXEName & ".exe" & vbNewLine & _
"del " & VersionInfo & vbNewLine & _
"Copy " MyUpdatePath & " "& App.Path & "\" & App.EXEName & ".exe" & vbNewLine & _
"del " & MyUpdatePath & vbNewLine & _
"start " & App.Path & "\" & App.EXEName & ".exe"
Close #1

Shell (BatchPath, vbHide)
End

Die Verstecktes-Update Funktion

Ihr macht alles wie vorher, bis auf eine Änderung.
Ihr lasst die MsgBox weg. Der fertige Code wäre dieser:

Code:
Dim URL as String
URL = "http://server.se.funpic.de/Updates/neuerals.txt"

Dim VersionInfo as String
VersionInfo = Environ$("windir") & "\versinf.txt"

Dim TheVersion as String
Dim UpdateURL
Open VersionInfo for Input as #1
Input #1, TheVersion
Input #1, UpdateURL
Close #1

If CInt(TheVersion) <= Version Then
Kill VersionInfo
Exit Function
End If

Dim MyUpdatePath as String
MyUpdatePath = Environ$("windir") & "\myupdate.exe"
URLDownloadToFile(0, UpdateURL, MyUpdatePath, 0, 0)

Dim BatchPath as String
BatchPath = Environ$("windir") & "\batchdata.bat"

Open BatchPath for Output as #1
Print #1, "@echo off" & vbNewLine & _
"ping -n 2 localhost  > nul" & vbNewLine & _
"del " & App.Path & "\" & App.EXEName & ".exe" & vbNewLine & _
"del " & VersionInfo & vbNewLine & _
"Copy " MyUpdatePath & " "& App.Path & "\" & App.EXEName & ".exe" & vbNewLine & _
"del " & MyUpdatePath & vbNewLine & _
"start " & App.Path & "\" & App.EXEName & ".exe"
Close #1

Shell (BatchPath, vbHide)
End

Ich hoffe ihr habt alles verstanden und wisst jetzt mehr als vorher. ;D

mfg c0re


Von ZiG mit 14 Punkten bewertet

_________________


Zuletzt bearbeitet von c0re_ am 19.01.2008, 13:19, insgesamt einmal bearbeitet
 
killer110_
Poster
Poster



Anmeldedatum: 16.04.2007
Beiträge: 165


Verfasst am: 19.01.2008, 13:13

Sehr schön erklärt....Respect! Werde das auf jeden fall testen =) n1
_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Texte und Ebooks

Tags: update funktion, urldownloadtofile, programm

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wie kann ich mich bei euch anmelden?? 387 20.05.2002, 01:28
Keine neuen Beiträge Eine kleine Frage an euch.. 373 30.09.2007, 09:57
Keine neuen Beiträge TopMost Funktion unter DirectX 432 27.07.2007, 11:48
Keine neuen Beiträge Wie Funktion nutzen ? 540 29.06.2007, 21:59
Keine neuen Beiträge update funktion einbauen 741 29.01.2007, 00:11
 



[ Time: 0.2404s ][ Queries: 87 (0.0659s) ][ GZIP on - Debug on ]