什么是安装Java EE应用程序的优秀InstallAnywhere替换?

时间:2009-04-17 10:12:19

标签: java installer java-ee windows-installer

您建议将哪个(商业或免费)安装程序工具替换为InstallAnywhere作为Java EE应用程序的安装程序?你特别喜欢它,它的缺点是什么?

一些要求:

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

编辑:还有几点:

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

13 个答案:

答案 0 :(得分:55)

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

我们(快速)评估了以下安装程序工具,主要是查看其网站并浏览网络上的其他信息:Actual InstallerAdvanced InstallerBitRock InstallBuilder,{{3} },Inno SetupInstall CreatorInstaller VISE for WindowsInstallShieldinstall4jIzPackNSISopenInstallerScriptlogic MSI StudioSmart Install MakerSymantec Wise Installation Studio

我们在早期筛选出大部分内容,最后将两个选项列入最近评估: WiX BitRock InstallBuilder 。对于这些工具,我们下载了评估版本并进行了一些原型设计,以确定是否真正支持对我们最重要的事情,以及让事情变得多么容易或多难。

这两个选项在很多方面都很好(两者都是InstallAnywhere的好替代品):

  • 他们生成完全原生的和漂亮的Windows .exe安装程序 使用您自己的图形等轻松自定义。
  • 这两个工具都可以轻松实现自动化,以便从Ant触发安装程序构建。 (使用install4j,我只花了五分钟到install4j然后实现它。)
  • 两家公司似乎都得到了很好的支持(好吧,至少对于评估他们产品的潜在客户;-)尤其是来自BitRock的我们得到了很快的回复。

在下面的内容中,对于我们的需求,install4j似乎比BitRock更好(当然,其中很多都是主观的,所以YMMV):

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

所以最终我们选择 install4j 。以下是一些令人印象深刻的细节:

  • 它将安装程序放在一起的IDE非常简单易用 - 即使不查看文档,我也可以找到如何快速完成我想要的大部分工作。当我必须检查文档中的某些内容(例如,如何引用licensing options;如何installer variables)时,找到我需要的内容并不需要很长时间。
  • 您可以在安装过程中完全自定义屏幕和操作,还可以随时添加自定义屏幕和操作(根据get started writing custom Java code against the install4j API编码)。这对我们很重要,因为我们需要从旧的InstallAnywhere安装程序重用现有的自定义Java代码。
  • 在一些小细节中,install4j似乎是 Java 开发人员的理想选择。例如,如果要添加验证脚本以检查某些用户输入,则可以在install4j IDE本身快速编写代码,使用普通旧Java ,编码协助类似于IntelliJ IDEA。
  • 我们认为install4j浮动许可证的成本是合理的,考虑到该工具有多好(并且与InstallAnywhere的虚增价格相比还是彻头彻尾的讨价还价......)
  • 简而言之,它似乎是可用于部署Java应用程序的最佳安装程序工具。

答案 1 :(得分:8)

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

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

您可以查看我们的一些customers,例如MySQL,Samsung,Motorola,GitHub等.InstallBuilder是商业产品,但我们提供开源项目的免费许可和小型企业的折扣和microISVs。

答案 2 :(得分:7)

我可以保证izPack。它是基于Ant的,因此您可以在其中打包Ant安装,并且Ant安装可以包含自定义任务和/或在Ant build.xml中编写的脚本(例如,使用Groovy,Beanshell或任何支持BSF的脚本语言)。所以它将涵盖您的可定制要求。

我过去用过以上所有内容 - 解压缩/服务/自定义代码。它是多平台的,虽然我无法保证上面的特定实例(64位Windows)。但如果它运行Java,你应该没问题。

令人头疼的是JRE。你显然需要一些 JRE才能运行它。但是我认为您应该能够在izPack中打包并执行特定的JRE安装。

答案 3 :(得分:5)

只是想补充一点,我的公司已经使用了InstallAnywhere大约6年,但我们决定继续前进。原因有两个。

首先,他们的定价是绝对的高速公路抢劫,与直接竞争对手如INstall4J和BitRock相比,许可严格限制。

InstallAnywhere的另一个问题是产品只能进行最低限度的维护。我已经使用该产品6到7年来通过许多不同的版本和错误很少修复,你肯定不能指望新的功能。基本上你可以期待的是,它们将为新版本的windows / mac添加支持。他们的支持费用相当昂贵,但我从未收到过实际支持请求。当我第一次购买该产品时,我认为它来自一家名为ZeroG的公司,他专注于该产品。他们实际上维护和改进了产品。那时候它是唯一真正的机票,它们在竞争中脱颖而出。

然后它被Macrovision和Flexera收购。自从ZeroG销售该产品以来,它一直是该公司的辅助产品,对它的关注一直很差。似乎它是为了完成一套产品而购买的,而不是因为该公司实际上想要维护该产品。

请注意,谨慎评估这些产品,因为您可以与它们联系在一起。我们本可以更早地离开产品,但是我们不仅投入了大量精力,而且还根据产品的功能/限制设置了自动更新方案,因为劳动力投入使产品离开产品成本很高。在新产品中重现这一点。

我的观点,但我不推荐InstallAnywhere。

答案 4 :(得分:4)

目前我们正在使用GetDown来处理我们的swing应用程序的分发。我们使用Tomcat分发更新,并GetDown下载这些更新。它非常灵活,功能强大,并且比java WebStart更好,因为它为更改生成校验和,它可以节省带宽,只下载已更改的文件。

一个好的教程:http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/

项目网站:https://github.com/threerings/getdown

答案 5 :(得分:3)

在多平台环境中部署始终是一个很大的麻烦来源。它认为最佳解决方案的目标是为所有平台创建本地软件包,例如RPM,DEB或MSI ......也可以无人值守安装。

开发人员应该努力使应用程序自我修复并在没有安装的情况下运行。

这样做可以最大限度地减少部署工作。

我知道这不是一个解决方案,因为你在那里问,但有时你可能会以这种方式获得更好的结果。

请记住,如果您遵循这些服务,您将获得Linux上的免费更新服务。

我仍然希望微软会添加类似于MSI的东西(并且不需要你注册它们)。同时对于Windows,您可以查看刚刚作为开源发布的Google Updater - http://code.google.com/p/omaha/

他们为Mac OS http://code.google.com/p/update-engine/发布了类似的产品,但很遗憾他们没有考虑从这两种产品中创建一种产品。

答案 6 :(得分:2)

您可以尝试SetupBuilder Gradle Plugin使用简单的Gradle构建脚本创建本机* .msi安装程序。

  • 免费。
  • 支持32位和64位Windows。还有Linux和OSX。
  • 在Windows和OSX下捆绑Java VM,不需要预先安装的Java VM。
  • 可以在安装之前或之后运行Java代码。
  • 可以创建一个Windows服务/守护进程。
  • 没有GUI但使用Gradle。如果您已经使用Gradle作为构建脚本语言,那么这很容易。

答案 7 :(得分:1)

您可能对launch4j

感兴趣

答案 8 :(得分:1)

Jonik,感谢您发布有关您体验的详细反馈。我想写一个跟进答案,因为你提出了一些好处。

在满足某些基本要求之后(不幸的是,InstallAnywhere不再存在),并没有真正的“坏”或“好”工具,而是更适合某些项目的工具。您似乎仔细研究了所有选项,install4j将更好地适用于您的项目。这可能是一个不错的选择,因为您希望重用以前的安装程序中的现有Java代码库(尽管我认为安装构建器不需要某些代码:)

关于InstallBuilder,我们支持使用< insertBefore>自定义屏幕序列。标签(我们可能应该更好地记录这一点)。捆绑JRE(在大多数情况下只包括java /文件夹)也很简单,但我认为你的批评是有效的:因为这是一项常见的任务,我们应该更好地记录/通过GUI访问它,包括在所有支持的平台中拖放。我们已经在我们的路线图中改进了您提到的领域中的GUI。有趣的是,我们的许多客户发现XML格式如此易于使用,以至于他们更喜欢使用编程编辑器进行编辑(就好像他们正在编辑HTML一样)

最后,关于许可,我们当前的模型不需要购买额外的许可证,如果这些额外的程序员只是构建安装程序(不设计它们)或为构建或持续集成机器购买额外的许可证。在任何情况下,install4j的一些浮动许可证比BitRock的完整企业站点许可证更昂贵:)

再次感谢您的反馈

答案 9 :(得分:1)

我建议您查看 cmInstall ,可以在此处找到 http://sourceforge.net/projects/cminstall/

它几乎符合您的所有要求,而且是开源的。另外我是开发人员之一:)。

  1. [yes]必须支持在安装过程中运行自定义Java代码
  2. [yes]必须支持Windows,包括最新的64位版本,如Windows Server 2008;支持其他目标操作系统是一个加号
  3. [可以通过使用第三方库轻松完成 - 例如:Tanuki Software]必须能够在Windows上安装捆绑的应用程序服务器(例如Resin或Tomcat)作为服务
  4. [yes]必须支持复制和移动文件,编辑配置文件,提取ZIP等基本内容。
  5. [是 - 或者您可以以编程方式下载&解压缩]必须支持捆绑特定版本的JRE;至少包括要提取的ZIP

    6. [no - 它需要安装jdk 1.6,计划将来支持.exe或.msi]最好不依赖于目标机器上预先安装的JRE(或任何其他第三方运行时环境或库);换句话说,可以生成一个独立的Windows .exe(或.msi)

  6. [yes]该工具最好是跨平台的,以便可以在Linux,Windows或Mac上完成安装程序开发。

    7. [不 - cminstall框架是“基于开发人员” - 但易于使用。只需阅读http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489中的教程,看看构建安装程序是多么容易!]最好有一个像样的GUI将安装程序放在一起。但是,一旦完成,必须跳过GUI并使安装程序构建自动构建过程的一部分。

答案 10 :(得分:1)

我还揭示了一些开源多平台安装程序。这是我的评论:

  1. BitRock InstallBuilder:仅对免费和开源开发人员有用,因为它提供了在开源项目中使用的免费许可。
  2. InstallJammer:良好的免费和开源多平台安装程序。只有一个问题是,只要从InstallJammer下载可执行版本,反病毒程序就会立即将其删除。以某种方式从InstallJammer构建的文件被捕获为误报。在发布之前,您必须更多地使用安全证书。
  3. Izpack:良好的免费和开源多平台安装程序。对于不习惯使用蚂蚁的人来说,这可能有点麻烦。与PackJacket等GUI前端一起使用时可能会很棒。

答案 11 :(得分:0)

我见过几个人推荐IzPack,但老实说我不知道​​它是否符合你的要求。它至少是免费的:)

答案 12 :(得分:0)

Sun提供了一个开源安装程序:

<强> OpenInstaller

我确信您支持所有要求的功能 但对我来说似乎有点难以配置。

但是猜猜:它不仅有GUI,还有(伪图形)CLI 好截图和信息here