2010-04-01 5 views
5

Ich entwickle meine erste Java-Anwendung mit Eclipse. Ich musste vor kurzem die Menge des reservierten Speichers anpassen, indem ich -Xmx256M an die JVM übergab. Die Anwendung wird derzeit als ausführbare JAR-Datei bereitgestellt und mithilfe von NSIS installiert.Argumente an java vm vom NSIS-Skript übergeben

Ich habe ein Problem beim Übergeben von Argumenten an die JAR-Datei, sobald sie installiert ist. Was ist die übliche Praxis dafür? Hier ist, was ich gerade in meinem NSI-Datei zu tun:

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

Daraus ergibt sich die folgende auf Windows als Verknüpfungsziel erstellt werden:

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

Leider ist dies nicht durch Arbeit in den Raum in C: \ Program Files, manuell Anführungszeichen alle einschließen Wenn ich den Link erstellt ändern ist gut:

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

UPDATE: Bestellung von -jar und -Xmx256m getauscht. Das Problem bleibt jedoch gleich. Die Leerzeichen im Pfad zur JAR-Datei verursachen ein Problem. Ich denke, ich muss entweder eine Möglichkeit finden, dem Befehl Anführungszeichen hinzuzufügen, wie ich es zeige, wenn ich das Ziel manuell ändere oder meine Vorgehensweise komplett ändere!

Antwort

4

NSIS-Zeichenfolgen können mit einfachen Anführungszeichen, doppelten Anführungszeichen oder dem umgekehrten einfachen Anführungszeichen zitiert werden. Sie können auch mit $ \ ($ \ "etc) entkommen

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

Haben Sie versucht, die Anführungszeichen beizubehalten, aber die Pfadtrennzeichen zu umgehen?

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

NSIS nicht entkommen mit \, es verwendet $ \ (Und es gibt keine Notwendigkeit, \ in Pfade zu entkommen) – Anders

1

Ziemlich sicher, dass Sie in Anführungszeichen setzen sollte "C: \ WINDOWS \ system32 \ javaw.exe", obwohl es keine Leerzeichen.

Verwandte Themen