WIX: как выбрать функции из командной строки

Это может быть наивным вопросом. Я должен вручную отредактировать файл.WXS, чтобы он поддерживал выбор функций из командной строки.

Например, в файле.WXS есть 3 функции.

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

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

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

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

</Feature>

Теперь я хочу выбрать функции из командной строки. Скажем, если я наберу "msiexec /i install.msi FEATURE=A", то "Feature1" и "Feature2" будут установлены; если я наберу "msiexec/i install.msi FEATURE=B", то будут установлены "Feature1" и "Feature3". В этом случае "А" сопоставляется с характеристикой 1 и 2; "B" соответствует функции 1 и 3.

Как сделать это в WIX?

3 ответа

Решение

Я бы изменил Feature1, Feature2 и Feature3 на Компоненты, а затем объявил бы что-то вроде этого:

<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>

Затем установить либо FeatureA или FeatureB

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

В принятом ответе уже упоминается свойство ADDLOCAL, но, похоже, подразумевается, что вы можете выбрать только одну функцию. Вы можете выбрать несколько функций, разделив их запятыми, как это:

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

или же

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

Еще один совет: вы можете узнать названия этих функций, открыв msi с помощью orca. Это очень полезно, когда вы хотите использовать эти приемы для создания загрузчика, который устанавливает определенные функции сторонних MSI-пакетов.

Существует ряд свойств, которые могут управлять состояниями установки компонентов. Ознакомьтесь с документацией MSI SDK и ссылками на нее: http://msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx

Другие вопросы по тегам