[英]NSIS shortcut with java parameters
我正在構建一個需要參數的 Java 應用程序。 問題是我准備了一個文件夾,里面包含運行我的 jar 所需的一切。 我有一個 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 的任何建議或幫助都會很棒。
這是你需要的:
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 的參數,因此它們進入了第三個參數。
請注意,我還稍微修改了引號:
這是因為您的$INSTDIR
很可能是包含空格的C:\\Program Files
。 在這種情況下,它會中斷,因為它會變成--module-path C:\\Program Files\\thing\\files\\javafx13\\lib ...
並且 Java 會讀取C:\\Program
作為模塊路徑的值! 出於這個原因,這些路徑周圍必須有"
雙引號"
。
但是,這會與 NSIS 的整個“參數”參數最初使用的引號發生沖突,這就是為什么我將其封裝在`
反引號`
而不是"
雙引號"
。 (為了保持一致性,我當時對所有 NSIS 參數都使用了反引號。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.