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

使用NSIS执行Windows命令显示输出时返回0的问题排查

NSIS执行命令获取输出显示为0的问题解决方法

你遇到的问题是没搞清楚nsExec::ExecToStack的栈返回顺序:它会先把命令的退出码压入栈,之后才是命令的标准输出内容。你现在只Pop $0拿到的是退出码0(代表命令执行成功),根本没取到实际输出。

修正后的代码需要先弹出退出码,再弹出真正的输出内容:

nsExec::ExecToStack 'powershell -NoProfile -Command "$(& {$Args[0]})" "where code"'
Pop $1 ; 弹出命令的退出码(0表示执行成功)
Pop $0 ; 弹出命令的实际输出结果
${NSD_SetText} $LocationTextbox "$0"

额外优化建议:你的powershell命令写法可以简化,没必要嵌套$(& {$Args[0]}),直接写成下面这样也能正常获取输出:

nsExec::ExecToStack 'powershell -NoProfile -Command "where code"'
Pop $1
Pop $0
${NSD_SetText} $LocationTextbox "$0"

内容的提问来源于stack exchange,提问作者Promod Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:52:04