Kann ich WiX verwenden, um ein MSI, deren einziger Zweck zu erstellen, ist die Software zu deinstallieren?

StackOverflow https://stackoverflow.com/questions/4379544

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?

War es hilfreich?

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.

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