Вопрос
Возможно, это наивный вопрос.Мне нужно вручную отредактировать файл .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», то будут установлены «Функция1» и «Функция2»;если я наберу «msiexec/i install.msi FEATURE=B», то будут установлены «Feature1» и «Feature3».В этом случае «А» соответствует функциям 1 и 2;«B» соответствует функциям 1 и 3.
Как это сделать в WIX?
Решение
Я бы изменил 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 с помощью косатка.Это очень полезно, если вы хотите использовать эти приемы для создания загрузчика, который устанавливает определенные функции сторонних MSI-пакетов.
Существует ряд свойств, которые могут управлять состояниями установки компонентов. Ознакомьтесь с документацией MSI SDK и ссылками на нее: http: //msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx р>