Einzelnen Beitrag anzeigen

nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: Eigenes Programm elegant ersetzen

  Alt 11. Nov 2008, 14:04
Zitat von Oreaden:
daß nach dem Reboot die neue Programmversion verfügbar ist.
die neue programmversion ist bei mir schon nach einem neustart des progamms verfügbar.
beim reboot wird quasi nur im temp-dir aufgeräumt (also alles was nicht sofort
gelöscht werden konnte wird beim reboot gelöscht).

Zitat von Oreaden:
Möchte aber nicht den User mit irgendwelchen Aufforderungen quälen, das Programm zu beenden, sondern einfach beim nächsten Programmstart die neue Version zur Verfügung stellen.
kannst du ja machen. die instanz des programms im temp-dir wartet ja auf das programmende.
mußt es ja nicht sofort beenden.[/quote]

Zitat von Oreaden:
Ist hierfür auch die ganze Geschichte mit den ThreadID's notwendig (wie kann man diese ermitteln)?
was meisnt du damit? wie gesagt, ich speichere die prozess-id der laufenden org. instanz.
die 2. instanz (im temp dir) wartet dann solange bis der prozess beendet ist.
speichern tue ich das ganze in der 1. instanz in etwa so:
Delphi-Quellcode:
  ini := TIniFile.Create(TempDir+'update.ini');
  try
    ini.WriteString(SECTION, 'OldFile', ParamStr(0));
    ini.WriteInteger(SECTION, 'pid', GetCurrentProcessId);
  finally
    ini.free;
  end;
in der 2. instanz lese und warte ich dann so:
Delphi-Quellcode:
  //alten dateinamen und prozess-id auslesen
  ini := TIniFile.Create(IniFilename);
  try
    OldFile := ini.ReadString(SECTION, 'OldFile', '');
    result := FileExists(OldFile);
    if not result then exit;

    pid := ini.ReadInteger(SECTION, 'pid', 0);
    result := pid > 0;
    if not result then exit;
  finally
    ini.free;
  end;

  //warten bis prozess beendet ist
  while ProcessExists(pid) do
  begin
    sleep(1000);
    Application.ProcessMessages;
  end;



Zitat von Oreaden:
Auf der anderen Seite ist das Problem mit den ganzen Schreibrechten, wie kann man diese elegant beim Update handhaben?
ich weiß nicht genau was du meinst... welche schreibrechte?
  Mit Zitat antworten Zitat