【发布时间】:2011-04-22 13:39:36
【问题描述】:
我正在 NSIS 中编写一个安装程序,它是用 NSIS 创建的另一个安装程序的包装器。 内部安装程序不是我的。它是使用 BioWare Installer 1.03 (NSIS 2.34) 创建的。它可能以某种方式损坏,但我无法修改它!我的安装程序所做的是它只是修改了一些注册表值(否则“内部”安装程序将不会运行),然后执行安装程序,然后覆盖一些文件,然后恢复以前的注册表值。
我的问题:我不知道如何真正等待“内部”安装程序完成!这是因为安装程序首先将其内容解包并创建一个新进程,这就是真正的安装程序。并且代码在第一个过程(解包)完成后立即执行。等待在这里很重要,因为我需要覆盖一些文件。
我已阅读:http://nsis.sourceforge.net/When_I_use_ExecWait,_it_doesn't_wait,但我找不到 NSIS 安装程序的任何开关。
我已经尝试过 ExecWait 和 nsExec::Exec,但它们都不等待真正的安装程序,只是等待第一个进程完成。
【问题讨论】:
-
试试 Inno 设置 - 我发现它更容易使用。
-
感谢您的建议,但不幸的是,Inno Setup 的行为方式似乎相同。我正在使用它的 Exec 函数,它只等待第一个进程完成。我需要一种方法来等待所有进程 - InstallShield 安装程序有一个开关,但是 NSIS(“内部”安装程序是用 NSIS 创建的)呢?
标签: installation nsis