0

在我的安装程序中,维护对话框中的功能树控件发布了两个事件,分别将名为DisableInstallBtn0 或 1 的属性设置为。并由按钮DisableInstallBtn的启用/禁用操作条件使用。Install它的行为如下:如果所有功能都被“取消选择”,则该Install按钮将被禁用。

因此,每个事件(发布元素)都有一个要发布的条件。例如,设置DisableInstallBtn为 1 的事件具有这样的条件:(<![CDATA[(!Feature1=2 OR &Feature1=2) AND ... AND (!FeatureN=2 OR &FeatureN=2)]]>如果您不了解此条件的语法,可以查看http://wix.tramontana.co.hu/tutorial/com-expression-syntax-杂项/表达式语法

问题是这个条件字符串太长,以至于我在编译 .wxs 文件时收到字符串溢出警告。有没有办法解决这个问题?谢谢。

4

1 回答 1

0

WiX 的内置CustomizeDlg(如果您有源代码,位于 src\ext\UIExtension\wixlib 下)已经具有您在其下一个按钮中寻找的功能。只需订阅该SelectionNoItems事件。

<Control Id="Install" Type="PushButton">
    <Subscribe Event="SelectionNoItems" Attribute="Enabled" />
</Control>

SelectionTree控件有很多与之关联的事件。你可以在这里查看它们。

编辑

看来我误解了文档。SelectionNoItems唯一在选择树没有节点时触发,而不是在当前选择没有节点时触发。

从 Windows Installer 3.0 开始,选择树会发布一个DoAction事件,该事件会在您的选择树发生更改时触发。

然后,您可以在自定义操作中检查您的功能选择并设置Control.Attributes下一步按钮的列。您可以在此处查看属性列表及其值(启用等于 2)。

否则,您始终可以在单击下一步时进行验证。

于 2013-08-19T03:52:36.137 回答