2009-10-09 6 views
3

J'ai probablement une demande étrange.Wix pour installer plusieurs applications

J'ai développé un msi pour installer deux logiciels. Après le CLUF, un écran avec deux cases à cocher doit apparaître et lors de la sélection de l'une de ces cases ou des deux, les logiciels correspondants doivent être installés.

J'ai utilisé pour installer un seul logiciel plus tôt jamais pour deux.

Je serais obligé pour toutes les pistes.

Répondre

6

L'installateur Windows a un concept de "caractéristiques" qui peut être sélectionné pour l'installation ou omis. Si vous avez déjà créé un programme d'installation fonctionnel, vous avez au moins un élément <Feature> dans vos fichiers WIX.

Créez simplement plusieurs éléments <Feature> puis utilisez <UIRef Id="WixUI_Mondo" /> ou <UIRef Id="WixUI_FeatureTree" /> pour permettre à l'utilisateur de choisir les fonctions qu'il souhaite installer.

+0

Vous pouvez simuler 2 applications en 1 MSI en les divisant en fonctionnalités. Cependant, quand il s'agit d'appliquer des correctifs, vous n'aurez jamais l'occasion de mettre à jour une fonctionnalité, mais pas une autre et ainsi tout le monde s'effondre. –

+0

@David: avez-vous un exemple de la façon dont cela "tombe en morceaux"? Je ne vois pas immédiatement de problème de blocage. N'hésitez pas à bloguer à ce sujet, je me suis abonné à votre flux. –

+0

C'est une très mauvaise idée de la part de l'installateur. Les fonctionnalités sont considérées comme des parties du même programme, pas des programmes séparés tous ensemble. La façon de gérer l'installation de plusieurs programmes serait à travers un chainer ou un bootstrapper. Je mettrais mon argent avec chainer, mais c'est le goût personnel et l'expérience de parler. – Adkins

13

Le regroupement d'applications dans un seul fichier MSI peut sembler une bonne idée. Cela semble intuitivement gentil et simple. Cependant, en parlant de l'expérience du monde réel je finis presque toujours le fractionnement des applications à installer via leurs propres fichiers MSI.

La seule fois il est vraiment sûr de déployer des applications ensemble est quand ils sont garantis:

  1. toujours être utilisés conjointement par les utilisateurs finaux
  2. Toujours sont mis à jour en même temps
  3. Ne grandira pas substantiellement en taille au fil du temps

Et normalement, il est impossible de prédire tout cela. En général, vous obtiendrez rapidement de nouvelles exigences telles que:

Correction de bugs: si une seule application a un bug, la gestion voudra livrer un seul nouveau MSI et laisser l'application 2 intacte et sans qu'il soit nécessaire de faire un tout nouveau QA-run pour les deux applications après l'installation. Cela permet de réduire les risques et de fournir une mise à jour plus petite, également plus rapide à tester et à vérifier. La correction est très compliquée et généralement plus sûre pour les fichiers MSI qui sont aussi simples que possible sans trop de langues, d'actions personnalisées ou de constructions GUI.

Localisation: tout d'un coup vous avez besoin de rendre l'application 1 disponible en italien, l'application 2 n'a pas besoin d'être traduite. Le support de la langue a tendance à augmenter considérablement la complexité d'une installation, sans parler de sa taille. Votre MSI "sympa et simple" est devenu subitement compliqué à maintenir, et léthargique à construire. C'est aussi très pénible si vous avez besoin d'une configuration unique, et vous la traduisez dans plusieurs langues - vous ne pourrez pas compiler la version RTM tant que toutes les mises à jour de langue ne seront pas disponibles. Je peux vous dire que marketing/ventes les gens n'auront aucun concept de retenir la version anglaise jusqu'à ce que toutes les versions localisées soient prêtes.

QA/UAT: si les applications sont grandes, offrant 2 fichiers MSI distincts sera plus facile de répartir l'effort de test entre les différentes équipes d'assurance qualité et d'offrir des mises à jour par nightly builds etc ...

Horaire de publication: le calendrier de diffusion des applications change soudainement - l'application 1 est désormais mise à jour tous les mois, tandis que l'application 2 n'est mise à jour que tous les six mois. Si différents utilisateurs utilisent les applications, comment fournissez-vous les mises à jour? Construire tout dans un MSI et lui donner un nouveau numéro de version seulement pour que les utilisateurs de l'application 2 installent à nouveau la même application?

Appliquer les principes de développement global de cohésion et couplage à des packages de déploiement, et vous vous épargnerez beaucoup d'ennuis. Si les applications actuelles OU à l'avenir peuvent prendre leur propre cycle de vie, divisez leur déploiement immédiatement. Et qui peut voir dans le futur?

Veuillez noter que vous envelopperez généralement plusieurs fichiers MSI dans un programme d'amorçage afin que les utilisateurs n'aient toujours qu'un seul fichier à associer, même si les produits sont installés via des fichiers MSI distincts. Avec l'avènement de Wix pour créer des configurations complexes, il est devenu plus facile de compiler des fichiers d'inclusion Wix qui peuvent être compilés en plusieurs fichiers .MSI. Ceci devient effectivement un type de module de fusion plus flexible. Cela peut simplifier le fractionnement ou la fusion des fichiers MSI dans le futur. See a discussion of this feature here.

Taille de l'installation pure: Il existe certaines limitations en ce qui concerne le nombre de composants et de fichiers que vous pouvez avoir dans un seul MSI. Quelques détails:

Il peut être utile de "décomposer" un énorme MSI en plusieurs MSI liés pour cette raison et d'autres raisons énumérées ci-dessus - dans l'ordre pour faciliter la maintenance (construire et compiler la vitesse, reconstruire juste un des nombreux fichiers MSI, etc ...). Enfin, vous devez vous contenter d'utiliser un seul fichier par composant pour que la mise à niveau et les correctifs fonctionnent correctement. Plusieurs fichiers MSI peuvent être installés en séquence à l'aide de programmes d'amorçage ou d'applications de lancement, tels que Burn from WiX, ou des fonctions dans des outils commerciaux tels que Installshield et Advanced Installer. Here is an answer which touches on this topic. Et juste de tracer dans another answer which is a little bit similar.

+0

Vouliez-vous dire Chainer, au lieu de bootstrapper? – Adkins

+1

Les configurations séparées ont des inconvénients. Avec des configurations distinctes mais très similaires, vous rencontrez des problèmes de double source. Faire la même mise à jour plusieurs fois dans différents endroits. Utilisez le code commun inclus par les deux configurations pour cela, et branchez lorsque la logique d'installation diverge - ce qu'il fera. Attendez-vous à l'inattendu, mais réutilisez ce que vous pouvez aussi longtemps que vous le pouvez et pour l'amour de Dieu, obtenez un système de contrôle de version capable de se ramifier. La gestion a un moyen de tourner les exigences plus rapidement que vous ne pouvez écrire vous-même un code ingérable. –

3

Vous ne pouvez pas installer plusieurs applications à partir d'un seul MSI. Même si vous trouvez un moyen de le faire, vous ne devriez pas. A la place, vous avez des fichiers MSI distincts pour chaque application et utilisez un programme d'amorçage pour les installer. Par exemple. Vous pouvez utiliser Inno Setup pour générer un fichier d'amorçage autonome qui installe les deux fichiers MSI (ainsi que tous les pré-requis requis). Par ailleurs, Wix ne gère pas la création de bootstrappers, vous devez donc l'utiliser conjointement avec un autre outil.

+0

Wix prend désormais en charge les amorceurs avec l'outil [** Graver **] (http://wixtoolset.org/documentation/manual/v3/bundle/). Voici un blog de Rob Mensching lui-même: http://robmensching.com/blog/posts/2009/7/14/lets-talk-about-burn/ –

-2

Vous pouvez créer plusieurs MSI puis les regrouper en 1 MSI. Le MSI "parent" vous permet de choisir l'application à installer, puis exécute simplement ce MSI.

Si vous voulez vraiment 2 applications, il y a des constructeurs d'installateurs non-MSI (comme NSIS) qui vous permettent de faire cela, mais vous devez faire tout le travail vous-même.

+1

* Installations simultanées * est une fonctionnalité ** obsolète ** de Windows Installateur http://msdn.microsoft.com/en-us/library/aa368010(VS.85).aspx –

1

Vous pouvez faire des fenêtres pré imbriquées msi installateur 4.

Mais vous ne devriez pas en tout cas, il a été abandonné pour une raison.

L'API de remplacement consiste à appeler msiembeddedui et à créer un chaine de transaction.

Questions connexes