Programm updaten

  • Hi zusammen

    Ich arbeite jetzt erst seit 2 Tagen mit AutoIt und muss sagen, mächtig komplex das ganze. Bisher hab ich meinen Kleinkram per Kixtart gelöst, reicht mir aber nicht mehr. ;)

    Zu meinem Problem hab ich schon die Boardsuche gequält, bin aber leider nicht fündig geworden :(

    Ich hab ein kleines Programm gebastelt welcher Browsersettings neu setzt. Da ich erst damit angefangen habe gibt's natürlich öfter mal neue Versionen des Programms. Jetzt möchte ich, wenn auf einem Server eine neuere Version des Programms liegt dieses auf der Workstation auf der es ausgeführt wird updaten.

    Die Versionsüberprüfung hab ich jetzt reingebastelt, allerdings fehlt noch die Updateroutine. Ich kann natürlich nur die neue Version rüberkopieren und der User startet das Proggie nochmal neu, finde ich aber nicht wirklich chic. Das Programm darf auch nur einmal laufen, daher müsste ich ja die "alte" Version abschießen, und dann die neue starten. Nach dem abschießen aber läuft natürlich der Rest auch nicht mehr ... :hammer:

    Jemand eine Idee wie ich das umsetzten kann?

    Und direkt noch eine Anschlussfrage ;)

    Die Browsersettings setze ich in die Registry, daher sind die Änderungen erst in einem neuen Browserfenster aktiv. Kennt jemand eine Möglichkeit die Settings zu refreshen, damit diese auch im geöffneten Browser aktiv werden?

    Vielen Dank schonmal vorab

    Grüße

    Machtin

  • Zitat

    Original von th.meger
    .... Bzw. du die Anwednung schließt und dann neu startest.

    So long,

    Mega

    P.S.: Update der Daten fürs Object IE ist glaube ich nicht möglich.

    Hi,

    danke für die schnelle Antwort. Die Anwendung schließen geht ja noch einfach über ProcessClose, dann kann ich aber kein Neustart des Programms mehr machen, bzw. wüsste ich nicht wie. ?(

    Grüße

    Machtin

    • Offizieller Beitrag

    Man könnte eine bat-Datei laufen lassen, die 5 Sekunden wartet (Ping) und dann die neue Version umbenennt, sodass sie die alte ersetzt, und dann das Programm wieder startet. Nach dem Start der bat schließt man das Skript einfach über Exit.

    peethebee

  • Zitat

    Original von peethebee
    Man könnte eine bat-Datei laufen lassen, die 5 Sekunden wartet (Ping) und dann die neue Version umbenennt, sodass sie die alte ersetzt, und dann das Programm wieder startet. Nach dem Start der bat schließt man das Skript einfach über Exit.

    peethebee

    Hi,

    war eine sehr gute Idee. Ich schreib jetzt in meiner "Update Function" den Batch-Job, somit kann ich das auch flexibel auf andere eigene Programme übernehmen ...

    Man kann das sicher "schöner" lösen, funzt aber schonmal für mich.
    Fehler werden auch nicht abgefangen, ich kenn das leider nur von Kix mit @error, wie das mit AutoIT geht muss ich noch erkunden ...
    (gibt's keinen :rtfm: Smiley?) :)

    Danke für den Tip!

    [autoit]


    Func Update()
    FileCopy($source & "\" & $g_szVersion &".exe", @TempDir & "\" & @ScriptName & ".new",1)

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

    $file = FileOpen($updcmd, 2)

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

    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    FileWriteLine($file, "@Echo off")
    FileWriteLine($file, "ping localhost -n 3 >NUL") ; enstrpicht ca. 3 sek.
    FileWriteLine($file, "del " & '"' & @ScriptFullPath & '"')
    FileWriteLine($file, "copy " & '"' & @TempDir & "\" & @ScriptName & ".new" &'" ' & '"' & @ScriptFullPath & '"' & " >NUL")
    FileWriteLine($file, "del " & '"' & @TempDir & "\" & @ScriptName & ".new" & '"')
    FileWriteLine($file, "Echo " & $g_szVersion & " wird neu gestartet ...")
    FileWriteLine($file, "ping localhost -n 2 >NUL")
    FileWriteLine($file, "start " & '"" ' & '"' & @ScriptFullPath & '"')
    FileWriteLine($file, "Exit")
    FileClose($file)
    Run(@ComSpec & " /c " & $updcmd)
    ProcessClose ( @ScriptName )
    EndFunc

    [/autoit]

    Ach ja, wirklich klasse Forum, macht Spass sich hier einzulesen ...

    Grüße

    Machtin

    Edit: Die Dos-Box wurde nicht geschlossen

    2 Mal editiert, zuletzt von Machtin (14. Dezember 2006 um 14:00)

  • Zitat

    Original von th.meger
    Hi,

    du kannst dir bei Run die Pid zurückgeben lassen und die anschließend auch killen. Aber ich weiß jetzt noch nicht, welche DosBox offen bleibt ;)

    So long,

    Mega

    Hi,

    das schließen der DosBox ist jetzt gelöst. Wenn man im Batch das Programm als Parameter eines anderen Programmaufrufs
    startet, wird die Box nach dem Programmstart automatisch geschlossen ... :hammer:

    Start "" "das eigentliche Programm"

    [autoit]

    FileWriteLine($file, "start " & '"" ' & '"' & @ScriptFullPath & '"')

    [/autoit]

    Grüße

    Machtin

  • Zitat

    Original von th.meger
    Hi,

    mühsam ernährt sich das Eichhörnchen. :klatschen:

    Ich dein Problem damit gelöst?

    So long,

    Mega

    Jep, das läuft jetzt soweit.

    Wie gesagt, da muss noch etwas errorhanling rein, aber fürs erste bin ich froh das es überhaupt klappt ;)

    Wie löst du das denn? Lass mich raten. Ein Programm erst rausgeben wenns komplett fertig ist? :D

    Grüße

    Gippo