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

Это может быть наивный вопрос. Мне нужно вручную отредактировать файл .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". В этом случае "A" соответствует функциям 1 и 2; "B" соответствует функциям 1 и 3.

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

Ответ 1

Я бы изменил 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]

Ответ 2

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

msiexec /i install.msi ADDLOCAL=Feature1,Feature2

или

msiexec /i install.msi ADDLOCAL=Feature2,Feature3

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

Ответ 3

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