![]() |
Progamm Sich Selbst Ersetzen Lassen
Hallo
Also ich habe einen Updater geschrieben und möchte nun wissen wie ich es am besten anstelle damit er sich selbst updatet. In einer Rar auf meinem Root ist der geupdatete Updater. Er soll den runterladen und entpacken (was er auch kann) Nur kann er sich nicht selbst während dem Laufen ersetzen Wie soll ich das anstellen? |
Re: Progamm Sich Selbst Ersetzen Lassen
Es gibt ein spezielles Flag im PE-Header, mit dem das gehen müsste. Ich habe es allerdings nicht getestet.
Der klassische Weg ist eine Batch-Datei, die die heruntergeladene Datei umbenennt, nachdem sich der Updater beendet hat. |
Re: Progamm Sich Selbst Ersetzen Lassen
Starte ein Hilfsprogramm, beende deine Exe und lass die Ersetzung vom Hilfsprogramm erledigen
|
Re: Progamm Sich Selbst Ersetzen Lassen
Danke
Wie kann ich es soeinstellen dass man das Hilfeprogramm nicht selbst starten kann und nur von meinem Updater starten lässt? |
Re: Progamm Sich Selbst Ersetzen Lassen
In dem du es vom ihm ins Temp-Verzeichnis entpacken lässt.
|
Re: Progamm Sich Selbst Ersetzen Lassen
Zitat:
|
Re: Progamm Sich Selbst Ersetzen Lassen
Hm Ich versteh jetzt beide Versuche nicht
Weder das mit dem Temp Noch wie das mit dem Paramter aussehen muss |
Re: Progamm Sich Selbst Ersetzen Lassen
Geht noch simpler: Die gerade laufende Exe kann sich zwar nicht löschen (und damit auch nicht überschreiben), aber sie kann sich umbenennen. Stellt Dein Programm also fest, dass ein Update vorhanden ist, benennt es sich selbst in z.B. MeineExe.Bak um und lädt die neue Version herunter. Beim nächsten Programmstart wird dann automatisch die neue Exe gestartet.
|
Re: Progamm Sich Selbst Ersetzen Lassen
Hab ein problem wnn ich es als Hilfsprogramm mache
Also als erstens schaut der Updater ob im Namen der Rar Updater enthalten ist. Danach wenn ja bennent der Updater sich in Bak.exe Er ladet die Datei runter und entpackt sie. Darin ist die neue Updater.exe welche dann auch auftaucht. Nach Entpacken startet er das Hilfsprogramm welches erstens Den Updater schliesst und danach die Datei Bak.exe löschen soll. Nur bleibt die Bak.exe erhalten. Wenn ich dann aber das Hilfsprogramm starte dann lsöcht er sie Aber...
Delphi-Quellcode:
if(temp='Updater')then
begin RenameFile('Updater.exe','Bak.exe'); end; Runterladen... Entpacken... ShellExecute(Application.Handle, nil,'.\Updater_help.exe', nil, nil, SW_SHOWNORMAL);
Delphi-Quellcode:
EDIT:
PostMessage(FindWindow(nil,'.: Updater :.'), wm_close, 1, 1);
DeleteFile('Bak.exe'); Hab einfach bisschen mit Sleep gearbeitet Die runtergeladene Datei schien später aufzutauchen als das Hilfsprogramm startet. Und zum Patchen hab Ich dann einfach die Neue Datei einfach anders gennant, dann hatt das HilfeProgramm den Updater geschlossen und gelöscht und danach die Neue Datei umbennant |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz