如何在nsis中获取其他应用程序的退出代码

Posted

技术标签:

【中文标题】如何在nsis中获取其他应用程序的退出代码【英文标题】:how to get the exit code of other application in nsis 【发布时间】:2012-01-30 10:35:49 【问题描述】:

在我的 .nsi 文件中,我正在调用 ExecWait '"$INSTDIR\application.exe" ' $0 。在 application.exe 中,我返回成功和失败的退出代码。如何在 .nsi 文件中捕获这些退出代码。

【问题讨论】:

【参考方案1】:

如果执行ExecWait出错,则传入的用户变量的内容是未定义的。

要简单地检查程序是否正确执行,请检查错误标志。 (顺便说一句,NSIS 预计成功为零,错误为非零)

ClearErrors
ExecWait '"$INSTDIR\application.exe"'
IfErrors 0 noError
; Handle error here
noError:

【讨论】:

【参考方案2】:

应用程序的退出代码将存储在作为第二个参数传递给 ExecWait 的变量中,在您的示例中为 $0。

http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.1.4

【讨论】:

我将整数 1 作为成功传递,整数 2 作为失败传递,但是当我在 ExecWait 代码之上执行时,我总是得到 0 作为它的值。你能告诉我我应该如何在应用程序中发送返回值(C++ 代码) 我不是 c++ 专家,但我想使用返回函数是指定退出代码的方法 我不需要确切地知道 C++,任何其他编程语言也可以。我从我的应用程序的功能返回错误代码。我在我的 .nsi 文件中调用该应用程序,但没有收到我发送的错误代码。请帮帮我 你能粘贴一段你的 c++ 程序的main() 的摘录吗?基本上,在代码的末尾,如果你放了一个return 42;,那么应该在你给ExecWait的变量中捕获42个值

以上是关于如何在nsis中获取其他应用程序的退出代码的主要内容,如果未能解决你的问题,请参考以下文章

NSIS 构建不会在 Windows 上安装 Electron 应用程序。安装程序静默退出并产生 1620 错​​误

使用 NSIS 的 ExecDos 插件获取批处理脚本 exitCode

NSIS 卸载程序权限级别

OSX 内置强制退出应用程序如何获取其应用程序列表?

向 NSIS 卸载程序欢迎页面添加复选框

如何获取其他应用的通知图标?