Auto-Update Funktion via Internet

  • hab mal eine Funktion geschrieben, die das eigene Script oder die kompilierte Exe
    mit einer anderen/neueren Version aus dem Internet aktualisiert und sich selbst dabei überschreibt.
    Auf Wunsch wird das Script / Prog danach neu gestartet...

    Na ja, wer es brauchen kann.

    Vielleicht habt Ihr ja noch Wünsche, Anregungen oder Kritik...
    Edit:
    ich vergass, ist natürlich mit Progressbar ;)

    Edit 2:
    ich hab in das Script noch einen Vergleich eingebaut, ob der Dateiname aus dem Internet auch dem lokalen Namen des laufenden Programmes übereinstimmt.

    Dateien

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    3 Mal editiert, zuletzt von Schnuffel (16. März 2010 um 17:01)

  • Hallo Shcnuffel.

    Ein Beispiel der Funktion wäre hier sicherlich für "Anfänger" ratsam.

    Aber gut gemacht.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • das Beispiel des Funktionsaufrufes steht im Funktions-Header ganz unten:

    [autoit]

    ; Example .......; MsgBox(0, 'Ergebnis des Updates:', _SelfUpdater("Pfad zur Downloaddatei", 0, "Titel des Upload Fensters"))

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hallo Schnuffel

    Hab ein kleines Problem, wenn ich die funktion mit

    MsgBox(0, 'Ergebnis des Updates:', _SelfUpdater("http://www.e-hs.eu/downloads/hS_Demo_setup.exe", 0, "hS_Demo_setup.exe"))

    aufrufe, bekomme ich jedesmal die Meldung, dass ein Update verfügbar ist. Die Datei ist aber schon da.

    Sie wird immer wieder geladen. Danach sagt die Funk. dass das Update installiert wird, aber es passiert nicht.

    Rufe ich das Prog nochmal auf, bekomme ich die Meldung, dass das Update erfolgreich durchgeführt wurde und danach wieder die Meldung, dass ein Update verfügbar ist.


    Wo sollte die upd_version.ini und die Patchdatei stehen?


    Gibts vielleicht eine Beschreibung?


    LG

    Peter

  • Hallo p_fekonja,

    :!: das Script ist kein Downloader :!:
    Damit kannst Du Dein kompiliertes Script mit einer von Dir im Internet bereit gestellten,
    aktuelleren Version automatisch selbst aktualisieren und damit überschreiben.

    Wenn Du die UDF in Dein Script mit aufnimmst und dann sinnvollerweise am Anfang Deines Scriptes aufrufst:

    [autoit]

    #include <_SelfUpdater.au3>
    _SelfUpdater("Pfad zur Downloaddatei", 0, "Titel des Upload Fensters")

    [/autoit]


    Dann überprüft diese Funktion die Dateigröße Deines gerade laufenden selbst kompilierten Scriptes mit der von Dir im Internet bereitgestellten Datei,
    lädt die aktuellere Version aus dem Internet in ein Temp-Verzeichnis, erstellt eine Batch-Datei die den Kopiervorgang durchführt und beendet sich dann selbst.
    Wahlweise kannst Du angeben, ob Dein Programm nach dem Update automatisch wieder starten soll, oder ob der User selbst Dein Programm nochmal starten soll.
    Nach der Beendigung des Updates wird eine ini erstellt, damit das Script prüfen kann, ob ein Update erfolgte. Wenn dem so ist erscheint eine MsgBox, die den User auf den Erfolg / Mißerfolg hinweist.
    Danach wird das Temp-Verzeichnis und die ini gelöscht.
    Fertig...

    Bei Fragen...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hallo, danke für die schnelle Antwort.

    Wenn ich richtig verstanden habe, dann muss ich die Funktion in jeder EXE, aus der mein Programm besteht einfügen und kann so einzelne Teile updaten, oder?

    Super, ist genau das was ich gesucht habe! :thumbup:


    LG


    Peter

  • gedacht ist das Script eigentlich nur für eine exe.
    Aber es funktioniert sicher auch für mehrere.
    Der User erhält halt für jede exe, für die ein Update vorliegt eine Aufforderung, dieses Update downzuloaden.

    Um dabei dem Problem von Versionsmißständen aus dem Weg zu gehen,
    würde ich an Deiner Stelle mein Script nur als Anhalt verwenden und es so abändern, dass alle Teile geladen werden (vielleicht als zip oder so)
    und gemeinsam mit nur einer Aufforderung an den User komplett upgedatet werden.

    Vielleicht schreibe ich ja mal einen großen Bruder davon ... ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)