如何从批处理脚本的 Exec 调用中获取 ResultCode?

How do I get the ResultCode from Exec call on Batch script?

我的脚本中有以下代码行,它不是直接调用 exe,而是调用一个批处理文件。

Exec(ExpandConstant('{app}\App\bin\migrate.bat'), '', '', sw_show, ewWaitUntilTerminated, ResultCode);

批处理文件看起来像这样(顶部内容主要用于调试目的,但稍后可能包含某种用户交互)。

echo %path%
echo %cd%
migrate.exe Obfuscate.dll /verbose /startupConfigurationFile="..\Web.config
pause

我是否希望从 migrate.exe 和 return 中获取 return 代码作为 ResultCode,就像您通常直接调用 exe 一样,我该怎么做这样做?

我没有使用 Inno-Setup 的经验以及它如何处理这种情况,但是从批处理脚本的角度来看,您通常会做这样的事情(为您的特定示例量身定制):

echo %path%
echo %cd%
migrate.exe Obfuscate.dll /verbose /startupConfigurationFile="..\Web.config
set rc=%ERRORLEVEL%
pause
exit /b %rc%

当然假设 migrate.exe return 成功时为 0,否则为非零,并且 Inno-Setup 的 Exec 调用将此类 return 值解释为 "true" 和"false" 分别(这样做的可能性很大,因为那是 "standard",但是 YMMV)。