从NSIS脚本传递参数到java vm

Cod*_*ddy 5 java installer nsis

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

一旦安装了jar文件,我就会遇到问题.这样做的常见做法是什么?这是我目前在我的nsi文件中做的事情:

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

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

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar  C:\Program Files\Foo\Foo.jar 
Run Code Online (Sandbox Code Playgroud)

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

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar "C:\Program Files\Foo\Foo.jar"
Run Code Online (Sandbox Code Playgroud)

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

And*_*ers 4

NSIS 字符串可以用单引号、双引号或反向单引号引起来。您还可以使用 $\ ($\" 等) 进行转义

CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" '"$SYSDIR\javaw.exe"' '-Xmx256M -jar "$INSTDIR\Foo.jar"'
Run Code Online (Sandbox Code Playgroud)