我们当前提供了我们应用程序的java(jar)安装程序。考虑到jdk11的更改,我们希望我们的用户拥有相同的轻松安装体验。因此,我们正在寻找的是即使没有安装Java也可以运行一个文件,它应该只启动旧的Java安装程序。
可能这意味着我们需要捆绑jre并拥有一个运行jar的脚本,但是问题是如何在本地运行批处理文件?我们需要它才能在Windows和Mac上运行。我们正在研究的大多数工具都需要Java运行包装好的jar。
答案 0 :(得分:0)
您必须构建2个不同的脚本/安装程序,每个平台一个。即使查看非常流行的软件(例如Chrome),平台选择仍然存在(即使您通常会根据浏览器提供的信息来选择正确的选择)
取决于您可以投入多少时间,最快(最肮脏)的解决方案是为每个平台建立一个档案,其中包含Windows脚本.bat
和OS X脚本.sh
与jre
(每个平台也不同)一起,要求用户取消存档并运行脚本,该脚本将使用打包的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相撞:
问题是通过Java进行提取,但仍然需要首先使用vm。