![]() |
Anwendungsordner löschen
Wie kann ich den Ordner löschen in dem sich die Anwendung befindet, welches dieses Auftrag gibt?
|
Re: Anwendungsordner löschen
Ähm... "Wie säge ich den Ast ab, auf dem ich sitze?"
Gibt vielzählige Möglichkeiten, in den "Wie kann sihc mein Programm selbst aus dem internet updaten" solltest du alle finden. PS: Gehts um nen Uninstaller? |
Re: Anwendungsordner löschen
Selbst löschen geht nur indirekt, am einfachsten über eine Batch File. Ein Batch File hat den Vorteil, dass es sich selbst löschen kann.
|
Re: Anwendungsordner löschen
Sozusagen ;) Weil mein Programm nistet sich auch in die Anwendungsdaten ein ;) Deshalb habe ich sozusagen eine "Selbstzerstörungsfunktion" ;) eingebaut... Nur ist es ja nicht so einfach die Anwendung die läuft zu löschen (PS: Die Uninstaller müssens irgendwie ja können ...)
@ Jelly: Wie sieht eine Batchdatei aus? |
Re: Anwendungsordner löschen
Es ist klar, eine Anwendung kann nicht sofort sein eigenes Programm-Verzeichnis löschen,
denn die EXE-Datei ist ja noch im Zugriff. Deshalb kann das Verzeichnis erst beim Reboot gelöscht werden:
Delphi-Quellcode:
MoveFileEx(PChar(Verzeichnis), nil, MOVEFILE_DELAY_UNTIL_REBOOT);
|
Re: Anwendungsordner löschen
Zitat:
|
Re: Anwendungsordner löschen
Zitat:
Datei loeschen.bat
Code:
Vergiss aber nicht, deine Anwendung nach Aufruf der Batch zu schliessen.
del DeineAnwendung.exe
del loeschen.bat |
Re: Anwendungsordner löschen
Und um den Ordner zu entfernen? (<<< Deldir?)
Kann ich die Batchdatei mit ShellExecute ausführen? (<<< könnt ich testen ;)) |
Re: Anwendungsordner löschen
1. deltree
2. ja 3. ich würd noch n sleep reintun... oder wie heißt das bei batch? EDIT: deltree ist das ganze rekurssiv, del müsste auch mit nem ordner funzen |
Re: Anwendungsordner löschen
Führe mal die "cmd.exe" aus und gebe "help" ein. Dann wirst du über alle Befehle, die es gibt aufgeklärt, auch wie man ein Verzeichnis löscht.
|
Re: Anwendungsordner löschen
Also ich habe da so meine Probleme :P
Das ist meine ".bat" Zitat:
Zitat:
@ DGL: 1. Deltree hab ich net als Befehl 2. k 3. Öhm... ich würde sagen wait oder so, aber ich find da nichts passended |
Re: Anwendungsordner löschen
Du musst die Pfade mit ~ aufteilen. Weiß aber auch nicht, wie man das genau macht :?
|
Re: Anwendungsordner löschen
Zitat:
Delphi-Quellcode:
function GetDOS83(Filename : string) : string;
var DirEntry : TSearchRec ; begin result := '' ; if FindFirst (FFileName,faAnyFile,DirEntry) = 0 then begin result := DirEntry.FindData.cAlternateFileName ; if result = '' then result := uppercase(extractfilename (FFilename)) ; end else Result := '' ; FindClose (DirEntry) ; end; |
Re: Anwendungsordner löschen
Zitat:
Also es kann ja nicht angehen :P Irgendwie müssen das ja die uninstaller auch gebacken kriegen ... |
Re: Anwendungsordner löschen
Zitat:
|
Re: Anwendungsordner löschen
Das isses ja :| Ich weis nicht worans liegt...
Ich habe die "" und die Befehle sind ja an sich auch korrekt :? |
Re: Anwendungsordner löschen
ich glaub hier wurde was mißverstanden.
die letzte Meldung Zitat:
Diese Meldung kommt vom der Console (CMD) und bedeutet nur daß keine weiteren Befehle ausgeführt werden können (welche theoretisch nach dem "DEL self" sein könnten), da die Datei nicht mehr existiert (sie wurde ja gelöscht). Zu den Dateinamen (lang oder kurz): im Normalfall reichen die langen Dateinamen, nur das diese dort bei vorhandenen Leerzeichen im Pfad/Dateinamen mit den " zusammengehalten werden müssen. Das Leerzeichen ist schließlich ein Trennzeichen, womit der Dateiname/Pfad ja sonst in mehrere Parameter aufgesplittet würde. Die Batchdatei zum Löschen darf natürlich auch nicht in dem zu löschendem Pfad liegen, da dieser nicht gelöscht werden kann, wenn noch was drin ist und vorallem die Batchdatei muß schließlich noch existieren (sie kann sich ja erst selber löschen, wenn auch der pfad weg ist. Hier mal ein paar Möglichkeiten: (Codes ohne die grauen Kommentare als C:\Temp\DelApp.bat gespeichert)
Code:
@ECHO OFF
[color=gray]EXE in einer schleife löschen, da diese nicht gelöscht werden kann, wenn sie noch ausgeführt wird. dies ist sozusagen das Slepp um auf die Beendigung der EXE zu warten[/color] :Loop DEL "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)\app.exe" IF EXIST "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)\app.exe" GOTO Loop [color=gray]weitere Dateien löschen[/color] DEL "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)\app.ini" [color=gray]verzeichnis löschen[/color] RD "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)" [color=gray]sich selber löschen[/color] DEL "C:\Temp\DelApp.bat"
Code:
@ECHO OFF
[color=gray]Laufwerk/Verzeichnis wählen[/color] C: CD "\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)" [color=gray]EXE löschen[/color] :Loop DEL "app.exe" IF EXIST "app.exe" GOTO Loop [color=gray]weitere Dateien löschen[/color] DEL "app.ini" [color=gray]verzeichnis löschen[/color] CD .. RD "Neuer Ordner (2)" [color=gray]sich selber löschen[/color] DEL "C:\Temp\DelApp.bat"
Code:
@ECHO OFF
[color=gray]EXE löschen[/color] :Loop DEL "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)\app.exe" IF EXIST "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)\app.exe" GOTO Loop [color=gray]Verzeichnis samt Dateien löschen[/color] DEL "C:\Dokumente und Einstellungen\xZise\Desktop\Neuer Ordner (2)" [color=gray]sich selber löschen[/color] DEL "C:\Temp\DelApp.bat" Zitat:
Also die Batchdatei in das temporäre Verzeichnis und alles von dort aus. [edit] Befehlsanzeige in den Batch abgeschaltet ... sollte vorallem in der Schleife so besser sein ^^ |
Re: Anwendungsordner löschen
[OT]
Wieso ist es eigentlich nötig in Anwendungsdaten etwas reinzuschreiben. Mir geht es schon auf die Nerven, wenn ein Ordner in Eigene Dateien angelegt wird. Außerdem ist der Ordner Anwendungsdaten der größte Ordner (abgesehen von Windows selbst), den ich auf C habe und nicht lösche kann. Wenn jetzt alle kleinen Programme auch schon dort reinschreiben, kann ich bald wohl wirklich die Partition vergrößern :roll: Ich kenne keine Sache, die man nicht ins normale Programmverzeichnis schreiben könnte! [/OT] |
Re: Anwendungsordner löschen
Hallo,
ein Zusatzhinweis für alle Batch-Dateien: Als allererste Zeile sollte eingefügt werden:
Code:
Eine Verwirrung, die bei xZise entstanden ist, liegt mit Sicherheit daran, dass jeder Befehl aus der Batch-Datei zunächst angezeigt wurde (und für ihn so aussah, als ob dies bereits zum Arbeitsergebnis gehören würde). Mit @echo off wird dieses Echo ausgeschaltet; der @ sorgt dafür, dass auch dieser Befehl nicht angezeigt wird. Jürgen
@echo off
|
Re: Anwendungsordner löschen
Zitat:
Siehe dazu auch: ![]() |
Re: Anwendungsordner löschen
@ Nils: Luckie hats gesagt... Schau dir den Artikel an... Übrigens finde ich diese Lösung akzeptabel, wenn es eine passende "Deinstallationsroutine" verfügbar ist. Deshalb habe ich auch A.D.C. (hat sich in Application Manager Professional aufgelöst) entwickelt, damit man wenigstens die Daten löschen kann, wenn man vergist die "Löschroutine" aufzurufen! (Aber anscheind ist die "Anwendungsordner"-Community noch zu groß)....
@ himitsu: Ah.... Danke ^^ Das ist logisch, nur eine Frage: Habe ich immer (auch als Nutzer) schreibrechte auf C:\Temp? PS: Mit "Anwendungsordner" meine ich den Ordner wo die Anwendung ist! Der Ordner in den Anwendungsdaten ist ja nicht das Problem! |
Re: Anwendungsordner löschen
C:\Temp is nur als Beispiel gedacht :stupid:
Welchen du nun nimmst ist ja egal, es muß halt nur ein Ordner mit Schreib-/Lese-/Ausführ-/Löschrechten sein, welcher selber nicht auch noch mit gelöscht werden muß. Und da bietet sich einer der vielen Tempordner nunmal an. :angel: Außerdem weiß ich doch nicht, wo der ich bei dir befindet ... noch bin ich kein allmächtiger Hellseher. :angel: C:\Dokumente und Einstellungen\Baerbel\Lokale Einstellungen\Temp C:\WINDOWS\Temp (jupp, der alte Tempordner existiert och noch) ... Am Besten du ließt dir den aktuellen Tempordner aus. |
Re: Anwendungsordner löschen
Zitat:
@ C:\Windows: ich glaube nicht das ein armer Benutzter darauf Schreibrechte hat... Aber gibts da nicht sio ein Programm,womit ich das testen kann? [edit]Also das ist irgendwie seltsam: Sie sieht die bat aus (Ordner sollte nicht gelöscht werden): Zitat:
2. Meckert er wieder rum ... Zitat:
[edit][quote="himitsu"]ich glaub hier wurde was mißverstanden. die letzte Meldung Zitat:
|
Re: Anwendungsordner löschen
Ich wüsste gerne, woran es liegt, dass die Batch nicht funktioniert?
|
Re: Anwendungsordner löschen
Ich bin ein bisschen am Verzeifeln :|
|
Re: Anwendungsordner löschen
Moin Fabian,
wenn Du Dir mal genau die Hilfe zu IF anschaust (help if im Konsolenfenster), wirst Du feststellen, dass es nicht IF EXISTS sondern IF EXIST heisst, also ohne S am Ende. Damit sich eine Batch-Datei selber löscht kann man übrigens sehr schön Del %0 verwenden (%0 entspricht ParamStr(0) in Delphi) |
Re: Anwendungsordner löschen
Oh no :pale:
Peinlich, peinlich :| Danke Chris ^^ Wegen dem "%0": Danke ;) Aber ich glaube es muss in Anführungszeichen oder? Weil in der Registry muss es z.B. auch so, wenn man Dateiendungen linkt... |
Re: Anwendungsordner löschen
Moin Fabian
Zitat:
|
Re: Anwendungsordner löschen
Moin!
Um auch sicher Schreibrechte auf den Temp Ordner zu haben empfiehlt sich ![]() |
Re: Anwendungsordner löschen
Naja ^^ Auf %Username%\ sollte man auch immer Zugriffsrechte haben :)
|
Re: Anwendungsordner löschen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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 by Thomas Breitkreuz