在InstallShield中动态取消ControlEvent

时间:2019-05-09 10:51:25

标签: installshield

我正在使用InstallShield 2013 SP1。在一个对话框中,Next按钮上有以下ControlEvents:

Event     | Argument       | Condition
__________|________________|___________________________
NewDialog | CustomSetup    | CANCEL_NAVIGATION <> "1"
DoAction  | MyCustomAction | _IsSetupTypeMin = "Custom"

这个想法是MyCustomAction做它的事,然后如果应该取消CANCEL_NAVIGATION事件,则将属性1设置为NewDialog。但是,条件是在执行自定义操作之前评估的,因此即使设置了CANCEL_NAVIGATION,仍然会生成新对话框。

如果以后无法评估条件或以任何方式规避此行为,则可以采用其他解决方案,例如在下一个对话框中执行另一个自定义操作以评估属性并重新启动第一个对话框。

禁用Next按钮不是一种选择,因为我的对话框的行为是在按下Next时(如果满足某些条件)启动文件选择窗口,并且仅在此对话框出现时被取消,导航到下一个窗口也应取消。

我已经考虑过在对话框中添加一个按钮来启动文件选择对话框,但是这个答案不会被接受,因为我更希望所描述的行为保持完整。

1 个答案:

答案 0 :(得分:0)

事实证明,我误解了ControlEvents的顺序。由于某些原因,我认为它们是从下到上进行评估的,因为即使在上面配置了DoAction,我的NewDialog仍然得到了评估。切换线路解决了我的问题:

Event     | Argument       | Condition
__________|________________|___________________________
DoAction  | MyCustomAction | _IsSetupTypeMin = "Custom"
NewDialog | CustomSetup    | CANCEL_NAVIGATION <> "1"