Quindi, ho un servizio Windows che può avere istanze multiple installate su un singolo server. Il programma di installazione deve essere in grado di aggiornare una singola istanza. Il programma di installazione utilizza Instance Transforms, ma non sono sicuro su come ottenere gli aggiornamenti principali funzionando come vorrei.WiX - Esecuzione di un importante aggiornamento su un'installazione multiistanza
Per un importante aggiornamento per il lavoro, la mia comprensione è che dovrei avere la sostituzione del codice, in modo da istanze vengono definite in questa forma:
<Instance ProductCode="*"
UpgradeCode="{SOMEGUID}"
ProductName="Instance 1"
Id="Instance1"/>
MSI può essere lanciato per installare una nuova istanza da:
msiexec.exe /i "installer.msi" TRANSFORMS=:Instance1 MSINEWINSTANCE=1
Tuttavia, dopo una lunga ricerca l'unico modo che ho trovato per eseguire un aggiornamento su un caso specifico è questo formato:
msiexec.exe /i "installer.msi" /n {PRODUCTCODE} REINSTALL=ALL REINSTALLMODE=vamus
Il problema con questo è se il codice prodotto viene generato automaticamente per gli aggiornamenti principali, quindi non so cosa sia, quindi non posso passare agli argomenti del comando.
C'è un modo per avviare un aggiornamento utilizzando l'UpgradeCode o l'InstanceID dell'istanza o ProductCode? Dal momento che entrambi rimarranno statici. In alternativa, posso lanciare msi senza argomenti, scegliere un'istanza esistente (tramite il registro di controllo) nella finestra di dialogo dell'interfaccia utente e impostare le proprietà appropriate per forzare l'msi in modalità di aggiornamento per quell'istanza?
È possibile trovare questo utile: http://sklyarenko.net/blog/2011/09/14/revisited-multiple-instance/ –
Mi sembra che una volta installata ciascuna istanza, si tratti di un prodotto con un codice prodotto .Se stai facendo un aggiornamento, il tuo nuovo prodotto deve solo eseguire un noioso aggiornamento principale e compilare la sua tabella di aggiornamento con le cose che sostituiranno qualsiasi prodotto precedente che dovrebbe sostituire. Non che io sappia molto sulle istanze, ma hai provato l'approccio convenzionale all'uso delle tabelle di aggiornamento che fanno sì che la tua nuova istanza aggiorni ciascuna delle tue vecchie istanze. Stai dicendo che non è possibile aggiornare singolarmente ciascun prodotto perché tutti condividono lo stesso codice di aggiornamento? Stessa versione? – PhilDW
Solo per farti sapere che puoi ottenere un ** elenco completo ** di ** codici prodotto **, ** codici di aggiornamento ** e ** nomi prodotto ** su un dato computer tramite PowerShell: [** Come può Trovo il codice di aggiornamento per un file MSI installato? **] (https://stackoverflow.com/questions/46637094/how-can-i-find-the-upgrade-code-for-an-installed-msi-file/46637095 # 46637095). –