Как я могу отключить компонент Wix, когда выбрана функция? - PullRequest
1 голос
/ 07 октября 2011

В Wix легко включить компонент при выборе функции. Я хочу сделать противоположное тому, где компонент будет установлен, если не выбрана данная функция. Причина в том, что компонент выполняет изменение конфигурации, которое не требуется, если выбрана данная функция.

Неудачные эксперименты:

Я пытался использовать условия в компоненте:

<Component ...>
    <Condition>&Feature = 3</Condition>
    ...
</Component>

Это не работает, потому что , по-видимому, состояния объектов не рассчитываются в точке, где оцениваются условия компонента .

Я также пытался использовать настраиваемое действие, установленное для запуска перед CostFinalize, чтобы задать свойство, которое можно протестировать в условии компонента. Это также не сработало:

<Custom Action="Transfer_Feature_State" Before="CostFinalize" />
<Custom Action="Transfer_Feature_State_Property" Before="MtpWeb_Features_LabManager" />
<Custom Action="Transfer_Feature_State_Feature" Before="MtpWeb_Features_LabManager" />

Когда пользовательское действие выполнялось, состояние объекта все еще устанавливалось как -1, поэтому состояния объекта не рассчитывались до CostFinalize.

Есть ли способ отключить компонент на основе выбора функции?

1 Ответ

3 голосов
/ 07 октября 2011

Компоненты организованы в функции. Это означает, что по умолчанию все компоненты в компоненте установлены. Если вы не хотите, чтобы компонент устанавливал компонент, вы можете убедиться, что этот компонент не включен в этот компонент.

То, что вы действительно хотите, это взаимоисключающие функции. По сути, компонент, содержащий компонент, может быть установлен только в том случае, если другая функция не установлена, и наоборот.

Это не поддерживается установщиком Windows, поэтому это можно сделать только с помощью специального действия. В основном, когда выбрана данная функция, вы можете использовать функцию MsiSetFeatureState , чтобы убедиться, что другая функция, которая содержит ваш компонент, не установлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...