Mit der folgenden Prozedur kann der User, während mein Programm läuft, ggf. eine neue Programmversion herunterladen; dazu muss das Programm selbst aber zunächst beendet werden.
Mit
Form2.Close; (= die Info-Form mit dem Download-Link zur Setup-Datei)
Form1.Close; (= das Hauptprogramm, aus dem Form2 aufgerufen wird (form2.showmodal:wink:)
geht das aber nicht.
Wie macht man’s richtig?
Gruß
J. Schlör
procedure TForm2.BitBtn2Click(Sender: TObject);
var hpitadresse: string;
begin
if MessageDlg('Vor der Installation einer neuen Version musst du die alte Version de-installieren (s. Deinstallation-Routine in PROGRAMME/...)!' + #10#13 + 'Bitte schließe nach dem Download die Homepage Maschine und de-installiere sie; danach kannst du die neue Version installieren..',
mtConfirmation, [mbNO,mbOK], 0) = mrno then
exit
else
begin
Form2.Close;
Form1.Close;
hpitadresse := '..\download\meinprogrammsetup.exe';
try
ShellExecute(Application.Handle, 'open', PCHar(hpitadresse), nil, nil, SW\_ShowNormal);
except
begin
Application.MessageBox(PChar('Der Start des Browsers ist leider fehlgeschlagen.'),'Fehler',0+16);
end;
end;
end;
end;
Mit der folgenden Prozedur kann der User, während mein
Programm läuft, ggf. eine neue Programmversion herunterladen;
dazu muss das Programm selbst aber zunächst beendet werden.
…
Hallo,
erstens, wieso eigentlich? Wenn nur eine Installationsdatei heruntergeladen wird, besteht ja noch keine Notwendigkeit, das Programm zu beenden, erst wenn die Installation gestartet werden soll.
zweitens, wenn schon, dann muss das Programm zum Download eben ein eigenes Programm (exe) sein, ein Programm kann logischerweise nicht etwas tun und gleichzeitig beendet werden.
das verstehe ich jetzt nicht.
Dein Programm verlangt doch, dass der Benutzer die alte Version deinstalliert.
Wenn du eine automatische Deinstallation / Instalation willst, dann schreibe ein Hilfsprogramm, welches nach dem Download gestartet wird.
Dann kann sich dein Programm selbst beenden. Das Hilfsprogramm deinstalliert, insatalliert, startet dein Programm und beendet sich selbst. Fertig.
Mit der folgenden Prozedur kann der User, während mein
Programm läuft, ggf. eine neue Programmversion herunterladen;
dazu muss das Programm selbst aber zunächst beendet werden.
Mit
Form2.Close; (= die Info-Form mit dem Download-Link zur
Setup-Datei)
Form1.Close; (= das Hauptprogramm, aus dem Form2 aufgerufen
wird (form2.showmodal:wink:)
geht das aber nicht.
Wie macht man’s richtig?
Gruß
J. Schlör
Hallo,
Beim Aufrufen von „ShellExecute()“ muß das Application.Handle mit gegeben werden. Das verursacht, dass die Mainform (Application) auf das SUB-Prozess oder die Child-Form (und/oder die zusynchronisierende Form) warten muß. Wenn die Form geclosed ist, dann ist das Habdle quasi NIL. Also es kann meiner Meinung nach nicht funzt.
Wenn du dein Programm nicht viel ändern will, würde ich empfehlen, dass du die Procedure WINEXEC oder createProcess zunächst aufrufen und dann die Form´s schliessen.
Gruß
K. Le