我目前正在编写一个 nsis 安装程序,我需要由安装程序启动的控制台应用程序的控制台输出。 当 nsExec::ExecToStack 执行时,我收到一条神秘的错误消息(可能是一个数字,但编码错误)
这是 nsExec 代码:
nsExec::ExecToStack $TEMP\MDBS\MDBS.Helper.exe HandleOldMDBS
Pop $0 # return value/error/timeout
Pop $1 # printed text, up to ${NSIS_MAX_STRLEN}
MessageBox MB_OK|MB_ICONINFORMATION "Console Output: $1 Return value: $0"
DetailPrint "Console Output: $1"
DetailPrint "Return value: $0"
控制台应用程序在.Net Framework 4.7.2和任何CPU中编译
我希望对话框包含应用程序的返回代码,在本例中为 0
ASCII/ANSI 文本解释为 UTF-16 通常看起来像中文文本。使用
/MBCS
或 /OEM
强制 nsExec 将 stdout 解释为 ANSI。
nsExec::ExecToStack /MBCS '"$TEMP\MDBS\MDBS.Helper.exe" HandleOldMDBS'
Pop $0
Pop $1