我有一个安装程序,在显示功能树之前,自定义操作正在检查目录是否存在,如果存在,那么我想为用户提供安装子功能的选项,如果该目录不存在则子功能将不会显示
目前我的自定义操作是将变量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>
答案 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,则会发生这种情况。