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

StackOverflow https://stackoverflow.com/questions/246329

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top