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