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