![]() |
Beenden, Delete, rename, Run hintereinander ohne Fehler
Hallo
nachdem Download von Update muss ich folgendes machen : 1- Die Anwendung schießen (Die Anwendung schließt sich selbst, wenn die Datei neu.exe gefunden wird)
Delphi-Quellcode:
2- Die Anwendung löschen (durch eine andere Anwendung heisst Liveupdate.exe)
procedure TForm1.Timer1Timer(Sender: TObject);
begin if FileExists(ExtractFilePath(Application.ExeName)+'neu.exe') then Mainform.Close; 3- die herunterladende Datei (neu.exe) umbenennen 4- Die Anwendung ausführen das mache ich fast alle zusamen
Delphi-Quellcode:
Es geht aber vielleicht gibt was alternativ, da könnte es sein dass das nicht klappt und besonderes, wenn die
procedure TForm1.Button1Click(Sender: TObject);
begin DeleteFile('programm.exe'); sleep(1000); RenameFile('neu.exe', 'programm.exe'); sleep(1000); shellexecute(1,'open','"programm.exe"','','',SW_show); Form1.Close; end; Anwendung nicht rechtzeitig geschlossen wird :| |
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Was Du da aufrufst, sind Funktionen mit Rückgabewert, den muss man nur auswerten.
|
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
programm.exe ist die anwendung selbst?
wenn ja, dann wird programm.exe nie beendet sein, bevor diese Befehle ausgeführt sind. |
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Zitat:
|
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Zitat:
[edit] @Thomas: DeleteFile gibt Dir z.B. zurück, ob die datei gelöscht werden konnte, d.h. bei einem Fehler könntest Du hier die weitere Verarbeitung abbrechen. [/edit] |
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Zitat:
|
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Zitat:
und das Sleep ist sinnlos, da sie solange nicht zurückkehren, bis sie fertig sind (egal ob gelösch/umbenannt oder nicht) [add]
Delphi-Quellcode:
var exit: Boolean = false; // auf true setzen um schleife abzubrechen
procedure TForm1.Button1Click(Sender: TObject); begin while not DeleteFile('programm.exe') and not Exit do sleep(50); it not RenameFile('neu.exe', 'programm.exe') then Fehler('Datei nicht umbenannt'); if shellexecute(1,'open','"programm.exe"','','',SW_show) < 32 then Fehler('programm nicht gestartet'); Form1.Close; end; |
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
d.h. solang die Schritt 1 noch nicht fertig ist, machr das Programm die 2. Schritt nicht
Wenn so, dann ist kein Problem mehr Ich muss dann nur auspassen, dass die Anwendung geschlossen werden muss, sonst gehen alle 4 Schritte in die Hose :mrgreen:
Delphi-Quellcode:
var
hWordWindow: HWND; begin hWordWindow := FindWindow (nil,'Programm-Titel'); SendMessage (hWordWindow, WM_CLOSE, 0, 0);// schritt 1 (gibt mir auch was zurück oder nicht ? ? DeleteFile('programm.exe'); //Schritt 2 RenameFile('neu.exe', 'programm.exe'); //Schritt 3 shellexecute(1,'open','"programm.exe"','','',SW_show); //Schritt 4 Form1.Close; end; |
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Ich würde die Variable aber nicht gerade Exit nennen.
[edit] @Thomas: Und wo wertest Du jetzt die Funktionen aus? [/edit] |
Re: Beenden, Delete, rename, Run hintereinander ohne Fehler
Zitat:
Ich meine, es gibt keiner dass das Programm verhindert die Datei zu löschen oder zu umbenennen Firewall kann nicht als Täter sein oder ? Welcher Probleme könnten auftauchen :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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-2025 by Thomas Breitkreuz