NSIS提供了比较完善的执行外部程序的接口,比如你要找开一个网页可以使用ExecShello Open http://baidu.com来执行一个网页的打开操作,你也可以用ExecWait 来执行一个程序直到外部程序执行完成才执行下一步操作,但执行命令行的程序有可能会出现黑框,在安装过程中出现黑框是我们封装者和用户都不愿意看到的情况,为此NSIS给我们提供了一个nsExec接口,它可以执行一个基于命令行的程序并且不输出一个黑框。当nsExec::ExecToStack执行失败的时候,它会返回一个"error"在栈顶,当它执行命令超时的时候它会返回一个“timeout”于栈顶,其他的情况它会返回程序的返回值。 Name "nsExec Test"
SetCompressor /FINAL bzip2 OutFile "nsExec Test.exe"
ShowInstDetails show
Section "Silent MakeNSIS" nsExec::Exec '"${NSISDIR}makensis.exe"' Pop $0 # return value/error/timeout DetailPrint "" DetailPrint " Return value: $0" DetailPrint "" SectionEnd
Section "MakeNSIS commands help" nsExec::ExecToLog '"${NSISDIR}makensis.exe" /CMDHELP' Pop $0 # return value/error/timeout DetailPrint "" DetailPrint " Return value: $0" DetailPrint "" SectionEnd
Section "Output to variable" nsExec::ExecToStack '"${NSISDIR}makensis.exe" /VERSION' Pop $0 # return value/error/timeout Pop $1 # printed text, up to ${NSIS_MAX_STRLEN} DetailPrint '"${NSISDIR}makensis.exe" /VERSION printed: $1' DetailPrint "" DetailPrint " Return value: $0" DetailPrint "" SectionEnd |