Подтвердить что ты не робот

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

Это может быть наивный вопрос. Мне нужно вручную отредактировать файл .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?

4b9b3361

Ответ 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