gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:11:19 28 4
gpt4 key购买 nike

我正在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com