在我的安装程序中,维护对话框中的功能树控件会发布两个事件,分别将名为DisableInstallBtn
的属性设置为0或1。并且DisableInstallBtn
由Install
按钮的启用/禁用操作使用。它的行为如下:如果所有功能都被“取消选中”,则Install
按钮将被禁用。
因此,每个事件(Publish元素)都有一个要发布的条件。例如,将DisableInstallBtn
设置为1的事件的条件如下:<![CDATA[(!Feature1=2 OR &Feature1=2) AND ... AND (!FeatureN=2 OR &FeatureN=2)]]>
(如果您不理解此条件的语法,则可以检查http://wix.tramontana.co.hu/tutorial/com-expression-syntax-miscellanea/expression-syntax)
问题是这个条件字符串太长,所以当我编译.wxs文件时,我得到字符串溢出警告。有什么方法可以解决这个问题吗?感谢。
答案 0 :(得分:0)
WiX的内置CustomizeDlg
(如果你有源代码,位于src \ ext \ UIExtension \ wixlib下)已经具有你在下一个按钮中寻找的功能。只需订阅SelectionNoItems
活动。
<Control Id="Install" Type="PushButton">
<Subscribe Event="SelectionNoItems" Attribute="Enabled" />
</Control>
SelectionTree
控件有很多与之关联的事件。您可以查看here。
修改强>
似乎我误解了文档。 SelectionNoItems
仅在选择树没有节点时触发,而不是在当前选择没有节点时触发。
从Windows Installer 3.0开始,选择树会发布DoAction
事件,当您的选择树发生更改时会触发该事件。
然后,您可以在自定义操作中检查您的功能选择,并设置下一个按钮的Control.Attributes
列。您可以看到here以获取属性及其值的列表(启用等于2)。
否则,您可以随时点击下一步进行验证。