Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Select Features From Command Line

Tags:

wix

This might be a naive question. I have to manually edit a .WXS file to make it support select features from command line.

For example, there are 3 features in .WXS file.

<Feature Id="AllFeature" Level='1'>

    <Feature Id="Feature1" Level='1'> </Feature>

    <Feature Id="Feature2" Level='1'> </Feature>

    <Feature Id="Feature3" Level='1'> </Feature>

</Feature>

Now, I want to select features from command line. Say, if I type "msiexec /i install.msi FEATURE=A", then "Feature1" and "Feature2" is installed; if I type "msiexec/i install.msi FEATURE=B", then "Feature1" and "Feature3" is installed. In this case, "A" maps to Feature 1 and 2; "B" maps to Feature 1 and 3.

How to accomplish this in WIX?

like image 236
Morgan Cheng Avatar asked Oct 29 '08 10:10

Morgan Cheng


3 Answers

The accepted answer already mentions the ADDLOCAL property, but seems to imply that you can select only one feature. You can actually select multiple features by seperating them by commas like this:

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

or

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

Another hint: you can discover these feature names by opening the msi with orca. This is very useful when you want to use these tricks to create a bootstrapper that installs certain features of thirdparty msi packages.

like image 149
Wim Coenen Avatar answered Nov 07 '22 02:11

Wim Coenen


I would change Feature1, Feature2 and Feature3 to Components, then would declare something like this:

<Feature Id="FEATUREA" Title="Super" Level="1" >
  <ComponentRef Id="Component1" />
  <ComponentRef Id="Component2" />
</Feature>

<Feature Id="FEATUREB" Title="Super1" Level="1" >
  <ComponentRef Id="Component1" />
  <ComponentRef Id="Component3"/>
</Feature>

Then to Install either FeatureA or FeatureB

msiexec /i install.msi ADDLOCAL=[FEATUREA | FEATUREB]
like image 21
CheGueVerra Avatar answered Nov 07 '22 03:11

CheGueVerra


There are a number of properties that can control the install states of Features. Check out this MSI SDK documentation and the links from it: http://msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx

like image 11
Rob Mensching Avatar answered Nov 07 '22 04:11

Rob Mensching