WIX - 使用heat.exe后在ComponentGroupRef上的条件

时间:2015-04-07 19:26:14

标签: wix windows-installer conditional-statements heat

在我的主要.wxs中,我有以下组件:

  <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 - 我在Directory元素中添加了好的id

3 - 我在包含我的元素的同一个功能中添加了一个新功能,这是我的新功能:

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

好的部分:生成的.wxs中的所有文件都已安装。

坏的部分:条件不起作用。始终安装文件。

我试着理解为什么我的病情不起作用?它与前面组件中的条件相同。

我不想在生成的.wxs文件中的所有元素中添加条件,因为它们有很多,而且当我需要重新生成文件时它也不是很有用。

有人有想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。 我没有正确理解使用条件和特征的方法。 我通过以下方式更改条件行:

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

对于我的情况,它意味着:如果复选框没有值(未选中),则将此功能更改为0级(不要使用此功能)。

我不清楚如何说:$(var.CheckBoxB3)不等于1

&LT;&GT;不是workign,因为它在XML

!意味着另一件事

!=不存在

有人在想吗?