2017-11-15 6 views
0

Das MajorUpgrade-Element in WiX scheint die bestehende Version zu deinstallieren. Aber ich habe eine Anforderung, bei der ich von 1.0.0 auf 2.0.0 aktualisieren muss, ohne 1.0.0 zu deinstallieren. Aber das bedeutet nicht, dass sowohl 1.0.0 als auch 2.0.0 in den Software-Programmen angezeigt werden. Meine Version 1.0.0 hat eine Datei, einen Registrierungseintrag, einen benutzerdefinierten Windows-Dienst und so weiter. Meine 2.0.0 im Wesentlichen, wird eine vorhandene Datei ändern und eine neue Datei hinzufügen. In unserem Fall ist es möglich, nur solche Änderungen vorzunehmen und trotzdem die Hauptversion zu inkrementieren. Aber ich möchte die Dienste und so weiter nicht deinstallieren und neu installieren. Aber wenn es sich um eine Neuinstallation handelt, müssen alle Komponenten installiert werden. Beispiel: Wenn ein Kunde die Version 7.9.0 installiert hat und auf Version 8.0.0 aktualisieren möchte (technisch gesehen könnte es sich um ein größeres Upgrade handeln, da die Hauptversion aktualisiert oder nur geringfügig aktualisiert wird, da nur inkrementelle Änderungen von Version 7.9.0 auf Version 8.0 möglich sind .0?), Das vollständige Deinstallieren von 7.9.0 kann zu Problemen wie Datenverlust und so weiter führen. Gibt es einen Weg, dies zu erreichen? Wenn ja, kann jemand bitte einige Schritte/Beispiele zur Verfügung stellen oder einige Links zur Verfügung stellen, die das zeigen? Hinweis: Ich bin nicht über Patch sprechen. Ich kann einen Patch installieren. Aber ich bin auch verwirrt zwischen Minor Upgrade und Small Update.WiX Upgrade ohne Deinstallation der bestehenden Version

FireGiant's Tutorial spricht über < Upgrade-> Element mit der Erwägung, dass es viele andere Gegenstände sind, die über die Verwendung von <MajorUpgrade> Element sprechen.

+2

Klingt so, als ob Sie Ihre RemoveExistingProducts-Aktion nach InstallFinalize planen möchten. Auf diese Weise wird Ihr 2.0 MSI "on top" Ihrer 1.0-Installation installieren und dann versuchen, die 1.0-Installation am Ende zu deinstallieren/de-referenzieren. – jbudreau

Antwort

0

jbudreau ist korrekt. Es gibt zwei verschiedene Arten von größeren Upgrades. Das frühe Hauptupgrade deinstalliert die vorhandene Version vor der Installation der neuen Version. Dies ist das Verhalten, das Sie in Ihrem Beitrag erklären.

Sehen Sie sich die Tabelle mit der Ausführungstabelle an und verschieben Sie die RemoveExistingProducts Aktion nach InstallFinalize. Dies wird jetzt die späte Aktualisierung, bei der vorhandene Dateien mithilfe von Komponentenregeln überschrieben und dann alle Dateien entfernt werden, die entfernt werden sollen.

+0

Ich habe mein MajorUpgrade-Element mit Schedule = "afterInstallFinalize", aber immer noch kein Glück. – Ven

Verwandte Themen