从NSIS脚本传递参数到java vm

时间:2010-04-01 19:05:13

标签: java installer nsis

我正在使用Eclipse开发我的第一个Java应用程序。我最近需要通过将-Xmx256M传递给JVM来调整分配的内存量。该应用程序当前打包为可运行的jar并使用NSIS进行安装。

安装后,我将问题传递给jar文件。这样做的常见做法是什么?以下是我目前在我的nsi文件中所做的事情:

CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" "$SYSDIR\javaw.exe" "-Xmx256M -jar $INSTDIR\Foo.jar"

这导致在Windows上创建以下快捷方式:

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar  C:\Program Files\Foo\Foo.jar 

不幸的是,由于C:\ Program Files中的空格,这不起作用,如果我更改手动创建的链接以包含引号一切都很好:

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar "C:\Program Files\Foo\Foo.jar"

更新:交换了-jar和-Xmx256M的排序。但问题仍然存在。 jar文件路径中的空格导致问题。我想我要么找到一种在命令中添加引号的方法,如手动更改目标时所示,或完全改变我的方法!

3 个答案:

答案 0 :(得分:4)

NSIS字符串可以使用单引号,双引号或后向单引号引用。您也可以使用$ \($ \“etc)

进行转义
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" '"$SYSDIR\javaw.exe"' '-Xmx256M -jar "$INSTDIR\Foo.jar"'

答案 1 :(得分:2)

您是否尝试过保留引号但转义路径分隔符?

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar "C:\\Program Files\\Foo\\Foo.jar"

答案 2 :(得分:1)

非常确定你应该在“C:\ WINDOWS \ system32 \ javaw.exe”周围加上引号,即使没有空格。