我在Installshield 2012 Spring中使用Basic MSI项目。我在Dialogs部分创建了一个自定义对话框。这个自定义对话框很简单。它不包含任何按钮和1行文本,告诉用户请等待。我希望在我们的安装程序的3个区域中使用它,我们完全沉默,使得它看起来像安装程序什么都不做或崩溃。
我将对话框插入到自定义操作序列列表中,并设置一个事件,当属性设置为FALSE时,它将返回到安装程序。在另一个自定义操作中,我将属性设置为false。我测试了这个行为并且工作正常。
现在解决问题了。我不知道如何在自定义操作序列中重新使用此对话框。我已经尝试使用我发现的sdShowAnyDialog,EnableWindow,EzDefineDialog和WaitOnDialog的installscript示例,我无法让它们显示我的对话框。大部分时间都没有弹出,但在一个案例中,我能够使用sdShowAnyDialog显示一个对话框,但它最终显示了一个完全不同的对话框或说它无法创建对话框。
如果有一种更简单的方法来执行我想要的不涉及installscript或在Dialogs部分中复制对话框,那将是非常棒的。我也不介意使用installscript,但我发现没有关于如何正确执行此操作的非常好的文档,当我尝试示例时,它们似乎永远不会起作用。
答案 0 :(得分:0)
在基本MSI UI中,以下方法可以显示对话框:
另一个对话框控件上的control event。有三种变体:
请注意,需要EndDialog事件来终止对话框的每个序列序列,而不是SpawnWaitDialog案例。请注意,SpawnWaitDialog的一些用法存在问题,但这些用途似乎与成本计算相关,而不是自定义等待方案。
如果我正确理解您的场景,我怀疑SpawnWaitDialog事件方法可能最适合您,但请注意accidentally prevent the SpawnWaitDialog from showing a second time很容易。