如何解决ICE03:WiX中的字符串溢出?

时间:2013-08-19 01:41:11

标签: wix install windows-installer

在我的安装程序中,维护对话框中的功能树控件会发布两个事件,分别将名为DisableInstallBtn的属性设置为0或1。并且DisableInstallBtnInstall按钮的启用/禁用操作使用。它的行为如下:如果所有功能都被“取消选中”,则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文件时,我得到字符串溢出警告。有什么方法可以解决这个问题吗?感谢。

1 个答案:

答案 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)。

否则,您可以随时点击下一步进行验证。