2011-01-06 10 views
10

Il nostro prodotto ha un programma di installazione MSI (scritto in WiX) che sostanzialmente copia alcuni file in una cartella c: \ ourproduct e installa un servizio Windows "ourwindowsservice".Installa più istanze di un MSI con nome di istanza dinamico

Vorremmo aggiungere il supporto per più istanze del servizio e dovrebbe essere possibile installarle/disinstallarle indipendentemente l'una dall'altra. Simile ad es. a SQL Server, ogni istanza deve avere un nome che può essere passato all'MSI come parametro della riga di comando.

Esempio: esempio "A" => file da copiare "c: \ ourproductA", installare il Service come "ourwindowsserviceA" esempio "B" => copiare i file in "c: \ ourproductB", installare il servizio come " ourwindowsserviceB " ...

Qualche idea?

Instance transformation sembra richiedere un set predefinito e predefinito di istanze.

Grazie

risposta

9

colonna nome della tabella ServiceInstall è il tipo formattato. Ciò significa che è possibile utilizzare le proprietà in fase di esecuzione per guidare il nome.

Alcuni anni fa ho scritto un articolo di blog su più istanze di installazione. Nei commenti qualcuno ha chiesto un numero dinamico di istanze e io parlo di cosa dovrebbe essere fatto. Fondamentalmente dovresti scrivere un bootstrapper.exe con un'interfaccia utente e guidare la creazione di trasformazioni con proprietà uniche. Usando C# e WiX/DTF per il tuo MSI Interop è davvero possibile. Non ho mai sentito il bisogno di farlo davvero. Sono stato perfettamente soddisfatto con Product, Product-1 ... Product-15 e il gioco è fatto. Le scorciatoie devono essere eseguite da un'azione personalizzata perché non supportano il tipo formattato ma INSTALLDIR può essere modificato e i ServiceName supportano formattato.

+0

Grazie, Christopher! Il tuo articolo del blog è ancora online per caso? – Max

+0

http://blog.deploymentengineering.com/2006/10/multiple-instance-msis-and.html e http://blog.deploymentengineering.com/2008/03/installshield-2009-beta-part-i.html –

+0

+1 alla risposta di Chris. A proposito, ero uno di quelli che hanno posto domande su più istanze nei commenti del post di blog citato. :) Grazie ancora, Chris, mi ha aiutato molto! Più tardi ho condiviso la mia esperienza in questo settore qui: http://ysdevlog.blogspot.com/2008/12/multiple-instance-installations-and.html. Se pensi anche agli aggiornamenti tramite patch, potresti trovare interessante leggerlo fino alla fine e prestare particolare attenzione al link che condivido nell'ultimo commento. In bocca al lupo! –

2

Sfortunatamente l'articolo menzionato è corretto, Windows Installer non supporta istanze dinamiche. Anche gli strumenti commerciali che supportano più istanze richiedono la definizione delle istanze dall'inizio. Quindi nel tuo caso dovresti definire manualmente le istanze A, B, C ecc prima di generare l'installer.

Questo perché un prodotto è identificato dal suo ProductCode (tra le altre cose), quindi è necessario applicare una trasformazione al proprio MSI che modifica l'identità. È piuttosto difficile generare trasformazioni in tempo reale perché sono necessari strumenti speciali o API di Windows Installer che in genere non si trovano su un computer dell'utente.

Tuttavia, come menzionato da Christopher, è possibile provare a simulare un'istanza dinamica utilizzando le proprietà di installazione. Queste proprietà possono essere impostate tramite l'interfaccia utente di installazione o un bootstrapper personalizzato.

Problemi correlati