0

背景,我目前将Izpack用于我的 Windows 安装程序,我捆绑了一个 java 运行时并使用winrun4j作为安装程序和安装后的实际程序的包装器。它工作了很长时间,但是安装程序存在许多我无法解决的问题,并且一直在寻找替换它。

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

那么是否可以使用 JPackage 来创建安装程序,但结构更好地匹配我现有的结构,并使用继续使用 WInRun4j 来实际运行我的应用程序

现有文件夹结构

ROOT
---App.exe
---Config Files
---lib
-------jar files
---JVM64
------- Java runtime
---help

J包结构

ROOT
---App.exe
---Runtime Dlls
---app
----- jar files
      Config files
--runtime
------Java runtime
------Runtime Dlls (again)
4

1 回答 1

2

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-jarparams,您可以自由地在 app/ 文件夹下为您的应用程序所需的任何其他内容设置额外的目录结构。所以如果你使用lib/myappjar.jar它会添加:

---app/
-------lib/
----------myappjar.jar

如果你使用--input build\mypath它会复制该文件夹下的整个文件树,所以如果build\mypathdir 包含

bin/
---Scripts
---xyz.properties
README.txt

然后 app 还将包含:

---app/
------bin/
---------Scripts
---------xyz.properties
------README.txt

顺便说一下,放在顶层的运行时 DLL 似乎是运行时/bin 下一些 DLL 的副本 [https://stackoverflow.com/questions/62607300/why-is-java-jpackage-installing-windows-dll-两个地方的文件]

于 2020-06-27T15:32:54.273 回答