Update-Check funktion. -> Downloadlink überprüfen

  • Hallo

    Ich hatte vor, in meinem Programm eine "Update Check" - Funktion einzubauen. Und zwar hatte ich es mir so vorgestellt, dass das Programm überprüft, ob der downloadlink von meinem Programm noch vorhanden ist. (wenn ich ne neue Version hochlade, lösche ich meistens die alte -> also ist auch der Downloadlink weg/ungültig)..

    Also ungefähr so:

    If "Downloadlink" exists = http://www.testdownload.de/Pogramm.exe = Then

    MsgBox(0, "kein update benötigt", "Du hast die aktuellste Version")

    Else MsgBox(0, "neue Version verfügbar", "Es ist eine neue Version verfügar, möchstest du jetzt diese Version downloaden?")

    Endif

  • Moin, ich bin da auch grade am basteln, ich habe mir das so vorgestellt:
    1. Das Update erledigt eine zweite EXE Datei
    2. Die Update.exe hat mehrere Parameter und zwei Funktionen
    a) nur prüfen ob eine neue Version vorhanden ist (CheckOnly)
    b) Ist eine neue Version vorhanden Fragen ob installiert werden soll und ggf. die Installation durchführen (Update)

    Auf dem Webserver habe ich mir dann folgenden Aufbau vorgestellt:
    version.txt = hier soll nur die derzeitige Version drinnen stehen, welche sich auf dem Webserver befindet
    filelist.txt = eine Dateiliste welche Dateien geladen werden sollen
    und logischer weise die Dateien :)

    Wird das Update angefordert, wird das Hauptprogramm geschlossen, die Dateien geprüft, geladen, die alten Dateien ersetzt, durch die neuen ersetzt und das Programm wird wieder gestartet.

    Für die die es interessiert, ich habe deshalb eine weitere EXE Datei dazu genommen, da ich das Update dann so in verschiedene Anwendungen einbauen kann. Unterhalten tun sich die beiden Programme über die console bzw. das Hauptprogramm bekommt von der update.exe Rückmeldungen.

    Falls jemand eine bessere Idee hat, immer her damit :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Ich habe es derzeit bei meinem Programm so geregelt, das ich eine update.txt habe die bei jedem Programmstart heruntergeladen wird. In der ersten Zeile wird die Version vergliechen, fals diese nicht übereinstimmt, holt es sich aus der 2ten zeile den Dateinamen der neuen File und lädt sie runter, wenn der User es möchte.
    McPoldy's Vorschlag ist relativ gut, nur würde ich nich die filelist.txt und version.txt als eine Textdatei zusammenfassen.

  • hey, blubbstar. So hab ich es auch vor.

    Wie kann man denn Textdateien vergleichen?

    Ah! Habs schon:

    [autoit]

    func _check_update()

    $line = FileReadLine(@ScriptDir&"\Versioninfo.ini", 2)
    If $line= "Version=1.5.3" Then
    MsgBox(4096, "no update", "Your Version is the newest", 2)
    Else
    Exit
    EndIf

    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von Henry (14. Juni 2009 um 17:32)

  • Gib deinem Programm einfach mal eine version. Also am besten Const $Version = "1.0"
    dann lädt er ja die File runter, die liest du aus mit $versionread = filereadline($file, 1)
    Anschließend einfach:

    [url='http://www.autoitscript.com/autoit3/docs/keywords.htm']

    [autoit]

    If $versionread = $Version Then
    MsgBox(0, "Du hast die aktuelle Version")
    Else
    MsgBox(0, "Es gibt eine neue Version")
    EndIf

    [/autoit]
  • Es geht auch für die Dateiversion, die man mit dem AU3-Wrapper angibt:

    [autoit]

    #AutoIt3Wrapper_Res_Fileversion=1.2.3.4

    [/autoit][autoit][/autoit][autoit]

    ; Autoit3-Wrapper-FileVersion auch von unkompilierten Skrpten
    ; Prog@ndy
    Func _GetVersion()
    Local $Version
    If @Compiled Then
    Return FilGetVersion(@ScriptFullPath)
    Else
    $x = FileRead(@ScriptFullPath)
    ConsoleWrite($x)
    $Version = StringRegEXp($x,"#AutoIt3Wrapper_Res_Fileversion=(.*)",1)
    If Not @error Then
    $Version = $version[0]
    Else
    $version = 0
    EndIf
    EndIF
    Return $Version
    EndFunc

    [/autoit]