2010-04-01 6 views
5

Eclipse를 사용하여 첫 번째 Java 응용 프로그램을 개발 중입니다. 최근에 -Xmx256M을 JVM에 전달하여 할당 된 메모리 양을 조정해야했습니다. 응용 프로그램은 현재 runnable jar로 패키지되어 NSIS를 사용하여 설치됩니다.NSIS 스크립트에서 java vm에 인수 전달

jar 파일에 인수를 전달하면 문제가 발생합니다. 이 작업을 수행하는 일반적인 관행은 무엇입니까? 여기에 내가 현재 내 NSI 파일에 뭘하는지입니다 :

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

을 불행하게도이 공간으로 인해 작동하지 않습니다

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

이 창에 바로 가기 대상으로 생성되는 다음과 같은 것이 결과 C에서 : 나는 따옴표를 모두 포함하는 수동으로 생성 된 링크를 변경하는 경우 \ 프로그램 파일은 잘 :

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

UPDATE : -jar와 -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

1

공백이 없어도 "C : \ WINDOWS \ system32 \ javaw.exe"를 따옴표로 묶어야합니다.