Seite 1 von 1

Eigene Updateroutine fürs Programm

Verfasst: 01.10.2014 20:09
von Amor_2001
Hallo zusammen,

ich habe ein Programm geschrieben, welches aus einer einzigen EXE (starter.exe) besteht. Diese Programm soll beim Start prüfen, ob sich in einem Updateverzeichnis eine neue Version befindet (gleicher Name) und dann diese Version ins Programmverzeichnis kopieren, sich selbst beenden und dann neu starten.
Da die EXE durch das gestartete Programm gelockt ist, kann man sie ja nicht löschen oder überschreiben.
Habe auch experimentiert mit neues Proramm das die neue Version kopiert starten, starter.exe beenden, starter exe starten, neues Programm beenden. Aber das ist nicht das, was ich gern möchte.
Hat jemand eine Idee oder einen Codeschnipsel für mich?

Wäre sehr dankbar.

Re: Eigene Updateroutine fürs Programm

Verfasst: 01.10.2014 20:18
von ts-soft
Schreibst eine Batch-Datei die die neue Exe kopiert. Dann beendet Du die Exe und startest die Batch-Datei.
Danach startest Du die Exe erneut.

Das funktioniert natürlich nur dort, wo Du schreibrechte hast, also seltenst dort wo Deine Exe ist.

Gruß
Thomas

Re: Eigene Updateroutine fürs Programm

Verfasst: 01.10.2014 20:21
von Amor_2001
Hallo Thomas,

danke, an sowas hatte ich auch schon gedacht. Die Überlegung war aber, es nur bei einer Datei zu belassen und es aus dem Programm selbst heraus zu versuchen.

Re: Eigene Updateroutine fürs Programm

Verfasst: 01.10.2014 20:26
von ts-soft
Du läßt es doch bei einer Datei, mehr oder weniger. Dein Programm schreibt das Batch und führt es aus,
bevor es sich beendet. Das Batch kopiert, startet neue Datei und löscht sich selbst (das geht, weil die
Batch datei nur ein Script ist, das von cmd.exe ausgeführt wird).

Re: Eigene Updateroutine fürs Programm

Verfasst: 01.10.2014 21:25
von Amor_2001
Hatte ich mir eigentlich anders gedacht, ohne eine extra Datei zu schreiben.
Aber wenn es nicht noch eleganter geht, bleibt mir wohl nichts anderes übrig.

Danke erstmal

Re: Eigene Updateroutine fürs Programm

Verfasst: 01.10.2014 21:31
von STARGÅTE
Ein anderer Weg wäre: A - Original Exe, B - Update Exe, C - umbenannte original Exe

A läuft, startet B und beendet sich.
B benennt A in C um, startet C und beendet sich.
C kopiert B in den Ordner von C, startet B und beendet sich.
B löscht C.

Re: Eigene Updateroutine fürs Programm

Verfasst: 02.10.2014 07:55
von Chimorin
Ich habe bei vielen Programmen dies hier gesehen:
Ein anderer Weg wäre: A - Original Exe, B - Update Exe, C - umbenannte original Exe
Man startet B, was so ne Art Launcher ist. B schaut nach Updates und installiert diese ggfs.
B startet A.

Re: Eigene Updateroutine fürs Programm

Verfasst: 02.10.2014 08:19
von Bisonte
A = Original.exe
B = Updater.Exe

A wird gestartet
- Lösche B wenn vorhanden
- Check auf Update.
- Wenn Update - Download B - Starte B - A beenden

B wartet das A beendet ist.
B bennent A um
B lädt neue A herunter

Wenn Download richtig, lösche Umbenanntes A - Starte A

Ansonsten lösche Neues A
Umbenennen Alt A zu A und starte A

Edit : Ungefähr so

Code: Alles auswählen

;: Hauptprogramm

#Revision = 1001

ServerRevision = #Revision

If FileSize("Update.exe") > 1
  DeleteFile("Update.exe)
EndIf

InitNetwork()

If ReceiveHTTPFile("http://www.meineWebAdresse.de/version.txt", "version.txt")
  If ReadFile(0, "version.txt")
    ServerRevision = Val(ReadString(0))
    CloseFile(0)
  EndIf
  DeleteFile("version.txt")
EndIf

If ServerRevision > #Revision
  
  If ReceiveHTTPFile("http://www.meineWebAdresse.de/update.exe", "update.exe")
    RunProgram("update.exe")
    End  
  EndIf
  
EndIf

; Weiter im Programm

Code: Alles auswählen

;: Update.exe

;: umbenennen
Rename("Main.exe", "OldMain.exe")

If ReceiveHTTPFile("http://www.meineWebAdresse.de/update.exe", "Main.exe") ; Download der neuen Exe
  DeleteFile("OldMain.exe") ; Wenn ok, dann alte exe löschen
Else
  DeleteFile("Main.exe") ; Reste löschen wenn vorhanden
  Rename("OldMain.exe", "Main.exe") ; umbenennen - damit wieder alles beim alten ist
EndIf

RunProgram("Main.exe") ; wieder hauptprogramm starten

End
Der Anwender startet wie gewohnt sein Programm, und muss nicht ein "Extra" Update Programm starten.
Oma Gerda freut sich dass alles von alleine geht ;)

Wobei man am besten (unter Windows zumindest) alles im Windows Temp Ordner macht (den Download usw.), und die Updater.exe mit AdminRechten
starten sollte. (Wer weiss wo Oma Gerda das Hauptprogramm hingeschoben hat)