我正在使用 NSIS 为 Windows 制作安装程序,并且有许多用户可以使用命令行指定的自定义安装选项,例如:
installer.exe /IDPATH=c:\Program Files\Adobe\Adobe InDesign CS5 /S
我想做的就是向安装人员展示这些选项。我可以很容易地解析 /?或带有 ${GetParameters} 和 ${GetOptions} 的 /help 参数,但如何实际打印到命令提示符?
NSIS 是一个 GUI 程序,并不真正具有写入 stdout 的能力。
在 XP 及更高版本上,您可以使用系统插件执行此操作:
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
System::Call 'kernel32::AttachConsole(i -1)'
FileWrite $0 "hello"
在
Edit:如果父进程还没有一个控制台,您可以打开一个新控制台
!include LogicLib.nsh
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
System::Call 'kernel32::AttachConsole(i -1)i.r1'
${If} $0 = 0
${OrIf} $1 = 0
System::Call 'kernel32::AllocConsole()'
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
${EndIf}
FileWrite $0 "hello$\n"
但就/而言,它实际上没有任何意义?处理去,你不妨在没有控制台的时候打开一个消息框
!include LogicLib.nsh
StrCpy $9 "USAGE: Hello world!!" ;the message
System::Call 'kernel32::GetStdHandle(i -11)i.r0' ;try to get stdout
System::Call 'kernel32::AttachConsole(i -1)i.r1' ;attach to parent console
${If} $0 <> 0
${AndIf} $1 <> 0
FileWrite $0 "$9$\n"
${Else}
MessageBox mb_iconinformation $9
${EndIf}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)