Update?? Bitte helfen!!

  • Ich würde den Bot gerne auf einen Server legen und eine "Update-Funktion" einbauen. Heißt also, dass der Bot einen Button "Update" enthält und sobald jemand diesen drückt wird geprüft, ob die neuste Version installiert ist. Falls nicht, soll automatisch die neue Version gesaugt werden. Wie setze ich das am besten um?

    2 Mal editiert, zuletzt von slin (15. Oktober 2009 um 13:01)

  • Erstmal musst du irgendwie die version deiner software rausbekommen, dann musst die download addresse haben wo es den patch, dann könntest du die Seite komplett einlesen versuchen den string zu finden mit dem download namen, da steckt meisten auch die verison drin ;)

  • Hab sowas mal geschrieben... also ein Update Programm... Hab das so gemacht, dass ich eine Versionen.Ini hab und in der lagen dann die Versionen und der Download Pfad (1.1.0.0 = ftp://127.0.0.1/Updates/1.1.0.0.exe). Und dann hat sich das Programm halt die Passende Version rausgesucht, und geladen und installiert.
    Vill. hilft dir dass.

  • Hallo Slin


    Ich habe auch eine Update funktion geschrieben.

    Ich schaue, welche Version die exe hat und wenn sie neuer ist, wird die aktuelle exe umbenannt und dann die neue version kopiert.

    Beim start schaue ich noch, ob es eine umbenannte Version hat.

    Dies funktioniert bei mir super gut.


    Hier noch der Source meiner Update Funktion.


    [autoit]


    Func MYUPDATE($anyway)
    TraySetIcon("TelHoererUpd.ico")
    WriteLog("Checken, ob es ein Update gibt")
    $UPDATEPATH = "\\server\dir\"
    $SCRIPTPATH = @ScriptDir & "\"
    $SCRIPTNAME = StringLeft(@ScriptName, StringLen(@ScriptName) - 4)
    $SCRIPTEXTENSION = StringRight(@ScriptName, 3)
    If FileExists($UPDATEPATH & @ScriptName) Then
    $VER = FileGetVersion($UPDATEPATH & @ScriptName)
    $VER2 = FileGetVersion(@ScriptName)
    If FileExists($SCRIPTPATH & $SCRIPTNAME & "_autoback.exe") Then
    WriteLog("Alte version löschen")
    FileDelete($SCRIPTPATH & $SCRIPTNAME & "_autoback.exe")
    EndIf
    If $VER > $VER2 Or $anyway = True Then
    WriteLog("Aus der aktuellen Version ein Backup kreieren")
    FileMove(@ScriptFullPath, $SCRIPTPATH & $SCRIPTNAME & "_autoback.exe")
    WriteLog("Neue Version kopieren")
    FileCopy($UPDATEPATH & @ScriptName, $SCRIPTPATH & $SCRIPTNAME & "." & $SCRIPTEXTENSION, 1)
    WriteLog("Neue Version Starten")
    Run($SCRIPTPATH & $SCRIPTNAME & "." & $SCRIPTEXTENSION)
    WriteLog("Alte Version beenden")
    Exit
    EndIf
    EndIf
    TraySetIcon("TelHoerer.ico")
    EndFunc

    [/autoit]


    Gruss Roger

  • Leg doch einfach eine .ini auf dem Server an mit

    [Version]
    Version = 1.0.0.1
    UpdateDir = http://www.deinserver.de/verzeichniss/Datei.exe

    die datei hat einen festen platz auf dem Server. Beim klick auf den Update Button kannst du die Datei mit InetGet() holen, und mit IniRead dann überprüfen, ob die aktuelle Version anders ist als die auf dem Server.

    [autoit]

    $AktuelleVersion = "1.0.0.0"
    InetGet("http://www.deinserver.de/version.ini","version.ini",1)
    If IniRead("version.ini","Version","Version","") <> $AktuelleVersion Then
    InetGet(IniRead("version.ini","Version","UpdateDir",""),@ScriptName,1)
    EndIf

    [/autoit]

    Irgendwie sowas... nur ne Idee..