Передача аргументов в Java vm из сценария NSIS - PullRequest
5 голосов
/ 01 апреля 2010

Я разрабатываю свое первое Java-приложение с использованием Eclipse. Недавно мне нужно было отрегулировать объем памяти, выделенный путем передачи -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 ]

4 голосов
/ 02 апреля 2010

Строки NSIS могут заключаться в одинарные, двойные или обратные одинарные кавычки. Вы также можете убежать с помощью $ \ ($ \ "и т. Д.)

CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" '"$SYSDIR\javaw.exe"' '-Xmx256M -jar "$INSTDIR\Foo.jar"'
2 голосов
/ 02 апреля 2010

Вы пробовали сохранять кавычки, но избегать разделителей пути?

C:\WINDOWS\system32\javaw.exe -Xmx256M -jar "C:\\Program Files\\Foo\\Foo.jar"
1 голос
/ 02 апреля 2010

Я уверен, что вы должны поместить кавычки вокруг "C: \ WINDOWS \ system32 \ javaw.exe", даже если там нет пробелов.

...