AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Progamm Sich Selbst Ersetzen Lassen

Ein Thema von Lucifer · begonnen am 6. Jul 2008 · letzter Beitrag vom 6. Jul 2008
Antwort Antwort
Benutzerbild von Lucifer
Lucifer

Registriert seit: 29. Mär 2007
62 Beiträge
 
#1

Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:12
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?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:14
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:14
Starte ein Hilfsprogramm, beende deine Exe und lass die Ersetzung vom Hilfsprogramm erledigen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Lucifer
Lucifer

Registriert seit: 29. Mär 2007
62 Beiträge
 
#4

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:26
Danke

Wie kann ich es soeinstellen dass man das Hilfeprogramm nicht selbst starten kann und nur von meinem Updater starten lässt?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:28
In dem du es vom ihm ins Temp-Verzeichnis entpacken lässt.
Markus Kinzler
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:30
Zitat von Lucifer:
Danke

Wie kann ich es soeinstellen dass man das Hilfeprogramm nicht selbst starten kann und nur von meinem Updater starten lässt?
in dem du zB das Hilfsprogramm mit einem Parameter startest. Fehlt dieser Parameter kannst du ne Meldung rausbringen ("Updater kann nur über das Programm gestartet werden.") und den Updater beenden.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von Lucifer
Lucifer

Registriert seit: 29. Mär 2007
62 Beiträge
 
#7

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:34
Hm Ich versteh jetzt beide Versuche nicht

Weder das mit dem Temp
Noch wie das mit dem Paramter aussehen muss
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 22:35
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.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Lucifer
Lucifer

Registriert seit: 29. Mär 2007
62 Beiträge
 
#9

Re: Progamm Sich Selbst Ersetzen Lassen

  Alt 6. Jul 2008, 23:26
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:
PostMessage(FindWindow(nil,'.: Updater :.'), wm_close, 1, 1);
  DeleteFile('Bak.exe');
EDIT:

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz