java - 如何将 launch4j 与 Java 自定义运行时镜像一起使用?

标签 java java-9 java-module launch4j jlink

是否可以使用模块化 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/

相关文章:

java - 包与 Java 9 中的自动模块冲突

java - guava-teSTLib future 版本 JAR

java - Java 9 模块的目录布局

java - 原子整数的compareandexchange()与compareandset()

java - 为什么 java 9 用户应该切换到 java 10?

java 应用程序不适用于 java9 和 eclipse

java - FOP 无法从 url 加载图像

java - 如何将对象写成人类可读的文本文件

java - 单元测试不在应用服务器中运行时应该如何设置数据源?

Java 9 模块系统