5

Launch4j是否可以使用模块化 Java 应用程序制作捆绑/包装 exe 文件?

该应用程序是模块化的 (jmods),使用 导出jlink,它不会生成任何 jar,而是生成一个custom runtime image(几个文件夹),其中包含一个运行命令的 bat 文件:java -m package/path.to.class

我阅读了 Launch4j 文档,它说 jar 标签是可选的。尝试使用带有 gui 的程序(它甚至不启用运行按钮)和 Windows cmd(launch4j: Application jar 不存在。

编辑1:

这篇 SO 帖子与我的问题有关。Launch4j 还没有这个功能。

解决方案(直到没有其他工具能够这样做):

  • 使用 java custon 运行时映像制作 7z 文件:

    7z a "outputPath\fileName.7z" "inputPath\javaCustomImgFolder"
    
  • 使用以下参数创建一个config.txt 文件:

    ;!@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) 版本文件,我在这里通过引用此 SO 帖子找到了该文件。其他版本不适合我。

4

1 回答 1

3

据我所知,Java 模块之前的 exe 构建工具还没有赶上。

对于 Launch4j,有一个功能请求,但没有可见的进度报告。所以我们只能猜测什么时候完成。

但是由于jlink可以使用启动器脚本创建一个捆绑的应用程序,一个用于自解压存档文件的通用生成器,如 WinZip 或 7zip,另请参阅我如何制作自解压和运行安装程序,可能就足够了。

这些用于自解压存档的生成器通常还允许指定要在解压后运行的程序/脚本,因此当我们存档捆绑的应用程序并指定启动脚本时,我们会得到一个 exe 文件,该文件可以运行捆绑的模块化 Java 应用程序。 -点击。在更好的解决方案出现之前,这是迄今为止我们能做到的最好的。

于 2019-07-25T09:17:04.563 回答