Updatefunktion^^

  • Hey Com.

    Ich und Freund wollen ein kleinen Prog scripten mit einer Updatefunkion^^
    Nur leider haben wir keine Ahnung von Updaten.

    wir wollen einbauen, dass immer, wenn ne neue version da ist, beim starten folgendes kommt "Eine neue Version ist verfügbar, du kannst sie nun runterladen!"


    wie geht das am besten?


    LG Blodas

  • Hej,

    also ich kann nur sagen wie ich es machen würde, nicht wie es vllt am besten ist. Also:

    Ich würde am Anfang im Script einen Teil einbauen der zu einem FTP-Server connected. Dort habt ihr eine Txt-Datei oder Ini die ihr ausleset. Wenn Ihr z.b. dann eine 1 in die Txt-Datei schreibt gibt es eine neue Version. Lasst nun das Programm dies prüfen. Und gebt die folgenden Ausgaben, wie z.B. neue Verison verfügbar ("Eine neue Version ist verfügbar, du kannst sie nun runterladen!") und dann halt Button, jetzt updaten oder abbrechen.

    Zu jetzt Updaten, da würde ich im Script einen FTP-Server-Pfad angeben, auf der die "Update-Version" liegt und diese wird nun heruntergeladen und gestartet. ... Ich weiß nicht ob das so gut gelöst ist, aber sowärs meine art (bin ja auch noch nicht so lange mit autoit am werkeln ;) )


    Edit: Wollt ihr Updaten oder eine neue Version downloaden lassen?

    Mfg
    Johannes

  • $var = INetGetSize("www.google.de) ; als beispiel
    If $var <> "Hier die Größe der alten Version" Then
    MsgBox (48,"Achtung","Es ist eine neue Version draussen")
    EndIf

  • Johannes hat es richtig erkannt.

    Und der soll nur updaten aber wenn das net geht meinet wegen runterladen^^

  • Gut ;)

    Nur statt der 1, besser vielleicht, wenn ihr sowieso eine ini-Datei auf dem Rechner anlegt immer dort die aktuelle Versionsnummer des Programms speichern.

    z.B. Ini auf dem Rechner:
    [Version]
    Num=1.0.2

    Txt-Datei auf dem Server:
    1.0.5

    Dann die Value der Section auslesen in einer Varibale speichern. Nun die Txt-Datei auf dem Server auslesen und die beiden vergleichen welche der beiden Zahlen "höher" ist.

    Edit: Ich setz mich direkt mal dran ^^ das brauch ich auch xD


  • Nur statt der 1, besser vielleicht, wenn ihr sowieso eine ini-Datei auf dem Rechner anlegt immer dort die aktuelle Versionsnummer des Programms speichern.

    Besser wäre es, die Nummer mit AutoIt3Wrapper und #AutoIt3Wrapper_Res_Fileversion=1.0.5 zu setzen
    Das Auslesen dann mit FileGetVersion

  • Spoiler anzeigen
    [autoit]


    Dim $ver = "1.3.9"
    InetGet("http://test/update.txt",@TempDir & "\update.txt", 1, 0)
    $file = FileOpen(@TempDir & "\update.txt", 0)
    $line = FileReadLine($file, 1)
    $line2= FileReadLine($file, 2)
    If $line = $ver Then
    MsgBox(64, "Kein Update", "Du hast die neuste Version: (" & $ver & ")")
    FileClose($file)
    FileDelete(@TempDir & "\update.txt")
    Else
    MsgBox(64, "Update!", "Es ist eine Neue Version verfügbar!")
    $fg = MsgBox(4, "Updaten?", "Möchtest du jetzt Updaten?")
    If $fg = 6 Then
    InetGet("http://test/files/" & $line2, $line2, 1, 0) ; ANPASSEN
    FileClose($file)
    FileDelete(@TempDir & "\update.txt")
    Exit 0
    EndIf
    EndIf

    [/autoit]

    und txt sieht so aus.

    Code
    1.4.0 ;anpassen
    mytool.exe
  • So, um die FileGetVersion Version auslesen: [ offen ] Update-Check funktion. -> Downloadlink überprüfen
    und schreiben: Einfach über AutoIt3WrapperGUI kompilieren ( in SciTE4AutoIt auf Extras-Kompilieren) und da bei "Resource Update" die FileVersion eintragen

    Aber mit der Variablen geht es auch und ist einfacher. Nur ene Ini-Datei wäre nicht so toll. Da könnte jeder die Nummer einfach ändern :)

    Zur TextDatei: In der 1. Zeile steht die Version (sonst NICHTS), in der 2. Zeile steht der Name der Datei, die runtergeladen werden soll.

  • Zitat

    Nur ene Ini-Datei wäre nicht so toll. Da könnte jeder die Nummer einfach ändern :)

    Wer geht schon in die ini-Datei und sucht nach der Version und ändert sie xD .. naja

  • also

    1. wenn ftp server ist dann einfach anstatt http:// einfach ftp:// angeben.

    2. in der txt steht in der ersten zeile die version nummer(dreistellig) und in der zweiten zeile steht der datei name.
    wenn du jetzt ein Update bringst und der Client(Prog) ist z.B. noch 1.9.5 änderst du die version nummer in der txt
    in die aktuelle version ab

    jetzt passe ich den script für dich an.


    Spoiler anzeigen
    [autoit]


    InetGet("http://www.blodas.kilu.de/update.txt",@TempDir & "\update.txt", 1, 0) ; das programm lädt die update.txt, wo die datei version drin steht
    $file = FileOpen(@TempDir & "\update.txt", 0); öffen der datei
    $line = FileReadLine($file, 1);speicher zeile 1 in variable
    $line2= FileReadLine($file, 2);speicher zeile 2 in variable
    If $line = $ver Then ; wenn programm version gleich der txt dann
    MsgBox(64, "Kein Update", "Du hast die neuste Version: (" & $ver & ")")
    FileClose($file);txtdatei schließen
    FileDelete(@TempDir & "\update.txt");txt datei lösen
    Else ; sonst
    MsgBox(64, "Update!", "Es ist eine Neue Version verfügbar!");informiert das update vorhanden ist
    $fg = MsgBox(4, "Updaten?", "Möchtest du jetzt Updaten?"); fragt ob updaten will
    If $fg = 6 Then ; Wenn ja/YES geklickt worden ist dann
    InetGet("http://www.blodas.kilu.de/files/" & $line2, $line2, 1, 0) ;hole aktuelle datei (mit dem namen $line2)
    FileClose($file);schliest datei
    FileDelete(@TempDir & "\update.txt");löscht datei
    Exit 0
    EndIf
    EndIf

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

    du brauchst also insgesamt eine txt datei und ein ordner files, wo du die aktuellen programme reintust.

    Edit:

    Zitat

    Wer geht schon in die ini-Datei und sucht nach der Version und ändert sie xD .. naja

    Ich XD

  • =)OK danke für den code=)
    Aber eins verstehe ich immer noch nicht -.-'
    Wie funzt das mit der txt datei.
    Einfach ne update.txt auf den ftp server und dann:

    Zitat

    0.1.2
    Hallo.au3

    $Button1 = GUICtrlCreateButton("Test", 300, 360, 90, 30)

    z.B.


    oder wie?

  • Also, die Uodate.txt hat genau 2 Zeilen: in der ersten die Version, in der 2. die Datei, die runtergeladen werden soll. Wenn sonst noch was drin steht, wird das ignoriert. Damit wäre dein Beispiel OK.