如何在Java自定义运行时映像中使用launch4j?

时间:2019-07-24 08:49:37

标签: java java-9 java-module launch4j jlink

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

该应用程序是模块化(jmods),使用jlink导出,它不会生成任何jar,但是会生成一个custom runtime image(一些文件夹),其中包含运行命令的{{1} 1}}

我读了Launch4j docs,它说jar标签是可选的。尝试将该程序与gui(甚至不启用“运行”按钮)和Windows cmd( launch4j:应用程序jar不存在。

一起使用

编辑1:

This SO post与我的问题有关。 Launch4j还没有此功能。

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

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

    java -m package/path.to.class
  • 使用以下参数制作一个config.txt file

    7z a "outputPath\fileName.7z" "inputPath\javaCustomImgFolder"
    
  • Genearte exe文件:

    ;!@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@!
    

注意:我需要7zS2.sfx(27kb)版本文件,该文件是通过参考here找到的this SO post。其他版本对我没有帮助。

1 个答案:

答案 0 :(得分:1)

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

对于Launch4j,有a feature request,但没有可见的进度报告。因此,我们只能猜测何时完成。

但是,由于jlink可以使用启动器脚本创建捆绑的应用程序,因此用于自解压存档文件(例如WinZip或7zip)的通用生成器就足够了。另请参阅How do I make a self extract and running installer

这些用于自解压档案的生成器通常还允许指定在提取后运行的程序/脚本,因此,当我们对捆绑的应用程序进行存档并指定启动脚本时,我们将获得一个可以运行捆绑的模块化Java应用程序的exe文件。双击。直到找到更好的解决方案为止,这是迄今为止我们能做到的最好的选择。