2010-04-01 16 views
5

Estoy desarrollando mi primera aplicación de Java usando Eclipse. Recientemente necesité ajustar la cantidad de memoria asignada pasando -Xmx256M a la JVM. La aplicación actualmente se empaqueta como un jar ejecutable y se instala con el NSIS.Pasando argumentos a java vm desde el script de NSIS

Tengo un problema al pasar argumentos al archivo jar una vez que está instalado. ¿Cuál es la práctica común para hacer esto? Esto es lo que estoy haciendo actualmente en mi archivo nsi:

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

Esto se traduce en lo siguiente que se está creando como el destino del acceso directo en Windows:

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

Desafortunadamente esto no funciona debido al espacio en C: \ archivos de programa, Si cambio el enlace creado manualmente para incluir cotizaciones de todos es así:

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

ACTUALIZACIÓN: Ordenamiento de-jar y -Xmx256m intercambiar. El problema sigue siendo el mismo sin embargo. Los espacios en la ruta al archivo jar están causando un problema. ¡Creo que necesito encontrar una forma de agregar comillas al comando, como se muestra cuando cambio manualmente el objetivo, o cambio completamente mi enfoque!

Respuesta

4

Las series de NSIS pueden citarse con comillas simples, comillas dobles o comillas simples hacia atrás. También puede escapar con $ \ ($ \ "etc)

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

¿Ha intentado mantener las comillas pero escapando de los separadores de ruta?

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

NSIS no escapa con \, usa $ \ (Y no hay necesidad de escapar \ en las rutas) – Anders

1

bastante seguro de que debe poner comillas alrededor de "C: \ WINDOWS \ system32 \ javaw.exe" a pesar de que no hay espacios.

Cuestiones relacionadas