安装Java EE应用程序的最佳安装替代方法是什么?

您建议使用哪种(商业或免费)安装程序工具来替换 InstallAnywhere 作为 Java EE 应用程序的安装程序?您特别喜欢它的哪些方面,其缺点是什么?

一些要求:

  • 必须支持在安装过程中运行自定义 Java 代码
  • 必须支持Windows,包括最新的64位版本,如Windows Server 2008;支持其他目标操作系统是一个加号
  • 必须能够在 Windows 上将捆绑的应用程序服务器(如 ResinTomcat)作为服务安装
  • 必须支持基本的东西,如复制和移动文件,编辑配置文件,提取ZIP等。
  • (必须支持捆绑特定版本的 JRE;至少通过包含要提取的 ZIP)

编辑:还有几点:

  • 最好不依赖于目标计算机上预安装的 JRE(或任何其他第三方运行时环境或库);换句话说,可以产生独立的Windows.exe(或.msi)
  • 该工具最好是跨平台的,以便可以在Linux,Windows或Mac上完成安装程序开发。
  • 最好有一个体面的GUI来将安装程序放在一起。但是,一旦完成此操作,必须可以跳过GUI并使安装程序构建成为自动化构建过程的一部分。

答案 1

不幸的是,在这种情况下,SO并没有告诉我们太多我们不知道的事情(事实上,我们最终选择的工具在任何答案中都没有提到)。但是,我在这里发布我们的经验,因为它们可能会在以后对其他人有所帮助。

我们(快速)评估了以下安装程序工具,主要是通过查看他们的网站并在网络上浏览其他信息:实际安装程序高级安装程序BitRock InstallBuilderInno SetupInstall CreatorInstaller VISE for WindowsInstallShieldinstall4jIzPackNSISopenInstallerScriptlogic MSI StudioSmart Install Maker赛门铁克 Wise Installation StudioWiX

我们很早就筛选了其中的大多数,并最终列出了两个选项以进行更仔细的评估:BitRock InstallBuilderinstall4j。对于这些工具,我们下载了评估版本并进行了一些原型设计,以查看对我们最重要的事情是否真的得到支持,以及让事情正常工作有多容易或多难。

这两个选项在很多事情上都很好(而且两者似乎都是InstallAnywhere的好选择):

  • 他们生产完全本机和漂亮的Windows.exe安装程序,这些安装程序易于使用您自己的图形等进行自定义。
  • 这两个工具都可以很容易地自动化,以便从Ant触发安装程序构建(使用install4j,我只需要五分钟来学习它,然后实现它。
  • 两家公司似乎都得到了很好的支持(好吧,至少对于评估其产品的潜在客户来说;-)特别是从BitRock,我们得到了非常快速的回复。

在以下几件事中,install4j似乎比比特摇滚更适合我们的需求(当然,其中许多都是主观的,所以YMMV):

  • install4j绝对支持运行自定义Java代码 - 它可以在安装过程中的任何时候完成,并且无论系统上是否有任何预安装的JRE。
  • BitRock使用更硬编码的安装步骤序列,而install4j更灵活。在 install4j 中,添加自定义屏幕和表单(带或不带自定义 Java 代码)、请求用户输入等,可以在安装任何文件之前或之后的任何时间点完成。
  • 此外,一些基本的事情,例如定义要复制到目标系统的文件集,以及添加安装步骤以替换配置文件中的某些字符串,在 install4j 中似乎更容易一些。
  • install4j对JRE捆绑有更好的支持
  • 在Linux上创建安装程序时,install4j IDE的外观和感觉比BitRock更好(更“原生”
  • (install4j的许可选项对我们来说更好 - 我们强烈希望有几个浮动许可证,而不是所有开发人员的命名许可证或昂贵的“站点许可证”)

所以最终我们选择了 install4j。以下是关于为什么它令人印象深刻的更多细节:

  • 它的IDE,你把安装程序放在一起,非常简单易用 - 我可以弄清楚如何快速完成我想要的大多数事情,即使不看文档。当我确实必须检查文档中的某些内容(例如,如何引用安装程序变量;如何开始针对install4j API编写自定义Java代码)时,很快就找到了我需要的东西。
  • 您可以在安装过程中完全自定义屏幕和操作,也可以随时添加自定义屏幕和操作(根据其 Java API 编码)。这对我们来说很重要,因为我们需要重用旧的InstallAnywhere安装程序中的现有自定义Java代码。
  • 在一些小细节中,install4j似乎是Java开发人员的理想选择。例如,如果你想添加一个验证脚本来检查一些用户输入,你可以在 install4j IDE 本身中非常快速地编码,使用普通的旧 Java,并提供类似于 IntelliJ IDEA 的编码帮助。
  • 考虑到该工具有多好,我们认为install4j浮动许可证的成本是合理的(与InstallAnywhere的夸大定价相比,这是彻头彻尾的讨价还价......
  • 简而言之,它似乎是可用于部署Java应用程序的最佳安装程序工具。

答案 2

我们创建了BitRock InstallBuilder,这是一个跨平台安装工具,在InstallAnywhere,特别是它的表亲(现已失效)InstallShield MP的一些令人沮丧的经历之后。超过一半的客户使用我们的工具来打包基于Java的软件,但该工具是原生的,而不是基于Java的。这意味着我们有许多优点,例如本机外观和感觉(包括Vista,GTK,Qt等),并且在安装之前无需进行自解压(启动速度更快,空间要求更小)即可提及。要回答您的具体问题:

  • 支持在多个时间点调用 Java 代码作为安装的一部分(例如,当显示某个页面时,正在复制文件时,在卸载时等)。代码不会在安装程序中编译,但可以在外部调用,并在安装程序中使用结果。如果您更具体地了解需要哪种代码,我可以提供具体的示例代码。我们有很多内置功能操作,需要手动添加到其他安装程序中,因此您可能不需要首先编写该代码!
  • 我们支持所有版本的 Windows,包括 64 位和 Windows 2008(多个客户已使用我们的安装程序在这些平台上获得认证)
  • 我们支持捆绑的应用程序服务器,包括Tomcat,Resin,JBoss等。看看BitNami,看看我们创建的此类堆栈的示例。
  • 我们支持复制和移动文件,替换配置文件中的值,解压缩文件以及大多数其他常见安装功能。我们的原则之一是,安装程序应为常见安装操作提供内置支持,并具有一个简单、干净的界面,用于调用特定于客户端产品的外部代码。
  • 我们支持捆绑 JRE,正如您所提到的,通常只需捆绑 JRE 目录并在启动脚本中为JAVA_HOME设置适当的值就足够了

您可以看看我们的一些客户,例如MySQL,三星,摩托罗拉,GitHub等。InstallBuilder是一款商业产品,但我们为开源项目提供免费许可证,并为小型企业和microISV提供折扣。


推荐