2009-12-10 12 views
5

Sto cercando di trovare una soluzione per il seguente problema:Bootstrapper: Controllare se la versione MSI è installato prima di eseguire

ho numerosi programmi (permette di chiamarli slave) che tutti si basano su un unico programma (master) . Devo distribuire un programma di installazione per ogni slave. Questo programma di installazione deve installare il master.

Desidero essere in grado di eseguire la versione di entrambi i pezzi, in modo che più msi sembri la soluzione giusta, incatenata con un bootstrapper.

Il mio problema è se un programma di installazione slave installa la stessa versione del master che è già installata, il .msi verrà eseguito in modalità di riparazione/rimozione.

Questo è inaccettabile dal punto di vista dell'utente e causerà solo confusione.

C'è un modo per controllare una versione dei campi attualmente installati prima di provare a eseguire l'msi?

Attualmente sto usando WIX's setupbld.exe come bootstrapper.

altre soluzioni molto apprezzate (Ho anche provato moduli di unione senza successo, dal momento che il controllo delle versioni è inutile)

risposta

1

Invece di utilizzare setupbld.exe (che io non so davvero come non riesco a trovare alcuna documentazione) è possibile utilizzare msbuild's generatebootstrapper task. La documentazione di wix copre già come utilizzare questa attività per generare un bootstrapper che installa il framework .NET. Vedi How To: Install the .NET Framework Using a Bootstrapper. Questo fa uso dei pacchetti bootstrapper predefiniti.

Tuttavia, in questo caso sarà necessario anche creare i propri pacchetti bootstrapper . Un modo per farlo è quello di studiare i pacchetti bootstrapper esistenti in C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ (o quelli nello Windows SDK) e leggere lo documentation of the Bootstrapper Manifest XML format. Lo strumento bootstrapper generator potrebbe anche essere utile.

Per determinare se il pacchetto ha bisogno di essere installato, è possibile utilizzare uno dei InstallChecks per impostare una proprietà, e quindi controllare il valore della proprietà in un InstallCondition sotto l'elemento Commands.

Se stai pensando che questo è più difficile di quanto dovrebbe essere — Sono d'accordo, ma è quello che ho usato finora. Ci sono alcune alternative che non ho ancora provato:

  • il infelicemente chiamato dotNetInstaller che è in realtà uno scopo generatore generale programma di avvio automatico.
  • il bootstrapper wix 3.5 burn che non è stato ancora rilasciato. Non sono sicuro se sia ancora in uno stato utilizzabile.
+1

Ho finito con l'uso di dotNetInstaller e ho scoperto che, sebbene non perfetto, è meglio che usare i boostrapper di Microsoft (non riuscivo a farli funzionare come avevo bisogno). Finora tutto ciò che ho provato a fare con dotNetInstaller ha funzionato. Anche se a volte ha bisogno di una piccola guida. – gollumullog

Problemi correlati