2010-04-01 3 views
5

Je développe ma première application Java en utilisant Eclipse. J'ai récemment dû ajuster la quantité de mémoire allouée en passant -Xmx256M à la JVM. L'application est actuellement empaquetée en tant que jarre exécutable et installée en utilisant le NSIS.Passer des arguments à java vm depuis le script NSIS

Je rencontre un problème lors de la transmission d'arguments au fichier jar une fois qu'il est installé. Quelle est la pratique courante pour faire cela? Voici ce que je fais actuellement dans mon fichier nsi:

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

Il en résulte ce qui suit en cours de création comme cible de raccourci sur les fenêtres:

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

Malheureusement, cela ne fonctionne pas en raison de l'espace dans C: \ Program Files, Si je change le lien créé manuellement pour inclure des citations tout va bien:

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

MISE à JOUR: Commande de jar et -Xmx256M permuté. Le problème reste le même cependant. Les espaces dans le chemin d'accès au fichier JAR provoquent un problème. Je pense que je dois soit trouver un moyen d'ajouter des citations dans la commande, comme indiqué lorsque je change manuellement la cible, ou changer complètement mon approche!

Répondre

4

Les chaînes NSIS peuvent être entre guillemets simples, guillemets ou guillemets simples vers l'arrière. Vous pouvez également échapper à \ $ ​​($ \ » etc)

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

Avez-vous essayé de conserver les guillemets mais d'échapper aux séparateurs de chemin?

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

NSIS n'échappe pas \, il utilise \ $ (Et il n'y a pas besoin d'échapper \ dans les chemins) – Anders

1

Jolie que vous devez mettre des guillemets autour de "C: \ WINDOWS \ system32 \ javaw.exe", même si il n'y a pas d'espaces.

Questions connexes