2010-04-01 37 views
5

Tôi đang phát triển ứng dụng java đầu tiên của mình bằng Eclipse. Gần đây tôi đã cần điều chỉnh lượng bộ nhớ được cấp phát bằng cách truyền -Xmx256M cho JVM. Ứng dụng này hiện đang đóng gói như một lọ chạy được và được cài đặt bằng NSIS.Truyền đối số cho vm java từ tập lệnh NSIS

Tôi gặp sự cố khi chuyển đối số vào tệp jar sau khi cài đặt. Thực hành phổ biến để làm điều này là gì? Đây là những gì tôi đang làm trong tập tin NSI của tôi:

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

Điều này dẫn đến những điều sau đây được tạo ra như Target shortcut trên cửa sổ:

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

Thật không may này không hoạt động do không gian trong C: \ Program Files, Nếu tôi thay đổi liên kết được tạo ra bằng tay để bao gồm dấu ngoặc kép tất cả là tốt:

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

UPDATE: Thứ tự của -jar và -Xmx256M hoán đổi. Vấn đề vẫn như cũ. Các khoảng trống trong đường dẫn đến tệp jar đang gây ra sự cố. Tôi nghĩ rằng tôi hoặc là cần phải tìm một cách để thêm dấu ngoặc kép vào lệnh, như được hiển thị khi tôi thay đổi mục tiêu theo cách thủ công hoặc thay đổi cách tiếp cận của tôi hoàn toàn!

Trả lời

4

Chuỗi NSIS có thể được trích dẫn bằng dấu nháy đơn, dấu ngoặc kép hoặc dấu ngoặc kép ngược. Bạn cũng có thể thoát bằng $ \ ($ \ "v.v.)

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

Bạn đã thử giữ các dấu ngoặc kép nhưng thoát khỏi dấu tách đường?

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

NSIS không thoát bằng \, nó sử dụng $ \ (Và không cần phải thoát \ trong đường dẫn) – Anders

1

Chắc chắn bạn nên đặt dấu ngoặc kép xung quanh "C: \ WINDOWS \ system32 \ javaw.exe" mặc dù không có khoảng trống.

Các vấn đề liên quan