Kann ich WiX verwenden, um ein MSI, deren einziger Zweck zu erstellen, ist die Software zu deinstallieren?
-
09-10-2019 - |
Frage
Ich habe Version geliefert 1.0 meine Software mit a-WiX generiert Installer, und jetzt will ich liefern / disseminate Version 1.1. Wenn möglich, möchte ich die Situation zu sagen, die Menschen vermeiden 1.0 manuell zu entfernen, bevor 1.1 installieren.
Allerdings hat ich hatte den InstallScope
zu ändern, ist es von perUser
zu perMachine
aus verschiedenen technischen Gründen zu ändern. Keine große Sache, es sei denn es macht einen Streit zu aktualisieren.
Was ich sehe geschehen ist die gleiche Sache, die diesen Beitrag erwähnt, wobei auch wenn Sie alle richtige Arbeit ein Upgrade zu implementieren, wenn es Sie sehen zwei verschiedene Einträge in der Liste der installierten Programme erledigt ist, ist eine 1,0 und der andere ist 1.1. Und dies verursacht Probleme in der Software.
So ist es erscheinen würde, dass die grundlegenden „die vorherige Version entfernen“ Logik funktioniert nicht hier, so dass ich eine andere Methode muß deinstalliert die vorherige Version zu haben. Ich versuchte, den Weg zu gehen, der aus dem richtigen msiexec /x
Befehl Brennen die Vorgängerversion über einen ShellExecute CustomAction
entfernen, aber wenn ich etwas fehle es gibt keinen Platz in der Sequenz, wo dies, weil Sie aus einer msiexec
Befehl ist Zündung funktionieren würde in dem eines anderen Lauf Mitte.
Dann stolperte ich über Diese Seite die Details ein wenig dokumentierte Verfahren "Chaining" MSI zusammen:
setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe
Hört sich gut an - alles was ich brauche jetzt einige MSI, deren einzige Funktion ist, ist Version 1.0 zu entfernen, und dann kann ich die Kette, die zusammen mit dem alten.
Außer ich nicht viel Dokumentation finden, wie Sie das tun können. In der Tat, in der Theorie, da diese potenziell Software entfernen verwendet werden könnten Sie ursprünglich nicht installieren, ich bin nicht sicher, ob dies aus Sicherheitsgründen auch technisch möglich ist.
Wer weiß, wie ein MSI mit WiX, deren einziger Zweck zu erstellen, ist die Software zu deinstallieren? Oder bin ich angreifen, dieses Problem völlig falsch?
Lösung
Mit dieser Wix die vorherige Version als Teil Ihrer Version 1.1 zu deinstallieren. Ich bin mir nicht sicher, warum Sie an der Kette müssen zusammen die MSIs.
Wie WiX Installer-Upgrade implementieren?
EDIT: ich die Änderung in InstallScope Anforderung verpasst. Also, was wirklich benötigt wird, ist ein Bootstrap-Programm.
ich geschrieben, wie ein Bootstrap-Programm erstellen hier: ich brauche ein WIX Bootstrapper Projekt, die MY-Software installiert und Voraussetzungen
Andere Tipps
Eine Lösung ist es, eine benutzerdefinierte Aktion zu verwenden, die den „msiexec.exe / x“ Befehl ausgeführt wird. Stellen Sie sicher, es ist geplant nach InstallFinalize in InstallExecuteSequence. Außerdem ist es Zurück sollte asyncNoWait (asynchrone Ausführung, warten Sie nicht für eine Rücksendung).
Mit diesen Einstellungen die Deinstallation verwendet einen anderen asynchronen Prozess, den Konflikt zu vermeiden.