如何在WiX的功能中使用条件?

如何在WiX的功能中使用条件?,wix,installation,windows-installer,conditional-statements,Wix,Installation,Windows Installer,Conditional Statements,我正在尝试制作简单的Windows intaller,但我不知道如何处理这个问题。 我有两个特性-特性1和特性2。仅当用户选择安装feature1时,我才希望安装feature2。所以我试着: 非(&;core=“3”) 但如果用户选择feature core,则不会安装feature core\u perf 如何修复此问题?您需要将条件移动到组件定义中,然后使用!(功能状态)而不是&(功能操作),以便在您尝试通过第二次重新运行安装来添加示例时,它可以工作: <Component

我正在尝试制作简单的Windows intaller,但我不知道如何处理这个问题。 我有两个特性-特性1和特性2。仅当用户选择安装feature1时,我才希望安装feature2。所以我试着:


非(&;core=“3”)
但如果用户选择feature core,则不会安装feature core\u perf


如何修复此问题?

您需要将条件移动到组件定义中,然后使用!(功能状态)而不是&(功能操作),以便在您尝试通过第二次重新运行安装来添加示例时,它可以工作:

<Component Id="example1">
    <Condition>!feature1 = 3</Condition>
</Component>

<Component Id="example2">
    <Condition>!feature2 = 3</Condition>
</Component>

<Feature Id="feature1">
</Feature>

<Feature Id="feature2">
</Feature>

<Feature Id="examples">
    <ComponentRef Id="example1" />
    <ComponentRef Id="example2" />
</Feature>

!特征1=3
!特征2=3

您是否考虑过让feature1成为feature2的父项?除非同时安装feature1,否则无法安装feature2。不需要任何条件



严格意义上的“仅当”听起来像功能1和功能2实际上只是一个功能。你真的是说feature2只有在安装feature1的情况下才可用吗?是的,没错。我希望只有在安装了feature1的情况下才能安装feature2。为了解释,我的应用程序有几个不同的功能,然后我在示例部分展示了这些功能的使用示例。我想如果有人选择“feature1”和功能“examples”(由所有功能的示例组成),那么我想安装功能“feature1_examples”。这是在哪里记录的?功能状态=!和功能动作=&。对于某些组件来说,这可能很好,但如果有大量组件,则很难管理。无论是谁设计了这种语法,都需要检查他们的头脑。我真的没有想到今天我会在谷歌上搜索如何指定
不等于
的条件。