背景,我目前在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)
答案 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]