Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm Updaten (https://www.delphipraxis.net/12607-programm-updaten.html)

CoRe.eXtreem 30. Nov 2003 20:32


Programm Updaten
 
Hallo,
ich versuche gerade ein Live-Update in mein Programm ein zu bauen. So weit so gut! Aber wie ersetze ich das Laufende Programm mit einer Heruntergeladenen Datei??

Hier ist der Quellcode;

Delphi-Quellcode:
procedure TForm1.Update2Click(Sender: TObject);
var
  old, new : string;
begin
if DownloadFile('http://www.ensacom.de/Delphiprogramme/Delphimanager/update.ini',(Extractfilepath(Application.exename)+'Update\update.000')) then
begin
  DownloadFile('http://www.ensacom.de/Delphiprogramme/Delphimanager/update.upd',(Extractfilepath(Application.exename)+'Update\update.upd'));
end;
 iniold := tinifile.Create(Extractfilepath(Application.exename)+'Update\update.ini');
  try
  old := iniold.ReadString('Version','Datum','');
  finally
  iniold.Free;
  end;

  ininew := tinifile.Create(Extractfilepath(Application.exename)+'Update\update.000');
  try
  new := ininew.ReadString('Version','Datum','');
  finally
  ininew.Free;
  end;

  if old < new then begin
  if MessageDlg('Es ist ein neues Update verfügbar. Jetzt installieren?',
     mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
     deletefile(Extractfilepath(Application.exename)+'Update\update.ini');
     renamefile(Extractfilepath(Application.exename)+'Update\update.000',(Extractfilepath(Application.exename)+'Update\update.ini'));

    UpdateInstallieren(self); <-- das Funktionier nicht???
  end;
  end
  else
  begin
     showmessage('Kein neues Update verfügbar!');
     deletefile(Extractfilepath(Application.exename)+'Update\update.000');
     deletefile(Extractfilepath(Application.exename)+'Update\update.upd');
  end;
end;
Wäre sehr nett wenn mir hier jemand weiter helfen könnte! :P

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Stanlay Hanks 30. Nov 2003 20:36

Re: Programm Updaten
 
Hallo und herzlich willkommen in der DP :hello:

Kannst du bitte die Delphi Code Tags benutzen, das macht den Code übersichtlicher und besser zu lesen. Ich hab den Code jetzt nicht genau gelesen, aber mein Vorschlag wäre:

Ein zweites, externes Programm schreiben, dass von der alten Anwendung gestartet wird. Dieses Externe Programm beendet dann das alte und überschreibt es mit der Neuen Datei. Ich glaub nicht, dass du dein Programm so einfach sich selbst überschreiben lassen kannst.

man liest sich, Stanlay :hi:

CoRe.eXtreem 30. Nov 2003 20:40

Re: Programm Updaten
 
Super empfang... Kenne mich halt noch nicht so gut aus in der DP! Gute Idee aber das muss doch auch so irgendwie klappen, sonst muss ich alles umschreiben? :mrgreen:

Viele Grüße... CORE

Thunderchild 30. Nov 2003 20:41

Re: Programm Updaten
 
Du könntest das neue Programm temporär speichern. (z.B. Programmname.ex_).
Dann legst Du ein kleines Programm dazu, welches von Deiner Anwendung beim Beenden aufgerufen wird. Es ersetzt dann die Dateien und könnte auch die Anwendung neu starten. Über einen Parameter (oder eine Tempdatei, erstellt von der Anwendung) könntest Du dann auch an die alte Position vom Beenden zurück kehren.

Etwas umständlicher wäre das Ersetzen über den RunOnce-Eintrag in der Registry. Dieser wird aber erst bei einem Neustart durchgeführt und wäre somit für ein kleines Programm bzw. eines, das nichts mit dem System zu schaffen hat, kaum passend.

himitsu 30. Nov 2003 20:42

Re: Programm Updaten
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

schau mal in diesen Beitrag: Buttonklick und Programm neustarten [Hilfe]

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

CoRe.eXtreem 30. Nov 2003 20:46

Re: Programm Updaten
 
Vielen Dank für die schnellen Antworten! Gefällt mir hier super! Werde es mit einer Batchdatei versuchen. :gruebel:

CoRe.eXtreem 30. Nov 2003 20:54

Re: Programm Updaten
 
weiß jemand wie ich das hier einbinde?

Delphi-Quellcode:
var f: Textfile;
s1, s2, s3: Sting;
begin
    s1 := extractFilename(paramstr(0));
    s2 := ChangeFileExt(s1,'.ex_')
    s3 := ChangeFileExt(s1,'.bat')
    AssignFile(f, s3);
    ReWrite(f);
    WriteLn(f, '@echo off');
    WriteLn(f, ':1');
    WriteLn(f, 'Erase '+s1);
    WriteLn(f, 'If exist '+s1+' Goto 1');
    WriteLn(f, 'ren '+s2+' '+s1);
    WriteLn(f, s1);
    WriteLn(f, 'Erase '+s3);
    CloseFile(f);
    ShellExecute(handle,'open',PChar(s3),nil,PChar(ExtractFileDir(ParamStr(0))),SW_HIDE);
Viele Grüße Core

Stanlay Hanks 30. Nov 2003 21:01

Re: Programm Updaten
 
Und nochmal hi!

Das ganze muss, soweit ich das gelesen und verstanden hab, in eine Batch Datei.

Man liest sich, Stanlay :hi:

himitsu 30. Nov 2003 21:02

Re: Programm Updaten
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

so könnte es wohl geh'n:
Delphi-Quellcode:
var f: Textfile;
s1, s2, s3: Sting;
Einfach diesen Teil nach dem Download deines Updates einfügen:
Delphi-Quellcode:
    s1 := extractFilename(paramstr(0));
    s2 := '"'+ExtractFilePath(s1) + 'Update\update.upd"';
    s3 := '"'+ChangeFileExt(s1,'.bat')+'"';
    AssignFile(f, s3);
    ReWrite(f);
    WriteLn(f, '@echo off');
    WriteLn(f, ':1');
    WriteLn(f, 'Erase '+s1);
    WriteLn(f, 'If exist '+s1+' Goto 1');
    WriteLn(f, 'ren '+s2+' '+s1);
    WriteLn(f, s1);
    WriteLn(f, 'Erase '+s3);
    CloseFile(f);
    ShellExecute(handle,'open',PChar(s3),nil,PChar(ExtractFileDir(ParamStr(0))),SW_HIDE);
http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

CoRe.eXtreem 30. Nov 2003 21:18

Re: Programm Updaten
 
Das ganze kann man aber in das Programm integrieren oder muss man da ne einzelne Batch datei schreiben. Ich hab das mal probiert da kommt IO ERROR 123-

Viele Grüße und Vielen Dank für eure bemühungen! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Seite 1 von 2  1 2      

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