WIX - Условие для ComponentGroupRef после использования heat.exe

Внутри моего основного файла .wx есть такие компоненты, как:

  <Component Id="Component1" Guid="FBE06968-502C-4FFB-82F8-A314AD7D5789" Directory="INSTALLFOLDER">
    <Condition>$(var.CheckBoxB3)=1</Condition>
    <File Name="File.dll" Source="$(var.BinDir)File.dll" />
  </Component>

И работает нормально. Файл устанавливается с установленным флажком.

Я решил добавить все файлы из определенного каталога с помощью heat.exe.

1 - Я добавил сгенерированный файл .wxs в свой проект

2 - Я добавил хороший идентификатор в элементы каталога

3 - Я добавил новую функцию внутри той же функции, содержащей мои элементы, вот моя новая функция:

  <Feature Id="ProductFeatureExamples" Title="Examples" Level="1">
    <Condition Level="1">$(var.CheckBoxB3)=1</Condition>
    <ComponentGroupRef Id="ExamplesComponents"/>
  </Feature>

Хорошая часть: все файлы внутри сгенерированного .wx установлены.

Плохая часть: состояние не работает. Файлы устанавливаются всегда.

Я пытаюсь понять, почему мое состояние не работает? Это то же состояние, что и в предыдущих компонентах.

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

У кого-нибудь есть идея?

Спасибо.


person PatrickB    schedule 07.04.2015    source источник
comment
Попробуйте установить уровень функции на 0   -  person Ryan J    schedule 07.04.2015
comment
Я нашел решение.   -  person PatrickB    schedule 07.04.2015


Ответы (1)


Я нашел решение. Я неправильно понял способ использования условия с функциями. Я меняю строку условия следующим образом:

<Condition Level="0">$(var.CheckBoxB3)=""</Condition>

В моем случае это означает: измените эту функцию на уровень 0 (не используйте эту функцию), если флажок не имеет значения (не отмечен).

Мне непонятно, как сказать: $ (var.CheckBoxB3) не равно 1

‹> Не работает, потому что находится внутри XML

! означает другое

! = не существует

Есть идеи?

person PatrickB    schedule 07.04.2015
comment
У вас есть два варианта условия: ‹! [CDATA [$ (var.CheckBoxB3)‹ ›1]]› или $ (var.CheckBoxB3) 1. - person jbudreau; 08.04.2015