2013-10-18 10 views
8

Ecco gli scenari.Wix MajorUpgrade problems

1.) Installare 1.0.1.1 quindi l'aggiornamento a 1.0.2.2 ===> Questo metodo funziona bene (come previsto)

2.) Installare 1.0.2.2 poi il downgrade a 1.0.1.1 ===> Questo non funziona (come previsto)

3.) Installare 1.0.1.1 quindi installare 1.0.1.1 ===> Questo va in riparazione/modo di rimozione (come previsto)

4.) Installare 1.0.1.1 quindi installa 1.0.1.2 ===> Viene installato come uno nuovo e mostra il programma due volte in Aggiungi/Rimuovi programma nel pannello di controllo (suppongo che dovrebbe funzionare come 3.) perché, da quanto ho capito, MSI non si cura la quarta parte del prodotto versi on)

Sto facendo qualcosa di sbagliato?

<Product Id="*" Name="My product" Version="$(var.Version)" Language="1033" Manufacturer="My Company" UpgradeCode="MY-UPGRADE-CODE"> 

<Package Description="My product" Comments="Comments" InstallerVersion="200" Compressed="yes" /> 

<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." /> 
+0

Vedi anche questo [domanda relativa] (http://stackoverflow.com/questions/16642518/wix-can-we-upgrade-1-0-0-0-to-1- 0-0-1-mentre-cambia-prodotto-code). – CodeFox

risposta

19

Questo comportamento si comporta come indicato nella documentazione WIX. È necessario impostare la proprietà sottostante su "Sì" nell'elemento MajorUpgrade per gestire questo scenario. Leggi il testo evidenziato per maggiori dettagli.

AllowSameVersionUpgrades (YesNoType)

Se impostata su No (impostazione predefinita), l'installazione di un prodotto con la stessa versione e aggiornare il codice (ma il codice prodotto diverso) è consentito e trattati da MSI come due prodotti. Se impostato su yes, WiX imposta l'attributo msidbUpgradeAttributesVersionMaxInclusive, che indica a MSI di trattare un prodotto con la stessa versione di un aggiornamento principale.

This is useful when two product versions differ only in the fourth version field. MSI specifically ignores that field when comparing product versions, so two products that differ only in the fourth version field are the same product and need this attribute set to yes to be detected.

noti che poiché MSI ignora il quarto campo versione del prodotto, impostando questo attributo yes permette anche declassamento quando i primi tre campi versione del prodotto sono identici. Ad esempio, la versione 1.0.0.1 del prodotto "aggiornerà" 1.0.0.2998 perché sono visti come la stessa versione (1.0.0). Questo potrebbe reintrodurre gravi bug, quindi la scelta più sicura è quella di modificare i primi tre campi della versione e omettere questo attributo per ottenere il valore predefinito di no.

Questo attributo non può essere "sì" quando AllowDowngrades è anche "sì" - AllowDowngrades consente già a due prodotti con lo stesso numero di versione di aggiornarsi a vicenda.

Fonte: WIX Documentation