NSIS用参数执行JScr​​ipt

时间:2014-10-20 20:20:39

标签: nsis wsh

我正在尝试运行一个接收参数的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

有关如何实现这一目标的任何想法?

1 个答案:

答案 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