You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup编译器执行预处理器Exec()失败时可否中止编译?

解决方法

你可以通过判断Exec()的返回值,主动触发编译错误来实现中止逻辑,具体有两种常用写法:

写法1:明确检查退出码,输出详细错误信息

// 执行批处理并获取返回值
#dim BuildResult = Exec("\build.bat", null, null, 1)
// 批处理执行成功默认返回0,返回非0代表执行失败;Exec无法启动进程时会返回-1
#if BuildResult != 0
    #error 前置脚本build.bat执行失败,退出码:{#BuildResult},编译中止
#endif

写法2:精简一行写法,利用预处理器Abort函数

#expr Exec("\build.bat", null, null, 1) != 0 ? Abort("build.bat执行失败,中止编译") : 0

相关说明

  • 你之前直接写#expr Exec(...)时,预处理器仅执行了函数调用、没有处理返回值,所以执行错误不会被捕获
  • Exec的返回值规则:
    • 无法启动目标程序时返回-1
    • 成功启动并等待程序退出后,返回程序的退出码(常规脚本/程序执行成功返回0,失败返回非0)

内容的提问来源于stack exchange,提问作者Aaron Cicali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:06:07