使用捆绑的jre运行

时间:2019-01-11 14:32:59

标签: java

我们当前提供了我们应用程序的java(jar)安装程序。考虑到jdk11的更改,我们希望我们的用户拥有相同的轻松安装体验。因此,我们正在寻找的是即使没有安装Java也可以运行一个文件,它应该只启动旧的Java安装程序。

可能这意味着我们需要捆绑jre并拥有一个运行jar的脚本,但是问题是如何在本地运行批处理文件?我们需要它才能在Windows和Mac上运行。我们正在研究的大多数工具都需要Java运行包装好的jar。

2 个答案:

答案 0 :(得分:0)

您必须构建2个不同的脚本/安装程序,每个平台一个。即使查看非常流行的软件(例如Chrome),平台选择仍然存在(即使您通常会根据浏览器提供的信息来选择正确的选择)

取决于您可以投入多少时间,最快(最肮脏)的解决方案是为每个平台建立一个档案,其中包含Windows脚本.bat和OS X脚本.shjre(每个平台也不同)一起,要求用户取消存档并运行脚本,该脚本将使用打包的jre运行jar。否则,您需要为Windows创建一个MSI/exe,为MacO创建一个dmg(或其他安装程序类型)。

我以前用捆绑的jre完成了dmg,如果需要它们可以尝试查找细节(我不再可以访问代码,但可能可以找到细节)。这是一个免费的解决方案,但确实需要一台OS X计算机来创建dmg

我以前使用过且效果很好的一个选项是install4j,但价格不菲。

LE:Self contained packaging-尽管我以前没有使用过,但这似乎是解决您问题的最佳选择。

还有一个开放源代码选项-packr

答案 1 :(得分:0)

自包含包装并没有真正帮助,对于packr相同,对于launch4j相同。因为所有这些都只会生成包含大量文件和目录的应用程序映像。

问题在此之前,作为安装程序,您需要1个大型exe文件(对于Mac为dmg),只需单击一下 我们已经处于SCP或Packr之类的阶段。因为这很容易,否则会导致当前installer.exe和jre \子目录以及一个批处理/ sh文件。问题是如何从该目录结构转到运行的单个exe。

因此,我们应该拥有的东西可以将其压缩到一个自解压的归档文件中,单击该文件时应将其自动解压缩到操作系统的temp目录,然后直接在其上运行命令(例如批处理文件或直接在其中运行)。在提取的目录中:。\ jre \ bin \ javaw.exe -jar installler.jar) 但是似乎没有人做出过这样的事情,我们最近的一次是与Oomph相撞:

[1] https://git.eclipse.org/c/oomph/org.eclipse.oomph.git/tree/plugins/org.eclipse.oomph.extractor/src/extractor.c

[2] https://git.eclipse.org/c/oomph/org.eclipse.oomph.git/tree/plugins/org.eclipse.oomph.extractor.lib/src/org/eclipse/oomph/extractor/lib/BINExtractor.java

问题是通过Java进行提取,但仍然需要首先使用vm。