在我的主 .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/