2012-07-20 11 views
11

mam jeden setup MSI tak:Jak zrobić głównych ulepszeń podczas korzystania nagrywania/WiX 3.6

<Product Id="*" ... UpgradeCode="4207FF3B-5E0D-4311-9DFC-B41AA8DE2965" /> 
    <MajorUpgrade DowngradeErrorMessage="Can't downgrade" /> 

To działa zgodnie z oczekiwaniami:

  1. Install produktowi
  2. rekompilacji (efektywne generowanie nowy identyfikator)
  3. Uruchomienie nowego pliku msi wywołuje widok zmiany i mogę naprawić lub odinstalować produkt.

Dobrze. Ale potem przychodzi poparzenie.

Stworzyłem najprostszy pakiet, z którego można coś zrobić. Używam standardowego bootrapper i po prostu dodać jeden pojedynczy MsiPackage:

<MsiPackage SourceFile="$(var.Setup.TargetPath)" /> 

Problemem jest to, że po każdym rekompilacji mogę ponownie zainstalować produkt przy zainstalowanym produkcie, bez zmieniania czegokolwiek! Powoduje to duplikowanie wpisów ARP!

Jeśli nie dokonam ponownej kompilacji i uruchomienia pliku exe pakietu dwukrotnie, otrzymam ekran konfiguracji modyfikacji zgodnie z oczekiwaniami. Co mogę zrobić, aby zachować takie samo zachowanie przy wypalaniu, jak w przypadku MSI?

Odpowiedz

7

Zwiększ numer wersji pakietu, a Burn uaktualni poprzednią wersję i usunie ją.

+3

Tak, dziękuję. Ale czy naprawdę nie ma sposobu, aby zapobiec instalacji side-by-side bez zwiększania numeru wersji? Chciałbym zachować to samo, co w pakiecie MSI. –

+2

Aplikacja bootstrapper może zastąpić domyślne zachowanie typu "no-op", zmieniając stan żądania w OnPlanRelatedBundle. –

+0

Co byś zastąpił stan żądania, aby to zadziałało? Obecny? –

Powiązane problemy