Можете ли вы использовать 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-jarparams вы можете настроить дополнительную структуру каталогов в папке 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- файлы в двух местах]

Другие вопросы по тегам