NSIS:ExecWait如何处理exe崩溃的问题

时间:2014-08-01 07:16:21

标签: c++ windows nsis

我有一个需要VC++环境运行的exe,否则会崩溃。

如果我在非VC ++环境中,从命令行或从C ++代码CreateProcess函数运行它,它显然会崩溃并且系统错误消息如下所示

enter image description here

但是当我在NSIS脚本中从ExecWait执行它时,它只是执行它。 exe必须仍然崩溃,但它没有显示任何错误消息。

如果我正确ExecWait内部使用CreateProcess功能。那为什么会有这种差异?

CreateProcess函数中是否有任何标记需要传递才能获得此行为?

2 个答案:

答案 0 :(得分:3)

NSIS没有传递任何特殊标志:

StartUp.cb=sizeof(StartUp);
if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &StartUp, &ProcInfo)) ...

但在达到这一点之前,SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS);可能会影响事情。

要记住的另一件事是NSIS脚本中的SetOutPath指令也会更改进程工作目录,因此如果将其设置为存在这些dll的路径,则子进程应该将它们接收还有...

答案 1 :(得分:0)

有缺陷的假设。

应用程序不会崩溃。它无法启动。

它不需要在VC ++中运行,它只需要有一个标准的DLL。 NSIS可能需要相同的DLL,并且 附带该DLL。