2010-09-01 64 views
0

如何显示,请等待对话框,而EXEC()静默地运行另一个应用程序。如何在EXEC()函数中显示请等待对话框

+0

你的意思是在PHP中,因为你的标签是inno-setup。请添加更多细节。 – 2010-09-01 13:18:12

+0

@JapanPro:我没有看到这与PHP有什么关系。 – 2010-09-02 21:04:02

回答

1

你真的需要它成为一个消息框吗?正如您可能知道的那样,您可以在安装过程中运行外部* .exe,并同时显示自定义状态消息。 (状态消息将在安装过程中的正常进度标签上。)

我有安装产品A的setup.exe。此setup.exe包含setup2.exe文件,用于设置产品B. setup.exe在安装产品A期间将setup2.exe复制到Program Files文件夹。当所有文件都被复制后,setup.exe会在后台启动setup2.exe。为了达到这个目的,我做了

[Run] 
Filename: "{app}\setup2.exe"; StatusMSG: "Installing Product 2..."; Parameters: "/VERYSILENT /SUPPRESSMSGBOXES" 

在setup.iss(编译为setup.exe)。 setup2.exe也是Inno Setup安装程序,因此参数“/ VERYSILENT/SUPPRESSMSGBOXES”将使产品2的安装无声。在此设置期间,setup.exe将显示消息“安装产品2 ...”。

如果你确实需要一个消息框来弹出状态消息,你将不得不求助于Pascal脚本。

+0

谢谢,我使用EXEC()函数,可以以某种方式显示状态信息与帕斯卡? – Tom 2010-09-02 06:21:26

+0

@Tom:你真的需要使用'Exec'函数吗?为什么不能使用'[Run]'项目呢?我能想到的一个原因是你需要有条件地执行程序,也就是说,如果ShouldExecute then Exec(...);',其中'ShouldExecute'是一个布尔值函数。但'[Run]'项目也可以是有条件的;只需添加'Check:ShouldExecute'即可。请参阅http://www.jrsoftware.org/ishelp/topic_scriptcheck.htm – 2010-09-02 20:41:48

2

您可以使用ProgressOutputWizardPage,它对我来说工作得很好,这并不完全复杂。您可以参考CodeDlg.iss示例。