您可以使用Java JPackage创建自己的Windows安装程序而不使用其运行应用程序的方式吗?

时间:2020-06-27 07:56:04

标签: java-14 jpackage

背景,我目前在Windows安装程序中使用 Izpack ,捆绑了Java运行时,并使用 winrun4j 作为包装以及安装后的实际程序。它工作了很长时间,但是安装程序存在很多问题,我一直无法解决,因此一直在寻求替换。

Oracle现在提供了JPackage安装程序,因此这似乎是一个明智的选择。但是安装程序创建的文件夹结构与我当前的文件夹结构不同,我有许多配置文件和非Java文件,而且我无法获得JPackage创建的.exe来执行任何操作。

因此可以使用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 个答案:

答案 0 :(得分:1)

jpackage生成的目录结构主要是为您设置的,似乎无法更改,并且使用自包含的JRE可以非常轻松地安装Java应用程序依赖项。 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参数,您可以自由地在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看起来是运行时/ bin下某些DLL的副本 [https://stackoverflow.com/questions/62607300/why-is-java-jpackage-installing-windows-dll-files-in-two-places]