首页 文章

如何在自定义操作序列中重复使用自定义对话框?

提问于
浏览
0

我在Installshield 2012 Spring中使用Basic MSI项目 . 我在Dialogs部分创建了一个自定义对话框 . 这个自定义对话框很简单 . 它不包含任何按钮和1行文本,告诉用户请等待 . 我希望在我们的安装程序的3个区域中使用它,我们完全沉默,使得它看起来像安装程序什么都不做或崩溃 .

我将对话框插入到自定义操作序列列表中,并设置一个事件,当属性设置为FALSE时,它将返回到安装程序 . 在另一个自定义操作中,我将属性设置为false . 我测试了这个行为,它运行正常 .

现在解决问题 . 我不知道如何在自定义操作序列中重新使用此对话框 . 我已经尝试使用我发现的sdShowAnyDialog,EnableWindow,EzDefineDialog和WaitOnDialog的installscript示例,我无法让它们中的任何一个显示我的对话框 . 大部分时间都没有弹出,但在一种情况下,我能够使用sdShowAnyDialog显示一个对话框,但它最终显示一个完全不同的对话框或者说它无法创建对话框 .

如果有一种更简单的方法来执行我想要的不涉及installscript或在Dialogs部分中复制对话框,那将是非常棒的 . 我也不介意使用installscript,但我发现没有关于如何正确执行此操作的非常好的文档,当我尝试示例时,它们似乎永远不会起作用 .

1 回答

  • 0

    在Basic MSI UI中,以下方法可以显示一个对话框:

    • 引用对话框名称的相应序列(通常为InstallUISequence)中的条目 . 这就是InstallWelcome和InstallProgress的显示方式 .

    • A control event在另一个对话框的控件上 . 这有三种变体:

    • NewDialog事件"navigates"到相邻的对话框,用当前的对话框替换当前的对话框(例如,参见大多数对话框的“下一步”和“后退”按钮),

    • SpawnDialog事件显示子对话框或对话框序列,或

    • SpawnWaitDialog事件,在条件更改之前显示临时对话框 .

    请注意,需要EndDialog事件来终止对话框的每个子序列序列,而不是SpawnWaitDialog案例 . 请注意,SpawnWaitDialog的一些用法存在问题,但这些用途似乎与成本计算相关,而不是自定义等待方案 .

    如果我正确理解你的场景,我怀疑SpawnWaitDialog事件方法可能最适合你,但请注意它很容易accidentally prevent the SpawnWaitDialog from showing a second time .

相关问题