Можете ли вы использовать Java JPackage для создания собственного установщика Windows, не используя способ запуска приложения
Справочная информация: в настоящее время я использую Izpack для своего установщика Windows, я связываю среду выполнения java и использую winrun4j в качестве оболочки как для установки, так и для самой программы после установки. Он работал долгое время, но с установщиком есть ряд проблем, которые я не смог решить и искал замену.
Oracle теперь предоставляет установщик JPackage, так что это кажется разумным выбором. Но структура папок, созданная установщиком, отличается от того, что у меня есть в настоящее время, у меня есть несколько файлов конфигурации и файлов, отличных от java, и я не смог получить.exe, который создает JPackage, чтобы что-либо делать.
Итак, можно ли использовать JPackage для создания установщика, но в структуре, лучше соответствующей моей существующей структуре, и продолжать использовать WInRun4j для фактического запуска моего приложения
Существующая структура папки
ROOT
---App.exe
---Config Files
---lib
-------jar files
---JVM64
------- Java runtime
---help
Структура JPackage
ROOT
---App.exe
---Runtime Dlls
---app
----- jar files
Config files
--runtime
------Java runtime
------Runtime Dlls (again)
1 ответ
Структура каталогов, сгенерированная jpackage, в основном настраивается для вас и, кажется, не может быть изменена, а также упрощает установку зависимостей приложений Java с помощью автономной JRE. Базовая структура для Windows такая, как вы говорите:
ROOT
---App.exe (for --main-class parameter)
---xyz.exe (for each --add-launcher parameter)
---Runtime Dlls (these appear to be unused except for applauncher.dll, see SO 62607300)
---app/
------App.cfg (for --main-class)
------xyz.cfg (for per --add-launcher)
---runtime/
------Java runtime
------Runtime Dlls
С участием --input
а также --main-jar
params вы можете настроить дополнительную структуру каталогов в папке app / для всего, что вы хотите для своего приложения. Итак, если вы использовалиlib/myappjar.jar
он добавил бы:
---app/
-------lib/
----------myappjar.jar
Если вы использовали --input build\mypath
он скопирует все дерево файлов в эту папку, поэтому, если build\mypath
Директор содержит
bin/
---Scripts
---xyz.properties
README.txt
Тогда приложение также будет содержать:
---app/
------bin/
---------Scripts
---------xyz.properties
------README.txt
Между прочим, DLL среды выполнения, размещенные на верхнем уровне, кажутся копиями некоторых DLL в runtime/bin [https://stackru.com/questions/62607300/why-is-java-jpackage-installing-windows-dll- файлы в двух местах]