Eigene Updateroutine fürs Programm
Eigene Updateroutine fürs Programm
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.
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.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Eigene Updateroutine fürs Programm
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
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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Eigene Updateroutine fürs Programm
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.
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.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Eigene Updateroutine fürs Programm
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).
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).
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Eigene Updateroutine fürs Programm
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
Aber wenn es nicht noch eleganter geht, bleibt mir wohl nichts anderes übrig.
Danke erstmal
Re: Eigene Updateroutine fürs Programm
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.
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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: Eigene Updateroutine fürs Programm
Ich habe bei vielen Programmen dies hier gesehen:
B startet A.
Man startet B, was so ne Art Launcher ist. B schaut nach Updates und installiert diese ggfs.Ein anderer Weg wäre: A - Original Exe, B - Update Exe, C - umbenannte original Exe
B startet A.
Re: Eigene Updateroutine fürs Programm
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
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)
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 ProgrammCode: 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
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)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom