Bei der Deinstallation meiner Anwendung möchte ich das Wix- Setup so konfigurieren , dass alle Dateien entfernt werden, die nach der ursprünglichen Installation hinzugefügt wurden . Es scheint, als würde das Deinstallationsprogramm nur die Verzeichnisse und Dateien entfernen, die ursprünglich aus der MSI-Datei installiert wurden, und alles andere, was später im Anwendungsordner hinzugefügt wurde, belassen. Mit anderen Worten, ich möchte das Verzeichnis bei der Deinstallation löschen. Wie mache ich das?
quelle
</Component>
eine Kompilierung fehlgeschlagen istFound orphaned Component 'MyAppFolder'.
Verwenden Sie das
RemoveFolderEx
Element der Util-Erweiterung in WiX.Bei diesem Ansatz werden auch alle Unterverzeichnisse entfernt (im Gegensatz zur direkten Verwendung von
RemoveFile
Elementen ). Dieses Element fügt der MSI-Datenbank temporäre ZeilenRemoveFile
undRemoveFolder
Tabellen hinzu .quelle
RemoveFile
undRemoveFolder
. Wenn Sie Dateien während eines Upgrades behalten möchten, können Sie nicht alle diese Ansätze verwenden.Zu diesem Zweck habe ich einfach eine benutzerdefinierte Aktion erstellt, die beim Deinstallieren aufgerufen werden soll.
Der WiX-Code sieht folgendermaßen aus:
Der Code für die OnBeforeUninstall-Methode in InstallerCustomActions.DLL sieht folgendermaßen aus (in VB).
quelle
Hier ist eine Variation von @ trondas Vorschlag. Ich lösche eine Datei "install.log", die während der Deinstallation von einer anderen benutzerdefinierten Aktion erstellt wird:
Soweit ich weiß, kann ich "RemoveFile" nicht verwenden, da diese Datei nach der Installation erstellt wird und nicht Teil einer Komponentengruppe ist.
quelle
Dies wäre eine vollständigere Antwort auf den @ Pavel- Vorschlag, für mich funktioniert es zu 100%:
Und unter Produktelement:
Bei diesem Ansatz wird ein Registrierungswert mit dem gewünschten Pfad des Ordners festgelegt, der bei der Deinstallation gelöscht werden soll. Am Ende werden sowohl INSTALLFOLDER als auch der Registrierungsordner aus dem System entfernt. Beachten Sie, dass sich der Pfad zur Registrierung an einer anderen Struktur und an anderen Orten befinden kann.
quelle
Kein WIX-Experte, aber könnte eine mögliche (einfachere?) Lösung darin bestehen, die benutzerdefinierte Aktion "Quiet Execution" auszuführen, die Teil der integrierten Erweiterungen von WIX ist?
Könnte den Befehl rmdir MS DOS mit den Optionen / S und / Q ausführen.
Und die benutzerdefinierte Aktion, die die Arbeit erledigt, ist einfach:
Dann müssen Sie die InstallExecuteSequence wie an vielen Stellen dokumentiert ändern.
Update: Hatte Probleme mit diesem Ansatz. Am Ende wurde stattdessen eine benutzerdefinierte Aufgabe erstellt, dies ist jedoch immer noch eine praktikable Lösung, ohne dass die Details funktionieren.
quelle
cmd.exe
in Ihr Installationsprogramm ein. 2) Sie nehmen während der Skriptgenerierung Änderungen am System vor. 3) Es gibt keine Rollback-Option. 4) Behandelt gesperrte Dateien nicht korrekt