Ho un'applicazione con MSI inclusa in un bundle WiX insieme a vari strumenti di terze parti necessari. Ho disabilitato le azioni di modifica e riparazione nel file MSI a come funziona l'applicazione, per richiedere la disinstallazione completa prima di installare nuovamente la stessa versione.Come impedire il bundle WiX con lo stesso UpgradeCode/Versione da installare due volte
Quando eseguo l'MSI separatamente, funziona come previsto: il programma di installazione non può essere eseguito due volte. Lo stesso vale quando si esegue di nuovo lo stesso pacchetto. Ma semplicemente ricostruendo il bundle (usando lo stesso UpgradeCode
e Version
), l'installazione procede invece (molto più velocemente questa volta), e finisco con una voce duplicata tra i programmi installati. Mi piacerebbe davvero impedirlo e far funzionare il pacchetto come MSI.
Ho provato con varie condizioni impostate sul pacchetto; NOT WixBundleInstalled
, WixBundleInstalled != 1
, ecc. Ma nessuno di questi sembra funzionare.
Per riferimento, ecco la dichiarazione bundle:
<Bundle UpgradeCode="{FAF9CBDD-BE89-4B18-9921-FD5B426B5B0C}" IconSourceFile="$(var.SolutionDir)Resources\product.ico"
Name="Product 4.4" Version="4.4.0.0" Manufacturer="My Company" DisableModify="yes" Condition="NOT (WixBundleInstalled = 1)">
Conosco un caso in cui questo può verificarsi quando si installa un msi (non un pacchetto): se 2 msi hanno lo stesso codice di aggiornamento ma sono installati in diversi contesti (uno installa per utente e l'altro per macchina), quindi non ci sarà alcun aggiornamento, cioè avrai 2 voci duplicate. – Brainless
Grazie. Tranne il nostro MSI, c'è un MSI esternamente recuperato (pre-costruito) che includiamo nel pacchetto. Ho provato ad aggiungere 'ForcePerMachine =" yes "' a quell'istruzione 'MSIPackage', ma questo non aiuta. –
è il tuo ID prodotto = "*"? – ColacX