nsExec:: 不使用控制台应用程序?

问题描述 投票:0回答:1

我目前正在编写一个 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中编译

Image of the error message

我希望对话框包含应用程序的返回代码,在本例中为 0

nsis .net-framework-version
1个回答
0
投票

ASCII/ANSI 文本解释为 UTF-16 通常看起来像中文文本。使用

/MBCS
/OEM
强制 nsExec 将 stdout 解释为 ANSI。

nsExec::ExecToStack /MBCS '"$TEMP\MDBS\MDBS.Helper.exe" HandleOldMDBS'
Pop $0
Pop $1
© www.soinside.com 2019 - 2024. All rights reserved.