Frage

ich weiß, ich weiß ... mit Stop WISE. Das ist nicht wirklich eine Option für mich jetzt. Wir haben zu viel auf unserem Teller ein völlig neues Installationsprogramm und ändern unseren gesamten Build-Prozess zu schreiben, das, was getan werden muß, ist würde.

Wie auch immer, das Problem ist, dass unser uninstall EXE nicht selbst löscht bei der Deinstallation. Es befindet sich im Ordner Programme befinden sich in unserer App installiert ist. Nachdem das Deinstallationsprogramm abgeschlossen ist, wollen wir alle entfernten Dateien und die App-Ordner gelöscht. Stattdessen wird das Deinstallationsprogramm bleibt zusammen mit den App-Ordnern, da es nicht selbst scheinen zu entfernen, während es ausgeführt wird.

Dies scheint eine rudimentäre Aufgabe, da alle anderen auf dem Computer installierten Programme ihre uninstallers in ihrem Ordner Programme als gut gelegen haben, und sie werden nach der Deinstallation entfernt, aber ich kann niemanden scheint anders zu finden, mit dem gleichen Problem über Google. Es macht Sinn für mich, dass die Datei nicht gelöscht werden kann, da es zur Zeit in den Speicher geladen wird, aber * jammern Ton * alle anderen tut es ... warum kann ich nicht?

EDIT: Wenn es hilft, ich bin mit Wise Installation Studio 7.0 und das Deinstallationsskript im WiseScript Paketeditor ändern. Der Teil, den Ordner Programm sieht aus wie Delete File(s) %MAINDIR%\*.* entfernt, wo% MAINDIR% der App-Ordner in Program Files ist. Es gibt zwei Optionen für diesen Befehl (beide sind auf.) - Fügen Sie Unterverzeichnisse und entfernt Verzeichnis mit Dateien

War es hilfreich?

Lösung

Also, was ich am Ende tun wurde neu erstellt, was die besseren Installateure tun. Ich habe das Deinstallationsprogramm überprüfen, ob es aus dem Verzeichnis% TEMP% ausgeführt wird, und wenn es nicht ist, ich sage es sich auf den temporären Ordner kopieren und ausführen sich von dort aus. Ich markiere dann die in dem temporären Ordner auf Neustart gelöscht werden, indem sie auf den Registrierungsschlüssel hinzu:

HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

@altie: Ihre Lösung hätte wahrscheinlich auch gearbeitet, aber ich denke, ich mag diese Lösung besser. Es scheint, saubere und robuster. Aber vielen Dank für den Beispielcode geben ... Ich schreibe Batch-Dateien gelegentlich und hatte keine Kenntnis von Looping oder die „Taskliste“ -Befehl. Dies könnte sich als nützlich erweisen in der Zukunft!

Andere Tipps

Wenn Sie nicht einen anderen Weg, es zu tun finden, hier ist ein schmutziger Trick: den letzten Schritt in Ihrem Installateur zu Feuer macht aus einem cmd.exe, dass wartet auf Ihren Wise Prozess zu Ende ist, löscht sie dann

Ein Beispiel, wie dies in einer Batch-Skript zu tun, mit tasklist:

rem Expand variables delayed with !! syntax for for loop
setlocal EnableExtensions EnableDelayedExpansion

rem Create a loop with a label and goto
:loopstart
for /F "delims= " %%a in ('tasklist /FI "imagename eq wiseuninstaller.exe"') do (
   if not "%%a"=="INFO: No tasks are running which match the specified criteria." (
      set stillrunning=no
   ) else (
      set stillrunning=yes

      rem Add a 5 second delay with ping and throw out the output.
      ping -n 5 > NUL 2>&1
   )
)

if "!stillrunning!"=="yes" goto :loopstart

del wiseuninstaller.exe

Ich habe diesen Code nicht getestet oder geprüft es viel auf Syntaxfehler, aber es ist nah. for /? und tasklist /? von der Kommandozeile können Ihnen helfen, herauszufinden, wie diese auf Ihre Bedürfnisse zu optimieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top