Ярлык NSIS с параметрами java - PullRequest
0 голосов
/ 08 марта 2020

Я создаю Java приложение, которому нужны параметры. Дело в том, что я подготовил папку со всем, что мне нужно, чтобы запустить мою банку. у меня есть папка javafx и папка JRE, чтобы сделать мое приложение автономным / не зависящим от JRE. это структура моей папки NSIS:

root folder
 |
 |_uninstaller.exe
 |
 |_subFolder
   |
   |_JREfolder
   |  |
   |  |_JRElibs
   |
   |_JFXfolder
   |  |
   |  |_JFXlibs
   |
   |_OtherResourcesFolders
   |_MainClass.jar 
   |_otherJars.jar

Дело в том, чтобы запустить мой jar на моем компьютере, мне нужно использовать следующее предложение для cmd:

"C:\Program Files\Java\jdk-13\bin\java.exe" --module-path "C:\Program Files\Java\javafx13\lib" --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web,javafx.base --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED -jar clienteCorreoDefinitivo.jar

, так Когда я сделал ярлык NSIS, я попробовал следующее предложение, но оно не работает:

createShortCut "$DESKTOP\ClienteCorreoStephane.lnk" "$INSTDIR\files\java-runtime\bin\java.exe --module-path $INSTDIR\files\javafx13\lib --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web,javafx.base --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED -jar $INSTDIR\files\clienteCorreoDefinitivo.jar" "" "$INSTDIR\files\recursos\myicon.ico"

Любое предложение или помощь о том, как запустить этот jar с этими параметрами, было бы удивительным.

1 Ответ

0 голосов
/ 08 марта 2020

Это то, что вам нужно:

CreateShortCut \
  `$DESKTOP\ClienteCorreoStephane.lnk` \
  `$INSTDIR\files\java-runtime\bin\java.exe` \
  `--module-path "$INSTDIR\files\javafx13\lib" --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web,javafx.base --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED -jar "$INSTDIR\files\clienteCorreoDefinitivo.jar"` \
  `$INSTDIR\files\recursos\myicon.ico`

(Нет необходимости разбивать его на несколько строк, используя \, но повышает читаемость.)

Объяснение:

Синтаксис для CreateShortCut равен CreateShortCut link.lnk target.file parameters icon.file (есть и другие параметры, но они вам нужны)

Теперь целевым файлом является просто Java, поэтому для него задан $INSTDIR\files\java-runtime\bin\java.exe. Остальная часть строки на самом деле является параметрами, передаваемыми в Java, поэтому они go в 3-м параметре.

Обратите внимание, что я также немного изменил кавычки:

Это потому, что ваш $INSTDIR вполне может быть C:\Program Files, который содержит пробел. В этом случае он будет прерываться, потому что он станет --module-path C:\Program Files\thing\files\javafx13\lib ..., а Java будет читать C:\Program как значение для пути к модулю! По этой причине должно быть " двойных кавычек " вокруг этих путей.

Однако это будет sh с кавычками, первоначально использованными для целого аргумента "параметров" в NSIS, поэтому Я инкапсулировал это в ` обратных кавычках ` вместо " двойных кавычек ". (Для согласованности я использовал обратные пометки для всех аргументов NSIS.)

...