InstallShield中动态取消ControlEvent
Dynamically cancel ControlEvent in InstallShield
我正在使用 InstallShield 2013 SP1。在对话框中,我在 Next
按钮上有以下 ControlEvents:
Event | Argument | Condition
__________|________________|___________________________
NewDialog | CustomSetup | CANCEL_NAVIGATION <> "1"
DoAction | MyCustomAction | _IsSetupTypeMin = "Custom"
想法是 MyCustomAction
执行它的操作,然后如果应该取消 NewDialog
事件,则将 属性 CANCEL_NAVIGATION
设置为 1
。但是,在执行自定义操作之前评估条件,因此即使设置了 CANCEL_NAVIGATION
,新对话框也会生成。
如果之后无法评估条件,或无法以任何方式规避此行为,则可以使用其他一些解决方案,例如在下一个评估 属性 的对话框中执行另一个自定义操作并重新启动第一个对话框。
禁用 Next
按钮不是一个选项,因为我的对话框的行为是在按下 Next
时启动文件选择 window(如果满足某些条件) ,并且仅当此对话框被取消时,导航到下一个 window.
我考虑过在对话框中添加一个按钮来启动文件选择对话框,但这个答案不会被接受,因为我更希望描述的行为保持不变。
事实证明,我误解了 ControlEvents 的顺序。出于某种原因,我认为它们是从下到上评估的,因为即使上面配置了 NewDialog
,我的 DoAction
也会被评估。切换线路解决了我的问题:
Event | Argument | Condition
__________|________________|___________________________
DoAction | MyCustomAction | _IsSetupTypeMin = "Custom"
NewDialog | CustomSetup | CANCEL_NAVIGATION <> "1"
我正在使用 InstallShield 2013 SP1。在对话框中,我在 Next
按钮上有以下 ControlEvents:
Event | Argument | Condition
__________|________________|___________________________
NewDialog | CustomSetup | CANCEL_NAVIGATION <> "1"
DoAction | MyCustomAction | _IsSetupTypeMin = "Custom"
想法是 MyCustomAction
执行它的操作,然后如果应该取消 NewDialog
事件,则将 属性 CANCEL_NAVIGATION
设置为 1
。但是,在执行自定义操作之前评估条件,因此即使设置了 CANCEL_NAVIGATION
,新对话框也会生成。
如果之后无法评估条件,或无法以任何方式规避此行为,则可以使用其他一些解决方案,例如在下一个评估 属性 的对话框中执行另一个自定义操作并重新启动第一个对话框。
禁用 Next
按钮不是一个选项,因为我的对话框的行为是在按下 Next
时启动文件选择 window(如果满足某些条件) ,并且仅当此对话框被取消时,导航到下一个 window.
我考虑过在对话框中添加一个按钮来启动文件选择对话框,但这个答案不会被接受,因为我更希望描述的行为保持不变。
事实证明,我误解了 ControlEvents 的顺序。出于某种原因,我认为它们是从下到上评估的,因为即使上面配置了 NewDialog
,我的 DoAction
也会被评估。切换线路解决了我的问题:
Event | Argument | Condition
__________|________________|___________________________
DoAction | MyCustomAction | _IsSetupTypeMin = "Custom"
NewDialog | CustomSetup | CANCEL_NAVIGATION <> "1"