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

标签 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 - 我在目录元素中添加了正确的 ID

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

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

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

不好的部分:条件不起作用。这些文件始终会安装。

我尝试了解为什么我的条件不起作用?它与前面组件中的条件相同。

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

有人有想法吗?

谢谢。

最佳答案

我找到了解决方案。 我没有正确理解将条件与功能一起使用的方法。 我通过以下方式更改条件行:

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

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

我不清楚怎么说:$(var.CheckBoxB3) 不等于 1

<> 不是 workign,因为它位于 XML 内

!意味着另一件事

!=不存在

知道有人吗?

关于WIX - 使用 heat.exe 后 ComponentGroupRef 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29499653/

相关文章:

python,从zip文件制作一个windows msi安装程序

windows - 在 WiX 安装程序中安装 32 位文件和 64 位注册表设置

crystal-reports - 条件子报表 Crystal 报表

arrays - Perl:对数组使用条件

visual-studio-2008 - 使用 WiX、Inno Setup 和 VS2008 自动构建版本号

database - Wix 可以默默地不覆盖数据库吗

WiX - 在安装时设置合并模块目录?

deployment - 使用 Wix 进行有条件安装

installation - 如何在高级安装程序中安装 VC 可再发行组件?

c# - 在 gridview 中绑定(bind)数据时 Eval 中的条件