是否可以使用模块化 java 应用程序使用 Launch4j
制作 bundle /包装器 exe 文件?
该应用程序是模块化的(jmods),使用jlink
导出,它不会生成任何jar,而是一个带有bat的自定义运行时镜像
(几个文件夹)运行命令的文件:java -m package/path.to.class
我读到Launch4j docs ,它说 jar 标签是可选的。尝试通过 gui(它甚至不启用“运行”按钮)和 Windows cmd 使用该程序(launch4j:应用程序 jar 不存在。)
编辑1:
This SO post与我的问题有关。 Launch4j还没有这个功能。
解决方案(直到没有其他工具能够做到这一点):
使用 java custon 运行时镜像制作 7z 文件:
7z a "outputPath\fileName.7z" "inputPath\javaCustomImgFolder"
创建 config.txt file使用这些参数:
;!@Install@!UTF-8! Title="Your app name" //dont know where it's shown. BeginPrompt="Do you want to install This Program?" //same RunProgram="your.exe" //7z automatically search a .exe Directory="bin" //play with the path if you need to ;!@InstallEnd@!
生成 exe 文件:
copy /b "path\7zS2.sfx" + "path\config.txt" + "pathTo\fileName.7z" outputName.exe
注意:我需要 7zS2.sfx (27kb) 版本文件,我已找到该文件 here引用this SO post 。其他版本不适合我。
最佳答案
据我所知,早于 Java 模块的 exe 构建工具还没有 catch 。
对于 Launch4j,有 a feature request ,但没有明显的进度报告。所以我们只能猜测什么时候完成。
但是,由于 jlink
可以使用启动器脚本创建捆绑应用程序,这是一个用于自解压存档文件的通用生成器,例如 WinZip 或 7zip,另请参阅 How do I make a self extract and running installer ,可能就足够了。
这些自解压存档生成器通常还允许指定解压后运行的程序/脚本,因此当我们存档捆绑的应用程序并指定启动脚本时,我们会得到一个可以运行捆绑的模块化 Java 应用程序的 exe 文件双击。在更好的解决方案出现之前,这是迄今为止我们能得到的最好的结果。
关于java - 如何将 launch4j 与 Java 自定义运行时镜像一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57178870/