[How to] Updatefunktion mit AutoIt

  • 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:

    PHP
    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.

    PHP
    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.

    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:

    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:

    PHP
    InetGet("Was hier stehen wird, steht unten",@TempDir & "\update.txt", 1, 0)


    in:

    PHP
    InetGet("127.0.0.1/update.txt",@TempDir & "\update.txt", 1, 0)


    und:

    PHP
    InetGet("was hier steht wird, steht unten",@scriptDir&"\" & "DATEINAME", 1, 0)


    in:

    PHP
    InetGet("127.0.0.1/Programmname.exe",@scriptDir&"\" & "programmname.exe", 1, 0)

    Jetzt
    können aber nur du darauf zugreifen, den 127.0.0.1 = localhost = mein
    PC. Installiert Hamachi und änder

    PHP
    127.0.0.1

    zu

    PHP
    Deine 
    Hamachi Ip z.B. 5.32.23.231

    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:

    PHP
    InetGet("Was hier stehen wird, steht unten",@TempDir & "\update.txt", 1, 0)


    in:

    PHP
    InetGet("KILUADRESSE/update.txt",@TempDir & "\update.txt", 1, 0)


    und:

    PHP
    InetGet("was hier steht wird, steht unten",@scriptDir&"\" & "DATEINAME", 1, 0)


    in:

    PHP
    InetGet("KILUADRESSE/Programmname.exe",@scriptDir&"\" & "programmname.exe", 1, 0)

    Hier noch mal ein Beispiel, wie es aussehen könnte:


    PHP
    InetGet("quizthefreakbpx3.co.de/update.txt",@TempDir & "\update.txt", 1, 0)
    PHP
    InetGet("quizthefreakbpx3.co.de/updatefunk.exe",@scriptDir&"\" & "updatefunk.exe", 1, 0)

    Programm im neuen Ordner patchen:

    Spoiler anzeigen

    Um das Programm in einen neuen Ordner zu patchen, schauen wir uns folgende Zeilen einmal an:

    PHP
    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:

    PHP
    DirCreate(@ScriptDir & "neues update")


    Jetzt müssen wir noch noch den Patchpfad bei InetGet ändern:

    PHP
    InetGet("http://127.0.0.1/updatefunk.exe",@scriptDir & "neues update\updatefunk.exe", 1, 0)

    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

  • Der Unterschied zu FileZilla ist,
    dass FileZilla ein Webspaceserver


    Falsch, FTP, FTPS und SFTP Client mit grafischer Oberfläche, FileZilla ist OpenSource gibt es daher für Windows, Linux etc.

    Ps.: den Rest hab ich mir nicht mehr durchgelesen, hoffe aber dass du da bessere Infos bereistellst. Wenn jemand sehen möchte wie man in einer AutoIt-Exe eine Auto-Update-Funktion einbaut kann sich meinen MP3-Player (Link siehe Signatur) anschauen. Ich glaube Schnuffel hat einen universellen Updater in seiner Signatur.

    mfg autoBert

  • du solltest dich an die Fakten halten, das ist FileZilla:


    Das ist auch FileZilla:
    [Blockierte Grafik: http://www.opensource-downloads.de/layout/screen/…ZillaServer.gif]

    @thefreakbpx3: In deinem Beispiel holst du dir Webspace von einem Freehoster, das hat gar nicht mits FileZilla zu tun. Da dieser jedoch FTP-Zugriff erlaubt, kannst du mit einem FTP-Client wie FileZilla Dateien hochladen.
    Übrigens ist auch AppServ als Apache/MySQL/PHP-Paket völlig überdimensionert. z.B. HFS reicht da völlig ;)

  • ich sehe das thema erst jetzt, sonst hätte ich vorher was gesagt ;)

    das Tutorial, bzw. der teil über kilu.de
    verstößt gegen die AGB von kilu.de in vielen Punkten

    1. kilu.de ist ein Hoster für Webseiten, das Hochladen von Programmen (*.exe) ect. ist verboten, nur sachen für eine Webseite dürfen drauf
    2. falsche Angaben bei der Registration
    3. keine Werbeaufrufe durch deine art der Verwendung (auch das führt früher oder später zur löschung)

    @ thefreakbpx3 : dein kilu.de Acc wird heute/morgen einer genauen prüfung unterzogen werden

  • @ thefreakbpx3 : dein kilu.de Acc wird heute/morgen einer genauen prüfung unterzogen werden


    Heißt das, du hast ihn bei kilu.de gemeldet? Wenn ja, dann einfach :thumbdown: :thumbdown: :thumbdown:
    Und wenn du meine Meinung zu kilu.de wissen willst: Der letzte Sch***. Viel zu oft offline und einmal angemeldet gibt es ein Haufen Werbung per E-Mail...


  • Heißt das, du hast ihn bei kilu.de gemeldet? Wenn ja, dann einfach :thumbdown: :thumbdown: :thumbdown:
    Und wenn du meine Meinung zu kilu.de wissen willst: Der letzte Sch***. Viel zu oft offline und einmal angemeldet gibt es ein Haufen Werbung per E-Mail...

    Wenn du nichts zum Thema beizutragen hast, dann lass solche sinnfreien Posts bitte sein. Wer sich nicht an die AGB hält ist selbst schuld. Übrigens beschwerst du dich erst darüber, dass es Leute gibt, die Verstöße melden und andererseits willst du für deinen (kostenlosen!) Webspace eine bessere Verfügbarkeit. Um das zu garantieren muss sich auch erst mal jeder an die AGB halten, die Regeln stehen da nicht nur zum Spaß sondern haben auch ressourcentechnische Gründe.

    Die AGB-Verstöße treten nur duch die angegebene Nutzung auf. Solange eine echte Internetseite läuft, ist ein kleiner Updater nebenher kein Problem denke ich.
    Punkt 1: Wenn eine Internetseite vorhanden ist, die neben dem Programm noch weitere Inhalte bereitstellt, dann spricht eine kleine Exe nicht dagegen (solange sie auch zum Webauftritt gehört)
    Punkt 2: das ist ein klarer Verstoß
    Punkt 3 Wenn der Webspace nur zusätzlich als Updateserver verwendet wird, spricht da auch nichts dagegen (solange das keine massenhaften Aufrufe werden. 1x pro Tag und Installation reicht doch zum prüfen ;) )

    Offtopic [Blockierte Grafik: http://progandy.de/files/closed.png]

  • Wenn du nichts zum Thema beizutragen hast, dann lass solche sinnfreien Posts bitte sein. Wer sich nicht an die AGB hält ist selbst schuld. Übrigens beschwerst du dich erst darüber, dass es Leute gibt, die Verstöße melden und andererseits willst du für deinen (kostenlosen!) Webspace eine bessere Verfügbarkeit. Um das zu garantieren muss sich auch erst mal jeder an die AGB halten, die Regeln stehen da nicht nur zum Spaß sondern haben auch ressourcentechnische Gründe.

    OK, das sehe ich ja schon ein, aber ich habe ehrlichgesagt was gegen Leute, die meinen, wegen solchen Kleinigkeiten den Richter und Polizisten im Internet spielen zu müssen.
    Aber du hast recht, das fällt jetzt wirklich zu sehr in den OT.