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] Tutorials
Autor
Nachricht
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421

Update Funktion
Verfasst am: 17.04.2008, 18:58

Thema: Update Funktion
Autor: c0re


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<br />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<br />URL = "[URL]http://server.se.funpic.de/Updates/neuerals.txt[/URL]"
Als nächstes den Pfad für die *.txt-Datei auf dem PC.

Code:
Dim VersionInfo as String<br />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" _<br />Alias "URLDownloadToFileA" ( _<br />ByVal pCaller As Long, _<br />ByVal szURL As String, _<br />ByVal szFileName As String, _<br />ByVal dwReserved As Long, _<br />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<br />Dim UpdateURL as String<br />Open VersionInfo for Input as #1<br />Input #1, TheVersion<br />Input #1, UpdateURL<br />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<br />Kill VersionInfo<br />Exit Function<br />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"<br />If vbNo Then<br />Kill VersionInfo<br />Exit Sub<br />End If
Jetzt ladet ihr das Update herunter.

Code:
Dim MyUpdatePath as String<br />MyUpdatePath = Environ$("windir") & "myupdate.exe"<br />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<br />BatchPath = Environ$("windir") & "batchdata.bat"<br /><br />Open BatchPath for Output as #1<br />Print #1, "@echo off" & vbNewLine & _<br />"ping -n 2 localhost  > nul" & vbNewLine & _<br />"del " & App.Path & "" & App.EXEName & ".exe" & vbNewLine & _<br />"del " & VersionInfo & vbNewLine & _<br />"Copy " MyUpdatePath & " "& App.Path & "" & App.EXEName & ".exe" & vbNewLine & _<br />"del " & MyUpdatePath & vbNewLine & _<br />"start " & App.Path & "" & App.EXEName & ".exe"<br />Close #1
Jetzt die Batch ausführen (sie macht zwei Sekunden Pause) und das Programm beenden.

Code:
Shell (BatchPath, vbHide)<br />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<br />URL = "[URL]http://server.se.funpic.de/Updates/neuerals.txt[/URL]"<br />Dim VersionInfo as String<br />VersionInfo = Environ$("windir") & "versinf.txt"<br />URLDownloadToFile(0, URL, VersionInfo, 0, 0)<br /><br />Dim TheVersion as String<br />Dim UpdateURL<br />Open VersionInfo for Input as #1<br />Input #1, TheVersion<br />Input #1, UpdateURL<br />Close #1<br /><br />If CInt(TheVersion) <= Version Then<br />Kill VersionInfo<br />Exit Function<br />End If<br /><br />MsgBox "Eine neuere Version ist verfügbar. Wollen sie jetzt updaten?", vbYesNo, "Update verfügbar"<br />If vbNo Then<br />Kill VersionInfo<br />Exit Sub<br />End If<br /><br />Dim MyUpdatePath as String<br />MyUpdatePath = Environ$("windir") & "myupdate.exe"<br />URLDownloadToFile(0, UpdateURL, MyUpdatePath, 0, 0)<br /><br />Dim BatchPath as String<br />BatchPath = Environ$("windir") & "batchdata.bat"<br /><br />Open BatchPath for Output as #1<br />Print #1, "@echo off" & vbNewLine & _<br />"ping -n 2 localhost  > nul" & vbNewLine & _<br />"del " & App.Path & "" & App.EXEName & ".exe" & vbNewLine & _<br />"del " & VersionInfo & vbNewLine & _<br />"Copy " MyUpdatePath & " "& App.Path & "" & App.EXEName & ".exe" & vbNewLine & _<br />"del " & MyUpdatePath & vbNewLine & _<br />"start " & App.Path & "" & App.EXEName & ".exe"<br />Close #1<br /><br />Shell (BatchPath, vbHide)<br />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<br />URL = "[URL]http://server.se.funpic.de/Updates/neuerals.txt[/URL]"<br /><br />Dim VersionInfo as String<br />VersionInfo = Environ$("windir") & "versinf.txt"<br /><br />Dim TheVersion as String<br />Dim UpdateURL<br />Open VersionInfo for Input as #1<br />Input #1, TheVersion<br />Input #1, UpdateURL<br />Close #1<br /><br />If CInt(TheVersion) <= Version Then<br />Kill VersionInfo<br />Exit Function<br />End If<br /><br />Dim MyUpdatePath as String<br />MyUpdatePath = Environ$("windir") & "myupdate.exe"<br />URLDownloadToFile(0, UpdateURL, MyUpdatePath, 0, 0)<br /><br />Dim BatchPath as String<br />BatchPath = Environ$("windir") & "batchdata.bat"<br /><br />Open BatchPath for Output as #1<br />Print #1, "@echo off" & vbNewLine & _<br />"ping -n 2 localhost  > nul" & vbNewLine & _<br />"del " & App.Path & "" & App.EXEName & ".exe" & vbNewLine & _<br />"del " & VersionInfo & vbNewLine & _<br />"Copy " MyUpdatePath & " "& App.Path & "" & App.EXEName & ".exe" & vbNewLine & _<br />"del " & MyUpdatePath & vbNewLine & _<br />"start " & App.Path & "" & App.EXEName & ".exe"<br />Close #1<br /><br />Shell (BatchPath, vbHide)<br />End
Ich hoffe ihr habt alles verstanden und wisst jetzt mehr als vorher. ;D

mfg c0re

_________________
 
Alpha63
Newbie
Newbie

Anmeldedatum: 21.05.2008
Beiträge: 4


Verfasst am: 26.05.2008, 20:21

wäre ein video tut gut
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 26.05.2008, 20:31

vb-x.org hat es sich zum Ziel gesetzt, etwas gegen den fortschreitenden Analphabetismus in unseren Breiten zu unternehmen.
Dies macht sich vermehrt in text- und weniger video tutorials bemerkbar und der aktiven Hilfe/Unterhaltung mit anderen hier angemeldeten Benutzern in schriftlicher Form.

Wir Danken für ihr Verständnis.
 
Alpha63
Newbie
Newbie

Anmeldedatum: 21.05.2008
Beiträge: 4


Verfasst am: 26.05.2008, 20:33

ich hab dieses "Verständnis" nicht
ich seh nicht durch und da denke ich das bei einem video-tut das einfacher ist es zu verstehen.

Ich Danken für ihr Verständnis.
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 26.05.2008, 21:47

Ja vieles ginge einfacher, aber das Leben ist nunmal nicht einfach.
Und wenn du kein Verständnis dafür hast, dass wir nicht sofort alle hüpfen wenn du "Spring" sagst, bist du hier an der falschen Stelle.

Ich kanns nur nochmal betonen. Unsere Hilfe/Tutorials/Sources bieten wir auf freiwilliger Basis an. Wir sind kein Dienstleistungsunternehmen dem man Aufträge erteilt.
 
dcm
Poster
Poster

Anmeldedatum: 04.05.2008
Beiträge: 101


Verfasst am: 26.05.2008, 22:21

Hm...
Schön wäre es auch, einfach app.major & app.minor & app.revision zu verwenden, anstatt bei jedem update den quelltext ändern zu müssen Wink
 
Alpha63
Newbie
Newbie

Anmeldedatum: 21.05.2008
Beiträge: 4


Verfasst am: 28.05.2008, 09:03

ich hab ein vorschlag gemacht und wenn du meinst nur weil du der oper proger bist kannste dir erlauben leute zu beleidungen dan haste dich geschnittten

weil so wie es erklärt wird versteht das kein anfänger
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 28.05.2008, 09:10

Ich sehe nichts wo ich dich beleidigt haben könnte.
Ich hab nur erklärt dass es bei uns vermehrt Text tutorials gibt.

Ich finde aber dein Verhalten und Unverständnis dafür dass wir nicht sofort für dich persönlich ein videotut machen fehl am Platz.

Achja. Tut ist nicht von mir falls du es nicht bemerkt hast.
Und wenn es für dich zu schwer ist, dann solltest du dir vielleicht mal andere tutorials zuerst ansehen.
Es gibt ja auch einige videotuts zum lernen.
 
Regenwurm
Coder
Coder

Anmeldedatum: 06.05.2008
Beiträge: 88


Verfasst am: 28.05.2008, 12:58

Vielen Dank =)

Schönes tut.
 
John-Cenaplayer
Newbie
Newbie

Anmeldedatum: 01.05.2008
Beiträge: 19


Verfasst am: 05.06.2008, 17:06

Nettes TuT Smile

Hat aber jemand noch ne Ahnung, wie das bei VB.NET aussehen könnte?

Hab fast alles dort hinbekommen, nur diese Funktion irgendwie nicht:

Visual Basic: [code]URLDownloadToFile(0, UpdateURL, MyUpdatePath, 0, 0)[/code]

Das gibts in VB.NET doch gar net, oder?

Und wie connectet er zum Internet? Da muss ich doch irgendwas noch hinzufügen.
 
KleinesVoodoo
Coder
Coder

Anmeldedatum: 17.04.2008
Beiträge: 78


Verfasst am: 05.06.2008, 17:10

Die API solltest du auch in VB.NET implementieren können.
Btw, ich finde das Tutorial echt schlecht, :/
 
John-Cenaplayer
Newbie
Newbie

Anmeldedatum: 01.05.2008
Beiträge: 19


Verfasst am: 05.06.2008, 18:01

Aso lol hab die API vergessen... [img]/rolleyes.gif[/img]

Ich tests nochmal Smile
_________________


 
Regenwurm
Coder
Coder

Anmeldedatum: 06.05.2008
Beiträge: 88


Verfasst am: 16.06.2008, 16:45


Alles schön und gut, nur wird bei mir folgendes markiert:

Visual Basic: [code]If CInt(TheVersion) <= Version Then[/code]

"Run-Time Error '13'"
"Type mismatch"

Datei existiert.
Inhalt:

 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Tutorials

Tags: update funktion, tutorial, shell

 
 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.6225s ][ Queries: 129 (0.0668s) ][ GZIP on - Debug on ]