我有一个基本的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创建的,我没有找到关于它在幕后做什么的好信息。
我在这里遗漏了什么吗?或者我只需要坚持批处理脚本?
答案 0 :(得分:0)
辅助安装程序是否需要提升?您的.nsi中有RequestExecutionLevel admin
吗?
ExecWait
在内部调用CreateProcess
Windows API函数,如果UAC需要提升子进程,它将失败。
如果您要执行需要提升的子进程,则通常建议您的安装程序也需要提升。如果您出于某种原因不想这样做,那么您可以使用ShellExecWait或${StdUtils.ExecShellWaitEx}。