NSIS ExecWait未启动辅助安装程序

时间:2015-09-16 20:03:26

标签: nsis

我有一个基本的NSIS安装程序,应该调用辅助 - 非NSIS安装程序,如下所示:

Section "Install First" SEC01
    File "WindowsPathToFile\setup.exe"
    DetailPrint "Installing the first Thing"
    ExecWait '"$INSTDIR\setup.exe"'
SectionEnd

NSIS和安装程序不会抛出任何错误 - 但子安装程序永远不会启动或执行(并且永远不会安装应用程序)。

请注意,如果我在批处理脚本中调用“setup.exe”并启动批处理脚本,则确实有效。我只是希望有更优雅的东西(不显示命令提示符),因为我将需要调用几个自定义安装程序。

我认为“ExecWait Doesn't Wait”中详述的ExecWait链问题不会影响我,因为我认为我的(setup.exe)安装程序不会提取辅助安装程序。

setup.exe安装程序是由LabVIEW创建的,我没有找到关于它在幕后做什么的好信息。

我在这里遗漏了什么吗?或者我只需要坚持批处理脚本?

1 个答案:

答案 0 :(得分:0)

辅助安装程序是否需要提升?您的.nsi中有RequestExecutionLevel admin吗?

ExecWait在内部调用CreateProcess Windows API函数,如果UAC需要提升子进程,它将失败。

如果您要执行需要提升的子进程,则通常建议您的安装程序也需要提升。如果您出于某种原因不想这样做,那么您可以使用ShellExecWait${StdUtils.ExecShellWaitEx}