2013-08-19 37 views
0

在我的安装程序中,维护对话框中的功能树控件发布了两个事件,分别将名为DisableInstallBtn的属性设置为0或1。并且DisableInstallBtnInstall按钮的启用/禁用操作的条件使用。它的行为如下:如果所有功能都被取消选择,则Install按钮将被禁用。如何解决ICE03:WiX中的字符串溢出问题?

因此,每个事件(发布元素)都有一个要发布的条件。例如,设置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

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

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

+0

嗯..看来SelectionNoItems事件只有在*选择树(空树)中没有节点*时才被发布,而不是树中没有选定的项目。不是吗? – sky

+0

@sky你说得对。对于那个很抱歉。我用另一个解决方案更新了我的帖子。 – Netfangled

相关问题