我正在尝试运行一个接收参数的JScript(比如cmd参数)。 请考虑以下JScript:
myScript.js:
var args = WScript.Arguments; //get cmd args
WScript.Echo(args[0]); //output the first argument gotten from NSIS
我正在尝试使用以下NSIS脚本:
installer.nsi:
Var /GLOBAL argumentToSendForJScript
StrCpy argumentToSendForJScript "helloFromNSIS"
File 'runme.js'
Exec "wscript.exe C:\myScript.js $argumentToSendForJScript"
问题是,参数没有到达JScript。我怀疑它是由于参数到达wscript.exe
而不是myScript.js
这一事实,因为它可以直接从Windows命令提示符而不是NSIS执行脚本,如下所示:
myScript.js helloFromCMD
有关如何实现这一目标的任何想法?
答案 0 :(得分:1)
WScript.Arguments不是普通的javascript数组,您必须使用(123)
访问这些项目,而不是[123]
。
Section
; Create a dummy script:
InitPluginsDir
FileOpen $0 "$PluginsDir\test.js" w
FileWrite $0 "var args = WScript.Arguments;$\n"
FileWrite $0 "WScript.Echo('length='+args.length, args(0));$\n"
FileClose $0
Var /GLOBAL argumentToSendForJScript
StrCpy $argumentToSendForJScript "helloFromNSIS"
ExecWait '"WScript.exe" "$PluginsDir\test.js" $argumentToSendForJScript'
SectionEnd