WiX Toolset v3.11如何判断用户选中的待安装功能?
WiX v3.11 获取Selection Tree中Feature的安装状态
直接对比Feature ID的方式是错误的,因为Miscellaneous并非WiX暴露的属性,未定义的属性会被视为空字符串,空字符串永远不等于"4",所以你的条件始终返回true。
要正确获取Feature的安装状态,有两种可靠方式:
方法1:使用FeatureState函数
FeatureState函数可以返回指定Feature的当前请求安装状态,对应的Windows Installer状态常量数值:
2:INSTALLSTATE_ABSENT(不安装)3:INSTALLSTATE_LOCAL(本地安装)4:INSTALLSTATE_SOURCE(从源运行)
修改你的Publish代码如下:
<Publish Property="INST_MISC" Value="Yes"> <![CDATA[FeatureState(Miscellaneous) = 3 OR FeatureState(Miscellaneous) = 4]]> </Publish>
这段代码会在用户选择本地安装或从源运行该功能时,将INST_MISC设为Yes。
方法2:使用&前缀的Feature动作状态属性
WiX支持用&FeatureId的形式直接访问Feature的动作状态,数值含义和上面一致:
<Publish Property="INST_MISC" Value="Yes"> <![CDATA[&Miscellaneous = 3 OR &Miscellaneous = 4]]> </Publish>
注意:如果你的Feature包含子Feature,需要确保判断的是目标Feature本身的状态,而非父Feature的状态。
内容的提问来源于stack exchange,提问作者Bill Cochell
相关产品推荐
相关产品推荐

