包装Java软件以便在Windows上运行的最佳方法是什么?

包装Java软件以便在Windows上运行的最佳方法是什么?,java,windows,maven-2,Java,Windows,Maven 2,在Windows上运行Java软件的最佳打包方式是什么?是否有编写.BAT文件的标准,可以发现机器上最新安装的JRE?有Maven插件吗?如何处理可执行Jar文件?取决于您需要什么 我们发现,使用One JAR+JSmooth提供了非常好的用户体验,因为它允许我们分发一个EXE文件,可以放在用户系统的任何位置,而不是安装二进制文件,需要安装和卸载等等。JSmooth检查是否存在适当的Java运行时,如果没有找到,则重定向到官方下载站点 使用一个jar的原因是您通常需要使用库jar,最好单独使用,

在Windows上运行Java软件的最佳打包方式是什么?是否有编写.BAT文件的标准,可以发现机器上最新安装的JRE?有Maven插件吗?如何处理可执行Jar文件?

取决于您需要什么

我们发现,使用One JAR+JSmooth提供了非常好的用户体验,因为它允许我们分发一个EXE文件,可以放在用户系统的任何位置,而不是安装二进制文件,需要安装和卸载等等。JSmooth检查是否存在适当的Java运行时,如果没有找到,则重定向到官方下载站点

使用一个jar的原因是您通常需要使用库jar,最好单独使用,但JSmooth只允许使用一个jar文件


此外,One-jarsdk和JSmooth可以编写脚本,而无需绑定到Windows,因此我们可以在运行Linux的Hudson引擎上构建新版本

毫无疑问,我建议您使用Java Web Start,因为它允许您轻松控制所使用的版本(以及目前更易于使用的更新机制)。

过去我使用过类似launchForJ的Java安装程序包。但是,这些软件包中有很多都使用Java,因此您可能需要一个批处理或简单的可执行文件,该文件是用本机windows代码编写的,可以快速检查Java是否已经安装,然后运行安装程序


由于Java在安装过程中使用系统变量,您应该能够检查您所需的版本(或更高版本)是否以这种方式存在

标准方法是使用

使用JavaWebStart技术,只需在网络上单击一下即可部署独立的Java软件应用程序。Java Web Start确保部署最新版本的应用程序,以及正确版本的Java运行时环境(JRE)

Maven有一个帮助构建可通过WebStart部署的应用程序包的工具

另一种解决方案是使用跨平台安装程序生成器生成安装程序。我个人喜欢(我认为JSmooth非常相似,但我对IzPack有更多的经验),如果您专门针对Windows平台,您可以使用IzPack:

IzPack在以下情况下仍会出现问题: 目标系统没有JRE 安装。用户需要首先 安装它,然后运行IzPack 安装程序。这不是我的问题 Linux或BSD用户,因为他们是 一般都很熟练,他们知道如何 用手或用包装来做 系统(RPM、DEB、EBuild、端口、, ...). 类似地,MacOSX用户将 没有太多的问题,因为它是 可随操作系统一起使用。 然而,情况更为严峻 在Windows平台上作为 必须安装JRE。更糟的 可以在中安装多个实例 有时混乱的局面

IzPack本机启动器尝试 解决这个问题。它是C++原生的。 可在以下目录下使用的应用程序: 非常宽松的麻省理工学院许可证和 它使用wxWidgets作为GUI。它是 因此,跨平台(针对 历史学家:它最早是在 一个免费的盒子),但大多数人会 在Windows上需要它。它使用一个简单的 配置文件,并将首先 检查JRE。如果找不到,, 它将弹出一个对话框,让 用户可以在以下选项中进行选择 选项:

  • 手动指定JRE位置
  • 从网上下载一个
  • 安装分装商提供的一个(如果可用)

IzPack还提供了一个。值得一试。

即使对Java 6进行了彻底检查,Java WebStart仍然不知道如何正确处理诸如“有一个新版本,在后台下载?”之类的更新。@Thorbjørn的确,JWS不是这样工作的,您必须要求用户重新启动其应用程序。然后,他们必须下载完整的升级,然后才能继续工作。。。。唉。。