Updatefunktion mit AutoIt:
Spoiler anzeigen
Ein gut erstelltes Programm braucht natürlich auch Updates, und hier wird erklärt wie.
Einmal
mit Appserv und einmal mit FileZilla. Der Unterschied zu FileZilla ist,
dass FileZilla ein Webspaceserver ist und immer online ist. Appserv
jedoch ist so wie PC zu PC, d. h. nur wenn der PC online ist und der
andere User mit dem Computer (mit Hamachi) in Verbindung stehen müsst,
kann der User das Update herunterladen.
Inhaltsverzeichnis:
1. Downloads
2. Installationen
2.1 Appserv
2.2 FileZilla
3. Der Script-Code
4. Updater via localhost (Appserv)
5. Updater via FTP-Client (FileZilla)
6. Update im neuen Ordner patchen
7. Schlusswort
Installationen:
Appserv:
Spoiler anzeigen
Folgende Einstellungen übernehmen:
InstallationsOrdner = C:\Appserv
Apache HTTP Server = Häckchen
MySQL Database = Häckchen
PHP Hypertext Preprocessor = Häckchen
phpMyAdmin = Häckchen
Server Name = root
Email Adresse = irgendeine
Passwort = individuelles Passwort
Und am Ende bei Start Apache und Start MySQL auch Häckchen machen!
FileZilla:
Spoiler anzeigen
Ganz normal installieren, es gibt keine wichtigen Einstellungen.
Der Script-Code:
Spoiler anzeigen
Es werden immer Schritt für Schritt Teile des Scriptes erklärt und am Ende nocheinmal das Gesamte.
Der erste Teil:
FileDelete(@TempDir & "\update.txt")
InetGet("siehe 4. und 5.",@TempDir & "\update.txt", 1, 0)
$file = FileOpen(@TempDir & "\update.txt", 0)
$ver_server = FileReadLine($file, 1)
$ver_pc = IniRead("Settings.ini", "Info", "Version","")
Zunächst
wird die update.txt im Ordner gelöscht, indem sich das Programm
befindet, wenn sich diese existiert. Danach downloadet das Programm mit
dem Befehl InetGet die neue Update.txt. In dieser .txt steht die
Versionnummer, zum Beispiel 1.0.0.2. Der Befehl, dass die Update.txt
geöffnet wird, wird mit der Variable $file gekürzt. Ebenfalls auch der
Befehl, das diese beiden verglichen werden. Jetzt wird überprüft ob die
Versionnummer, mit der Versionnummer der Settings.ini übereinstimmt,
wenn diese übereinstimmen oder nicht übereinstimmen, kommt im nächsten
Scriptteil. Falls die Settings.ini nicht existiert wird ein Update
erfolgen, weil dort keine Versionnummer angegeben ist und 0 = 1.0.0.2
ist nicht identisch.
If $ver_server = $ver_pc or $ver_server = "" Then
FileClose($file)
FileDelete(@TempDir & "\update.txt")
msgbox(0, "Keine neue Version","Es gibt kein Update!")
Dort
steht einfach, wenn die identisch sind, dann soll die Update.txt
geschlossen werden, danach gelöscht werden und ein MessangeBox soll
erscheinen mit dem Titel Keine neue Version und dem etxt Es gibt kein
Update.
$msgbox = MsgBox(36, "Update!", "Es ist ein neues Update verfügbar! Downloaden?")
If $msgbox = 6 Then
Tooltip("Update wird runtergeladen... bitte warten....")
InetGet("siehe 4. und 5.",@scriptDir&"\" & "DATEINAME", 1, 0)
IniWrite("settings.ini", "Info", "Version", $ver_server)
FileClose($file)
FileDelete(@ScriptDir & "update.txt")
Tooltip("")
msgbox(0,"Update", "Das Programm wurde heruntergeladen! Danke fürs downloaden!")
EndIf
EndIF
Alles anzeigen
Wenn
diese aber nicht übereinstimmen dann soll eine Messangebox uns darauf
hinweisen, das ein Update verfügbar ist. Man wird gefragt, ob man
Downloaden möchte, klickt man nein, passiert nichts, klickt man ja dann
wird die neue Datei runtergeladen. und die Settings.ini mit der neuen
Versionnummer wird erstellt. Dann wird die Update.txt geschlossen und
gelöscht. Jetzt erscheint nur noch eine Messangebox, dass das Programm
heruntergeladen worden ist.
Und hier ist nochmal der Gesamtcode:
FileDelete(@TempDir & "\update.txt")
InetGet("Siehe 4. und 5.",@TempDir & "\update.txt", 1, 0)
$file = FileOpen(@TempDir & "\update.txt", 0)
$ver_server = FileReadLine($file, 1)
$ver_pc = IniRead("Settings.ini", "Info", "Version","")
If $ver_server = $ver_pc or $ver_server = "" Then
FileClose($file)
FileDelete(@TempDir & "\update.txt")
msgbox(0, "Keine neue Version","Es gibt kein Update!")
Else
$msgbox = MsgBox(36, "Update!", "Es ist ein neues Update verfügbar! Es
wird die neuere Version gedownloadet." & @CRLF & "Sie können die
alte Version löschen! Downloaden?")
If $msgbox = 6 Then
Tooltip("Update wird runtergeladen... bitte warten....")
InetGet("siehe 4. und 5.",@scriptDir&"\" & "DATEINAME", 1, 0)
IniWrite("settings.ini", "Info", "Version", $ver_server)
FileClose($file)
FileDelete(@ScriptDir & "update.txt")
Tooltip("")
msgbox(0,"Update", "Das Programm wurde heruntergeladen! Danke fürs downloaden!")
EndIf
EndIf
Alles anzeigen
Updater via localhost:
Spoiler anzeigen
Zunächst
einmal suchen wir unseren Ordner Appserv in C:\ und öffnen den Ordner.
Öffnen dann den Ordner www. Dort sieht man 3 Ordner und 2 .php Dateien.
Man kann alles löschen außer den Ordner Appserv und cgi-bin. Erstellt
nun in den Ordner www ein .txt Dokument mit den Namen Update und
schreibt dort die versionnummer an: 1.0.0.2 Mehr nicht!
Nun
kopiert euer Programm in den www Ordner. Falls ihr dann eine neue
Version eures Programms habt, ändert ihr in der Update.txt die Nummer in
1.0.0.3 und so weiter. Und ersetzt das eurer Programm mit dem neuen.
Jetzt nurnoch folgende Zeilen verändern:
in:
und:
in:
Jetzt
können aber nur du darauf zugreifen, den 127.0.0.1 = localhost = mein
PC. Installiert Hamachi und änder
zu
Die User die Updaten wollen, müssen in
ein von dir erstelltes Hamachi-Netzwerk und du musst online sein, damit
die es downloaden können!
Updater via FTP-Client:
Spoiler anzeigen
Ihr
braucht einen Webspaceserver, dazu könnt ihr euch bei kilu.de anmelden,
es ist völlig kostenlos. Jedoch solltet ihr keine richige Adresse und
etc angeben. Die Emailadresse muss richtig sein, weil dort das Passwort
gesendet wird.
Wenn ihr euch eingeloggt habt befolgt die 4. Schritte:
[Blockierte Grafik: http://img230.imageshack.us/img230/6743/tut1l.png]
[Blockierte Grafik: http://img541.imageshack.us/img541/9871/tut2v.png]
[Blockierte Grafik: http://img338.imageshack.us/img338/4025/tut3v.png]
[Blockierte Grafik: http://img835.imageshack.us/img835/439/tut4.png]
Jetzt startet FileZilla und gibt euere Daten dort ein, Port könnt ihr freilassen:
[Blockierte Grafik: http://img834.imageshack.us/img834/4537/tut5c.png]
Wenn
ihr verbunden seid, klickt auf den www Ordner und zieht Update.txt und
euer Programm einfach dort rein. Jetzt muss man nurnoch die Befehle
InetGet ändern:
in:
und:
in:
Hier noch mal ein Beispiel, wie es aussehen könnte:
Programm im neuen Ordner patchen:
Spoiler anzeigen
Um das Programm in einen neuen Ordner zu patchen, schauen wir uns folgende Zeilen einmal an:
If $msgbox = 6 Then
Tooltip("Update wird runtergeladen... bitte warten....")
InetGet("http://127.0.0.1/updatefunk.exe",@scriptDir& "\" & "updatefunk.exe", 1, 0)
IniWrite("settings.ini", "Info", "Version", $ver_server)
FileClose($file)
FileDelete(@ScriptDir & "update.txt")
Tooltip("")
msgbox(0,"Update", "Das Programm wurde heruntergeladen! Danke fürs downloaden!")
Jetzt schreiben wir einfach zwischen den Befehlen Tooltip und InetGet den Befehl DirCreate hin, so:
Jetzt müssen wir noch noch den Patchpfad bei InetGet ändern:
Schlusswort
Das
wars, falls ihr Fragen habt, stellt diese im Thread. Credits gehen
anKillerzwerg829 für den Script-Code für die Updatefunktion. Sonst ist
alles von mir!
Don't Copy or Paste