38 votes

Comment sélectionner les fonctionnalités à partir de la ligne de commande

Ceci pourrait être une question naïve. Je dois éditer manuellement un fichier .WXS pour le rendre compatible avec la sélection de fonctionnalités en ligne de commande.

Par exemple, il y a 3 fonctionnalités dans le fichier .WXS.

Maintenant, je veux sélectionner des fonctionnalités en ligne de commande. Par exemple, si je tape "msiexec /i install.msi FEATURE=A", alors "Feature1" et "Feature2" sont installés; si je tape "msiexec/i install.msi FEATURE=B", alors "Feature1" et "Feature3" sont installés. Dans ce cas, "A" correspond à la fonctionnalité 1 et 2; "B" correspond à la fonctionnalité 1 et 3.

Comment accomplir cela dans WIX?

59voto

Wim Coenen Points 41940

La réponse acceptée mentionne déjà la propriété ADDLOCAL, mais semble suggérer que vous ne pouvez sélectionner qu'une seule fonctionnalité. En réalité, vous pouvez sélectionner plusieurs fonctionnalités en les séparant par des virgules comme ceci :

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

ou

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

Autre astuce : vous pouvez découvrir ces noms de fonctionnalités en ouvrant le msi avec orca. Ceci est très utile lorsque vous souhaitez utiliser ces astuces pour créer un bootstrap qui installe certaines fonctionnalités de packages msi de tiers.

0 votes

La commande msiexec que j'ai utilisée était pour la question posée, mais je suis d'accord que vous pouvez avoir plusieurs fonctionnalités à partir de la ligne de commande

0 votes

Merci d'avoir mentionné l'utilitaire Orca.

2 votes

Je mentionnerai une meilleure utilité : InstEd It (instedit.com) qui est gratuite pour la plupart des cas d'utilisation courants

33voto

CheGueVerra Points 3580

Je changerais Feature1, Feature2 et Feature3 en Composants, puis déclarerais quelque chose comme ceci :

Ensuite pour installer soit FeatureA soit FeatureB

msiexec /i install.msi ADDLOCAL=[FEATUREA | FEATUREB]

0 votes

Je suis assez sûr qu'il vaut mieux utiliser ADDDEFAULT que ADDLOCAL, du moins dans ce cas, car la personne posant la question ne précise pas explicitement si elle veut remplacer l'état d'installation de la fonctionnalité par "local" au lieu de laisser la valeur par défaut indiquée par la fonctionnalité elle-même.

11voto

Rob Mensching Points 20732

Il existe un certain nombre de propriétés qui peuvent contrôler les états d'installation des fonctionnalités. Consultez cette documentation du SDK MSI et les liens qui en découlent : http://msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X