Selbstupdate eines Programms

Shakie

Erfahrenes Mitglied
Hallooo!
Mein Programm soll eine Updatefunktion erhalten. Das herunterladen der neuen Exe-Datei aus dem Internet ist nicht das Problem sondern vielmehr, dass die neue Exe-Datei automatisch durch die alte ersetzt werden soll.
Also folgendes: ich lade das neue Programm N (N für Neu) durch eine Downloadroutine im alten Programm A (A für Alt) herunter. Jetzt soll sich A beenden, gelöscht werden, N soll in das Verzeichnis von A verschoben werden und den Namen von A annehmen und anschließend soll N gleich wieder gestartet werden. Wie mache ich das am geschicktesten? Schließlich kann ich aus A heraus keinen Befehl starten, sich selbst von der Festplatte zu löschen und dabei aktiv zu bleiben, oder?

Ich dachte, dass man das vielleicht mit einer BAT-Datei machen könnte, die ich vorher erstelle und sich dann startet. Allerdings habe ich keine Ahnung wie man BAT-Dateien programmiert bzw. welchen "Text" ich in die BAT reinschreiben müsste.
Was habt ihr denn sonst noch für Lösungsvorschläge? Kann man ein Programm eventuell nur im Arbeitsspeicher laufen lassen?
 
Ich glaube, die Frage hatten wir schon mal, meiner Meinung nach ist es am besten, das Update über eine eigene Programmdatei zu gestalten. Dann kannst du ohne Probleme die normalen Programmdateien ersetzen.


Der Doc!
 
Es wäre möglich im Programm eine Batch-Datei zu erstellen, in der das das alte Programm gelöscht wird und das neue umbenannt und in den richtigen Ordner verschoben wird. Allerdings kenne ich die Dos-Befehle nicht die du dafür brauchst. Hier ist ein Link der dir zeigt wie man eine solchle Datei erstellt um das eigene Programm zu löschen
http://www.activevb.de/tipps/vb6tipps/tipp0476.html
 
Ich habe mit der Suchfunktion kein Thema gefunden...
auf jeden Fall hilft mir der Tipp von lancore89, da darin erklärt wird wie man ein Programm selbstmord begehn lässt. :-) Ich werde mich jetzt mal mit den DOS Befehlen auseinandersetzen, dann werde ich den Rest auch herausfinden.
 
Hallo Shakie,

ich denke das beste wäre so wie Doc schon andeutete das eine zweite
exe mit auslieferst die das Update erledigt.
Sobald der Download von deinem Prog aus erledigt (ich würde die Datei
aber zippen und dann vom Prog entpacken lassen) ist startest du
über dieses das Update Tool.
Das Tool beendet dann die Anwendung.
Jetzt muss geprüft werden ob die Anwendung wirklich terminiert wurde.
Dann löscht das Tool die Awendung und oder benennt sie um.
Danach die zip entpacken, kopieren und mit Shell starten. Das ganze muss
aber überwacht werden, da es da zeitliche Ablaufprobleme geben kann.
Ich habe das mal gemacht aber es nicht lange genutzt und finde das ganze
leider auf keiner Sicherung mehr auf die Schnelle.
Mit einer bat kannst du die Abläufe nicht so gut überwachen.

HTH
Jens
 
Mal schaun was sich da machen lässt. Ich könnte ja einfach das Update-Tool mit der Prozess-ID als Parameter starten. Dann wartet das Update-Tool so lange, bis der Prozess mit der ID nicht mehr läuft. (Eine Prozessüberwachung habe ich schon mal programmiert, dann dürfte ich das wohl hinkriegen)
 
Oooder :

Update.exe starten, sich selbst beenden.

Updata.exe macht sein update und startet die Hauptanwendung wieder neu.

Ease your life. ;)
 
Zurück