Wix - 如果属性值= 0,则禁用要素

时间:2016-03-22 13:02:46

标签: wix

我有一个安装程序,在显示功能树之前,自定义操作正在检查目录是否存在,如果存在,那么我想为用户提供安装子功能的选项,如果该目录不存在则子功能将不会显示

目前我的自定义操作是将变量DROPDLL设置为0(如果目录不存在)或1000(如果不存在)

我不是试图通过以下方式启用/禁用子功能但到目前为止没有运气

<Feature
  Id="ServiceTierFeature"
  Level="1000"
  Title="Service Tier"
  Description="Service Tier"
  ConfigurableDirectory="INSTALLLOCATION"
  Absent="allow"
  AllowAdvertise="no">
  <ComponentGroupRef Id="MyWebSite" />
    <Condition Level ="0">DROPDLL = 0  </Condition>
      <Feature
        Id="WorkQPlugin"
        Level="1"
        Title="V2 WorkQ Plugin"
        AllowAdvertise="no"
        Absent="allow">
        <ComponentGroupRef Id="MyRegistryKeys" />
      </Feature>
</Feature>

有关如何实现这一目标的任何建议吗?

编辑:

以下建议后的代码

<Feature
 Id="WorkQPlugin"
 Title="V2 WorkQ Plugin"
 Level="0">
  <Condition Level ="1">DROPDLL = "1000"</Condition>
  <ComponentGroupRef Id="MyRegistryKeys" />
</Feature>

1 个答案:

答案 0 :(得分:2)

你可能过于复杂 - 看起来你需要一个简单的功能条件,如下所示:

https://www.firegiant.com/wix/tutorial/getting-started/conditional-installation/

它基本上就像例子一样:

<Feature Id='Documentation' Level='0'>
<ComponentRef Id='Manual' />
<Condition Level="1">FILEEXISTS</Condition>

并且您在条件中使用DROPDLL = 1000而不是FILEEXISTS。默认级别为零,这意味着除非级别设置为1,否则不会安装该功能,如果您的DROPDLL为1000,则会发生这种情况。