AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [gelöst] Henne Ei Problem - eigene EXE löschen

[gelöst] Henne Ei Problem - eigene EXE löschen

Ein Thema von moelski · begonnen am 2. Jun 2009 · letzter Beitrag vom 4. Jun 2009
Antwort Antwort
Seite 2 von 4     12 34   
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 16:48
Moin !

Das geht schon ganz gut. Aber hat immer noch einen Haken ... Das Verzeichnis bleibt stehen.
Ich habe mal versucht das hier noch an die BAT anzuhängen:
Delphi-Quellcode:
             'cd ..'                   + #13#10+
             'RD "' + ParamStr(0) + '"' + #13#10 +
aber das bringts nicht.

In Summe schaut das nun so:
Delphi-Quellcode:
  BatText := ':loop'                   + #13#10+
             'ping localhost'          + #13#10+
             'del /F "%s"'             + #13#10+
             'if EXIST "%s" goto loop' + #13#10+
             'del /F "%s"'             + #13#10+
             'cd ..'                   + #13#10+
             'RD "' + ExtractFilePath(Application.ExeName) + '"';
Den Ping habe ich reingenommen damit die CPU Last im Rahmen bleibt.
Aber das RD zeigt keine Wirkung.

EDIT:
'RD "' + ParamStr(0) + '"' War natürlich ein Fehler. Geht aber dennoch nicht.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 16:54
Warum ParamStr(0) ?
Bei folgender Anwendung - test.exe, die sich in C: befindet, liefert ParamStr(0) folgendes zurück:
C:\test.exe - RD aber hingegen löscht nur Ordner..

Da ist was schiefgelaufen

MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 16:57
Moin !

Drum hab ich ja auch sofort mein Post korrigiert auf ExtractFilePath(Application.ExeName)

Aber es geht auch damit ned.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 16:59
Zitat:
Drum hab ich ja auch sofort mein Post korrigiert auf ExtractFilePath(Application.ExeName) Wink
Wobei man statt Application.Exename natürlich ParamStr(0) nehmen könnte
Markus Kinzler
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 17:01
Ah jetzt verstehe ich das ...

Wenn ich die Batch lösche von der Platte, dann kann der Command Prozessor auch nicht mehr die nächsten Befehle lesen und gibt den Fehler aus "Die Batchdatei kann nicht gefunden werden.".

Also müsste man die Batch im Programm Root ablegen (c:\programme z.B.) und von dort laufen lassen. Und erst ganz zum Schluss die Batch löschen ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 17:09
Wo diese genau liegt sollte egal sein. Hauptsache du hast dort Schreibrechte und deren Löschung ist der letzte Schritt
Markus Kinzler
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 17:11
Zitat von moelski:
Also müsste man die Batch im Programm Root ablegen (c:\programme z.B.) und von dort laufen lassen.
Auch wenn zu erwarten ist, das ein User mit Admin-Rechten deinstalliert, muss das nicht sein.

Vielleicht die Batch-Datei in den Temp-Ordner... dort wird sie dann irgendwann auch gelöscht, wenn sie durch einen Fehler als Leiche zurück bleibt.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#18

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 17:17
Moin !

Hmm das geht aber dennoch nicht. Das Verzeichnis bleibt:
Delphi-Quellcode:
function DeleteSelf(): Boolean;
var
  F : File of Byte;
  FP,
  Params : String;
  BatText : String;
begin
  BatText := ':loop'                   + #13#10+
             'ping localhost'          + #13#10+
             'del /F "%s"'             + #13#10+
             'if EXIST "%s" goto loop' + #13#10+
             'RD "' + ExtractFilePath(ParamStr(0)) + '"' + #13#10 +
             'del /F "%s"'             ;

  Result := False;
  FP := 'C:\Program Files\'; //ExtractFilePath( ParamStr(0) );
  {$i-} 
  AssignFile( F, FP + '_.bat' );
  Rewrite( F );
  Params := Format( BatText, [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, 1 ) > 32;
end;
Ich habe das Verzeichnis für die BAT mal hart kodiert.
Aber das Verzeichnis bleibt bestehen wenn ich es aus dem Programm raus starte.
Starte ich die Batch alleine, geht es sauber.
Merkwürdig ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#19

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 17:37
Also der andere hier vorgeschlagene Weg würde ich bevorzugen... Also den Uninstaller ins Temp-Verzeichnis kopieren und mit zu löschendem Pfad als Parameter aufrufen. Du hättest wesentlich mehr Kontrolle über den Löschvorgang.

Den Uninstaller im Temp-Verzeichnis dann mit DeleteSelf löschen... wenn das schief geht, liegen die "Reste" am richtigen Ort.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#20

Re: Henne Ei Problem - eigene EXE löschen

  Alt 2. Jun 2009, 18:05
Hmm.. hat das mit dem MoveFileEx() denn irgendwelche Nachteile oder so? Wenn ich das mit der .bat sehe da bekomme ich fast - entschuldigung - das Grauen...

Und was mir noch einfällt, auf keinen Fall den Programm-Ordner einfach so löschen. Man sollte erst vergleichen, ob Dateien im Programmverzeichnis liegen, die der Benutzer nachträglich angelegt hat (nicht von dem Installer installiert). Da habe ich mir mit einer eigenen Deinstall-Routine selbst schon mal stark ins Knie geschossen...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.
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