![]() |
[gelöst] Henne Ei Problem - eigene EXE löschen
Moin !
Mein eigener Installer wird langsam rund doch ich bin gerade mal wieder auf ein Problem gestoßen ... Und zwar habe ich im Anwendungsverzeichnis meinen Uninstaller (Uninstall.exe) liegen. Der löscht auch alles was ich ihm aufgetragen habe, aber er kann sich nicht selber löschen - der Zugriff wird in dem Fall verweigert. Kann mir jemand einen Tip geben wie ich das nun hinbekomme das ich den Uninstaller auch mit löschen kann? |
Re: Henne Ei Problem - eigene EXE löschen
Das Thema gab es hier shcon öfter mal. Meistens kam dabei heraus, dass es am einfachsten ist, eine temporäre BAT-datei zu erstellen, die zuerst das Programm löscht und anschließend sich selbst - Batchdateien können das nämlich im Gegensatz zu kompilierten Programmen.
|
Re: Henne Ei Problem - eigene EXE löschen
Moin !
Zitat:
Oder direkt die BAT starten ? |
Re: Henne Ei Problem - eigene EXE löschen
hallo Moelski,
hatten wir das nicht schonmal? sich selbst löschen kann die EXE nicht, das ginge nur über eine Batchdatei:
Delphi-Quellcode:
natürlich mit den richtigen Laufwerken/Verzeichnissen garniert.
Uninstaler
del Uninstaler.exe Gruß K-H ich bin nicht schnell genug!!! |
Re: Henne Ei Problem - eigene EXE löschen
Es gibt auch eine WinAPI-Funktion, mit der man Dateien zum Löschen markieren kann. Diese werden dann beim Herunterfahren (oder Neustarten) gelöscht.
|
Re: Henne Ei Problem - eigene EXE löschen
versuch mal
1. Programm starten 2. Alte Datei umbenennen 3. Neue Datei erstellen 4. Programm beenden 5. Neues Programm starten 6. Umbenannte Datei löschen |
Re: Henne Ei Problem - eigene EXE löschen
Moin !
Zitat:
|
Re: Henne Ei Problem - eigene EXE löschen
Achso, meinte damit, dass beim nächsten Programmstart die Datei gelöscht wird, hab den Anfangstext nicht richtig gelesen, dacht es geht um ne Live Update Funktion...
Und wenn du die Datei nicht nur umbenennst, sondern verschiebst? Was muss denn sein damit man eine exe nicht löschen kann, exklusiver Zugriff auf die Datei? Wer hat den Zugriff und kann man den exklusiven Zugriff aufheben? |
Re: Henne Ei Problem - eigene EXE löschen
Wenn der Uninstaller in C:\Programme\MyApp\uninstall.exe wohnt, könnte er sich ins Temp-Verzeichnis kopieren am Ende der Deinstallation, die Kopie ausführen und den Pfad des Original-Uninstallers mitgeben (ParamStr(1)). Die Kopie wartet, bis das Original beendet ist, löscht es dann (und das Verzeichnis MyApp) und legt für sich selbst dann mit MoveFileEx() das Löschen beim Neustart fest.
Ist auch nicht 1A, aber schöner als frickeleien mit Batch-Dateien, wie ich finde. |
Re: Henne Ei Problem - eigene EXE löschen
Probiers mal mit ...
Delphi-Quellcode:
function DeleteSelf(): Boolean;
var F : File of Byte; FP, Params: String; const B : String = ':loop'#13#10+ 'del /F "%s"'#13#10+ 'if EXIST "%s" goto loop'#13#10+ 'del /F %s'; begin Result := False; FP := ExtractFilePath( ParamStr(0) ); {$i-} AssignFile( F, FP + '_.bat' ); Rewrite( F ); Params := Format( B, [ParamStr(0), ParamStr(0), FP + '_.bat'] ); BlockWrite( F, Params[1], Length(Params) ); CloseFile( F ); {$i+} if not( IOResult = ERROR_SUCCESS ) then Exit; Result := ShellExecute( 0, 'open', pChar( FP + '_.bat' ), nil, nil, 0 ) > 32; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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