installation - 如何执行另一个 NSIS 安装程序并等待它完成?

标签 installation nsis

我正在 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,但它们都没有等待真正的安装程序,只是等待第一个进程完成。

最佳答案

首先,我从未见过 ExecWait 失败,但它只会等待一个子进程,而不是该子进程的子进程。所以链中的每个进程都需要等待它的 child 。如果“中间”进程坏了,试试http://nsis.sourceforge.net/ExecWait_and_waiting_for_child_processes_with_Job_Objects

对于 ExecWait,树看起来像:

  • NSIS1.exe: ExecWait NSIS2.exe
    • NSIS2.exe:ExecWait RealSetup.exe
      • RealSetup.exe: ...

你的描述有点不清楚,你能确认我明白了大概意思吗?

如果您找不到 NSIS 的开关,则表示您没有 RTFM :)

关于installation - 如何执行另一个 NSIS 安装程序并等待它完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885327/

相关文章:

在 Kamailio 上安装 MySQL

android - 阻止包安装

windows - "Installation failed due to the absence of a ServiceProcessInstaller"问题

nsis - 为私有(private)和公共(public)配置文件添加 NSIS 防火墙异常(exception)

mysql - 想要在 NSIS 中创建具有完全权限的 mysql 用户

nsis - 如何检查 NSIS setup.exe 中包含哪些文件?

visual-studio - "Please wait while Windows configures Microsoft Visual Studio 2008"

mongodb - 安装 parse 时我是否需要安装 mongodb-runner 甚至认为 mongodb 已经安装

NSIS 无人值守选项