代码之家  ›  专栏  ›  技术社区  ›  Jonik

安装Java EE应用程序的InstallAnywhere替代品有哪些?

  •  46
  • Jonik  · 技术社区  · 17 年前

    InstallAnywhere 作为Java EE应用程序的安装程序?你特别喜欢它的什么,它的缺点是什么?

    一些要求:

    • 运行自定义Java代码
    • 必须能够安装捆绑的应用程序服务器(例如 Resin Tomcat )作为Windows上的服务
    • 必须支持基本功能,如复制和移动文件、编辑配置文件、提取ZIP等。
    • (必须支持捆绑特定版本的JRE;至少要包含要提取的ZIP)

    编辑:还有几点:

    • 最好不依赖于目标机器上预安装的JRE(或任何其他第三方运行时环境或库);换句话说,可以生成独立的Windows.exe(或.msi)
    • 该工具最好是跨平台的,这样安装程序开发就可以在Linux、Windows或Mac上完成。
    • 最好有一个像样的GUI来组装安装程序。然而,一旦完成,它 必须 可以跳过GUI,使安装程序构建成为自动化构建过程的一部分。
    13 回复  |  直到 7 年前
        1
  •  60
  •   Matthew Steven Monkan    12 年前

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

    我们(快速)评估了以下安装工具,主要是通过查看它们的网站和浏览网络上的其他信息: Actual Installer , Advanced Installer , BitRock InstallBuilder , Inno Setup , Install Creator , Installer VISE for Windows , InstallShield , install4j , IzPack , NSIS , openInstaller , Scriptlogic MSI Studio , Smart Install Maker , Symantec Wise Installation Studio WiX .

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

    这两个选项在很多方面都很好(而且似乎都是InstallAnywhere的不错替代品):

    • 它们生成了完全原生且美观的Windows.exe安装程序
    • 这两个工具都可以很容易地实现自动化,从而从Ant触发安装程序构建。(使用install4j,我只花了五分钟时间 learn it 然后实施它。)
    • 这两家公司似乎都得到了很好的支持(好吧,至少对评估其产品的潜在客户来说是这样;-)特别是从BitRock那里,我们得到了非常快的回复。

    在以下方面,install4j似乎比BitRock更符合我们的需求(当然,其中许多都是主观的,所以YMMV):

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

    安装4j 。以下是一些令人印象深刻的原因的更多细节:

    • 它的IDE(您将安装程序放在一起的地方)非常简单易用——即使不看文档,我也能快速想出如何做我想做的大多数事情。当我确实需要检查文档中的某些内容时(例如如何参考 installer variables ;如何 get started writing custom Java code against the install4j API )没过多久,我就找到了我需要的东西。
    • Java API )在任何时候。这对我们很重要,因为我们需要重用旧InstallAnywhere安装程序中的现有自定义Java代码。
    • 在一些小细节中,install4j似乎非常适合 开发商。例如,如果你想添加一个验证脚本来检查一些用户输入,你可以在install4j IDE本身中快速编写代码, 使用普通的Java ,其编码辅助类似于IntelliJ IDEA。
    • 我们认为install4j浮动许可证的成本是合理的,考虑到该工具有多好(与InstallAnywhere的虚高定价相比,这简直是讨价还价……)
        2
  •  9
  •   Daniel Lopez    17 年前

    我们创造 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、三星、摩托罗拉、GitHub等。InstallBuilder是一种商业产品,但我们为开源项目提供免费许可证,并为小企业和微型ISV提供折扣。

        3
  •  9
  •   springcorn    13 年前

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

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

    我对InstallAnywhere的另一个问题是,该产品仅进行了最低限度的维护。我已经使用该产品6-7年了,经历了许多不同的版本,错误很少得到修复,你肯定不能期待新的功能。基本上,你所能期待的就是他们将在新版本的windows/mac发布时添加对它的支持。他们的支持费用相当昂贵,但我从未真正实施过支持请求。当我第一次购买该产品时,我相信它来自一家名为ZeroG的公司,该公司专注于该产品。他们实际上对产品进行了维护和改进。当时,这是唯一真正的门票,他们在比赛中遥遥领先。

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

    提醒一下,仔细评估这些产品,因为你可能会与它们联系在一起。我们本可以早点离开产品,但我们不仅在安装程序上投入了大量精力,还根据产品的功能/限制设置了一个自动更新方案,因此离开产品的成本很高,因为在新产品中复制它需要人力投资。

    这只是我的看法,但我不推荐InstallAnywhere。

        4
  •  7
  •   Brian Agnew    17 年前

    我可以担保 izPack

    我过去曾将其用于上述所有操作——解压缩/服务/自定义代码。它是多平台的,尽管我不能保证上面的特定实例(64位Windows)。但如果它运行Java,你应该没问题。

    一些

        5
  •  4
  •   assylias    7 年前

    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

        6
  •  3
  •   sorin    17 年前

    在多平台环境中部署总是一个很大的麻烦来源。它认为最佳解决方案将针对所有平台(如RPM、DEB或MSI)创建本机包。..也可以在无人值守的情况下安装。

    开发人员应该努力使应用程序能够自我修复,无需安装即可运行。

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

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

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

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

        7
  •  2
  •   Horcrux7    10 年前

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

    • 它是免费的。
    • 在Windows和OSX下捆绑Java VM,不需要预装Java VM。
    • 可以在安装之前或之后运行Java代码。
    • 可以创建windows服务/守护进程。
    • 没有GUI,但使用Gradle。如果你已经使用Gradle作为构建脚本语言,那么它就非常容易。
        8
  •  2
  •   Manisha    9 年前

    我还发现了一些开源多平台安装程序。以下是我的评论:

    1. BitRock InstallBuilder :仅适用于免费和开源开发人员,因为它提供了在开源项目中使用的免费许可证。
    2. InstallJammer :优秀的免费开源多平台安装程序。只有一个问题是,一旦从InstallJammer下载可执行版本,防病毒程序就会立即将其删除。不知何故,从InstallJammar构建的文件会被捕获为误报。在发布之前,您必须对安全证书进行更多的工作。
    3. Izpack :优秀的免费开源多平台安装程序。对于不习惯蚂蚁的人来说,这可能有点麻烦。与GUI前端一起使用时可能很棒,比如 PackJacket .
        9
  •  1
  •   dfa    17 年前

    你可能会感兴趣 launch4j

        10
  •  1
  •   Daniel Lopez    17 年前

    Jonik,感谢您发布如此详细的经验反馈。既然你提出了一些好的观点,我想写一个后续的答案。

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

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

    再次感谢您的反馈

        11
  •  1
  •   Flueras Bogdan    17 年前

    我建议你看看 ,可在以下网址找到 http://sourceforge.net/projects/cminstall/

    1. [是]必须支持Windows,包括最新的64位版本,如Windows Server 2008;支持其他目标操作系统者优先
    2. [可以通过使用第三方库轻松完成,例如:Tanuki Software]必须能够在Windows上安装捆绑的应用程序服务器(如Resin或Tomcat)作为服务
    3. [是-或者您可以通过编程下载并解压缩它]必须支持捆绑特定版本的JRE;至少通过包含要提取的ZIP

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

    4. [是]该工具最好是跨平台的,这样安装程序开发就可以在Linux、Windows或Mac上完成。

      http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 看看构建安装程序有多容易!]最好有一个像样的GUI来组装安装程序。然而,一旦完成,就必须可以跳过GUI,使安装程序构建成为自动化构建过程的一部分。

        12
  •  0
  •   Rob    14 年前

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

        13
  •  0
  •   Kounavi    13 年前

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

    OpenInstaller

    我确信您所请求的所有功能都得到了支持。
    但对我来说,配置起来似乎有点太难了。


    here .

    推荐文章