2014-10-13 11 views
6

Wer weiß:Force-Deinstallation, bevor sie eine Version mit wix Installateur Installation

  1. Wie kann ich wix Installateur erzwingen jede vorherige Kopie zuvor installiert zu deinstallieren, ob kleinere oder größere, bevor eine neue Version unserer Setup installieren.

  2. Kann 1) nicht ausgeführt werden, wenn ein neues Minor/Major-Setup ausgeführt wird, kann ich zumindest eine Meldung anzeigen, die besagt, dass eine frühere Version erkannt wurde und zuerst deinstalliert werden sollte und das Setup abgebrochen werden sollte?

Danke.

UPDATE:

ich folgend meinen settings.wxi

<Upgrade Id="$(var.UpgradeCode)"> 

    <!-- Populate NEWERPRODUCTFOUND if there is an installed 
     package with the same upgrade code 
     and version is > the version being installed --> 
    <UpgradeVersion 
     Minimum="$(var.CurrentVersion)" 
     IncludeMinimum="no" 
     OnlyDetect="yes" 
     Language="1033" 
     Property="NEWERPRODUCTFOUND" /> 

    <!-- Populate UPGRADEFOUND if there is an installed 
     package with the same upgrade code 
     and the version is between the earliest version defined 
     and the version being installed --> 
    <UpgradeVersion 
     Minimum="$(var.FirstVersion)" 
     IncludeMinimum="yes" 
     Maximum="$(var.CurrentVersion)" 
     IncludeMaximum="no" 
     Language="1033" 
     Property="PREVIOUSVERSIONSINSTALLED" /> 
</Upgrade> 

I definiert habe folgend in MyProduct.wxs

<?define CurrentVersion="5.0.0.18"?> 
<?define FirstVersion="1.0.0.0"?> 
<?define UpgradeCode="c1b1bfa0-9937-49eb-812c-5bac06eff858"?> 

und schließlich, ich habe hinzugefügt habe das zu meinem <InstallExecuteSequence>

<RemoveExistingProducts Before="InstallInitialize" /> 
hinzugefügt

Aber es entfernt immer noch die alte Version, wenn ich meine Version auf 5.0.0.19 erhöhe.

Vielleicht an dieser falsch ich suche, aber in meinen „Programme hinzufügen/entfernen“ Fenstern, sehe ich mein Setup als 5.0.0.18 aufgeführt und ich sehe, sollte einen zweiten Eintrag als 5.0.0.19

Ändere ich den Upgrade-Code jedes Mal, wenn ich meine Version ändere? Ich dachte, ich hätte gelesen, dass dies niemals geändert werden sollte.

Irgendwelche Ideen?

Danke.

+1

Wenn Sie alle möglichen UpgradeCodes und ProductVersions wissen, können Sie nicht Ihre eigene Upgrade-Elemente machen zu lokalisieren und zu aktualisieren, um sie alle? WiX MajorUpgrade ist möglicherweise bereits ausreichend, aber Sie können alles in Upgrade-Elementen auflisten, wenn dies nicht der Fall ist. – PhilDW

+0

@PhilDW Danke für die Rückmeldung. Ich werde weiter darauf eingehen. Ich habe noch nie ein Upgrade durchgeführt und bin gerade dabei, das eigentliche Setup zu beenden, also bin ich auf der Info-Bühne. – Thierry

Antwort

11

Ich fand die Antwort nach viel googeln !! Windows Installer berücksichtigt nicht die 4 Nummer der Version, die ich verwendete, d. H. 5.0.0.18.

Es sieht nur die ersten 3 Sätze der Nummer, die die Versionsnummer machen. Sobald ich meine Version zu 5.0.18.0 zu 5.0.19.0 änderte, funktionierte es sofort mit dem Code, der in der Frage gepostet wurde, und es entfernte die vorherige Version und installierte die neuere Version darüber.

Bitte beachte, dass ich habe tatsächlich den obigen Code entfernt und am Ende mit dem MajorUpgrade statt, da es alle war ich brauchte:

<MajorUpgrade 
    AllowDowngrades="no" 
    AllowSameVersionUpgrades="no" 
    IgnoreRemoveFailure="no" 
    DowngradeErrorMessage="loc.NewerVersionInstalled" 
    Schedule="afterInstallInitialize"/> 

Hope this jemand anderes hilft!

+0

Um klar zu sein, ändern Sie Produktcode * und * Version, richtig? – GTAE86

3

Hier ist die Dokumentation für das AllowSameVersionUpgrades Attribut des Elements MajorUpgrade. Es enthält relevante Informationen. Der Schwerpunkt liegt bei mir.

Wann nein (Standardeinstellung), ein Produkt mit der gleichen Version installieren und aktualisiert Code (aber Code anderen Produkts) ist erlaubt und von MSI als zwei Produkte behandelt.Wenn diese Option auf "Ja" gesetzt ist, setzt WiX das Attribut msidbUpgradeAttributesVersionMaxInclusive, das MSI mitteilt, ein Produkt mit der gleichen Version wie ein größeres Upgrade zu behandeln.

Dies ist nützlich, wenn sich zwei Produktversionen nur im vierten Versionsfeld unterscheiden. MSI ignoriert dieses Feld speziell, wenn Produktversionen verglichen werden, so dass zwei Produkte, die sich nur im vierten Versionsfeld unterscheiden, dasselbe Produkt sind und dieses Attribut auf Ja festgelegt sein müssen, um erkannt zu werden.

Beachten Sie, dass, weil MSI ignoriert das vierte Feld Produktversion, Einstellung dieses Attribut ja auch Herabstufungen erlaubt, wenn die ersten drei Produktversion Felder identisch sind. Zum Beispiel wird das Produkt Version 1.0.0.1 "1.0.0.2998" "upgraden", weil sie als die gleiche Version (1.0.0) gesehen werden. Das könnte schwerwiegenden Fehler wieder einführen, so dass die sicherste Wahl ist, um die ersten drei Versionsfelder zu ändern und weglassen dieses Attributs die Standardeinstellung nicht zu bekommen. Dieses Attribut kann nicht „ja“ seine

wenn AllowDowngrades ist auch „Ja“ - AllowDowngrades bereits ermöglicht es, zwei Produkte mit der gleichen Version Nummer sie zu aktualisieren.

dieses Attribut auf yes Einstellung ist wahrscheinlich nicht, was Sie wollen, aber, weil nach dem dritten Absatz Version 5.0.0.18 als Upgrade über Version 5.0.0.19 gesehen werden würde. Setzen Sie dieses Attribut auf no und verwenden Sie das Feld für die dritte Produktversion, um nur Upgrades zuzulassen.

Verwandte Themen