使用InnoSetup时如何知道静默嵌套安装程序何时完成?

时间:2015-03-30 03:23:15

标签: windows-installer inno-setup silent-installer

我使用InnoSetup创建了一个软件套件安装程序,在执行时

  1. 显示供用户下载/安装的软件列表。
  2. 下载所选软件并以静默方式安装给用户。
  3. 我正在使用 inno-download-plugin 下载软件。

    我在ssInstall中使用以下代码静默安装每个软件:

    ShellExec('', ExpandConstant('{tmp}\MirrorLink.exe'), '/VERYSILENT', '',
        SW_SHOW, ewNoWait, ErrorCode);
    

    此解决方案工作正常,但某些软件需要计算机才能重新启动才能正常工作。因此,如果用户选择了需要重启的软件,我实施了function NeedRestart(): Boolean;来显示重启页面。

    我的问题是,由于我不知道静默安装何时结束,因此当软件处于安装过程中时,我有可能重新启动计算机。我知道我可以在sleep()中使用ssInstall功能,但我认为它不会可靠地运行,因为某些计算机的安装时间可能比其他计算机要长。

    所以我的问题是,是否有更好的方法来检测静默安装是否已完成,以便我可以向用户显示NeedRestart页面?

1 个答案:

答案 0 :(得分:1)

使用ewWaitUntilTerminated代替ewNoWait等待子安装程序完成。

请参阅Pascal Scripting: ShellExec