2010-04-01 108 views
5

我正在使用Eclipse开发我的第一个Java应用程序。我最近需要调整通过-Xmx256M传递给JVM分配的内存量。该应用程序目前被封装为一个可运行的jar并使用NSIS进行安装。从NSIS脚本向Java虚拟机传递参数

我有一个问题,一旦它的安装将参数传递给jar文件。这样做的常见做法是什么?以下是我正在做我的NSI文件:

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

这将导致以下被创建为快捷方式目标的窗口:

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" 

UPDATE:的罐子和-Xmx256M订购交换。但问题仍然相同。 jar文件路径中的空格导致问题。我想我需要找到一种在命令中添加引号的方法,如手动更改目标时所示,或者完全改变我的方法!

回答

4

NSIS字符串可以用单引号,双引号或向后单引号引用。你也可以用$ \($ \”等)逃脱

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

你有没有试过保留引号,但逃脱路径分隔符?

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

NSIS不\逃脱,它使用$ \(而且也没有必要逃避\路径中) – Anders 2010-04-02 13:57:09

1

敢肯定你应该把引号包围 “C:\ WINDOWS \ SYSTEM32 \ javaw.exe的”,即使没有空格。