您建议使用哪种(商业或免费)安装程序工具来替换InstallAnywhere作为Java EE应用程序的安装程序?你特别喜欢它,它的缺点是什么?
一些要求:
编辑:还有几点:
在这种情况下,不幸的是,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。
我们很早就筛选出了大部分内容,并最终筛选了两个选项以进行更密切的评估:BitRock InstallBuilder和install4j。对于这些工具,我们下载了评估版本并进行了一些原型设计,以确定是否真正支持对我们最重要的事情,以及让事情变得有效或多么容易。
这两个选项在很多方面都很好(两者都是InstallAnywhere的好替代品):
在下面的内容中,对于我们的需求,install4j似乎比BitRock更好(其中许多是主观的,当然,所以YMMV):
所以最终我们选择了install4j。以下是有关其令人印象深刻的原因的更多细节:
我建议看看cmInstall,可以在http://sourceforge.net/projects/cminstall/找到
它几乎满足您的所有要求,并且是开源的。另外我是开发人员:)。
我还揭示了一些开源多平台安装程序。这是我的评论:
我见过几个人推荐IzPack,但老实说我不知道它是否符合你的要求。它至少是免费的:)
我们创建了BitRock InstallBuilder,这是一个跨平台安装工具,经历了一些令人沮丧的InstallAnywhere经历,特别是它的堂兄(现已不存在)InstallShield MP。超过一半的客户使用我们的工具来打包基于Java的软件,但该工具是原生的,而不是基于Java的。这意味着我们有许多优点,例如原生外观(包括Vista,GTK,Qt等),并且无需在安装之前进行自我提取(更快的启动,更少的空间要求)来提及一对。回答您的具体问题:
你可以看看我们的一些customers,如MySQL,三星,摩托罗拉,GitHub等.InstallBuilder是一个商业产品,但我们提供开源项目的免费许可和小企业和microISV的折扣。
我可以保证izPack。它是基于Ant的,因此您可以在其中打包Ant安装,并且Ant安装可以包含自定义任务和/或在Ant build.xml中编写的脚本(例如,使用Groovy,Beanshell或任何支持BSF的脚本语言)。所以它将涵盖您的可定制要求。
我过去用过以上所有内容 - 解压缩/服务/自定义代码。它是多平台的,虽然我无法保证上面的特定实例(64位Windows)。但如果它运行Java,你应该没问题。
令人头疼的是JRE。你显然需要一些JRE来运行它。但是我认为您应该能够在izPack中打包并执行特定的JRE安装。
只是想补充说我的公司已经使用了InstallAnywhere大约6年,但我们决定继续前进。原因有两个。
首先,他们的定价是绝对的高速公路抢劫,与直接竞争对手如INstall4J和BitRock相比,许可严格限制。
我对InstallAnywhere的另一个问题是产品只能进行最低限度的维护。我已经使用该产品6到7年来通过许多不同的版本和错误很少修复,你肯定不能指望新的功能。基本上你可以期待的是,它们将为新版本的windows / mac添加支持。他们的支持费用相当昂贵,但我从未收到过实际支持请求。当我第一次购买该产品时,我认为它来自一家名为ZeroG的公司,他专注于该产品。他们实际上维护和改进了产品。那时候它是唯一真正的机票,它们在竞争中脱颖而出。
然后它被Macrovision和Flexera收购。自从ZeroG销售该产品以来,它一直是该公司的辅助产品,对它的关注一直很差。似乎它是为了完成一套产品而购买的,而不是因为该公司实际上想要维护该产品。
谨慎一点,仔细评估这些产品,因为你可以与它们联系在一起。我们本可以更早地离开产品,但是我们不仅投入了大量精力,而且还根据产品的功能/限制设置了自动更新方案,因为劳动力投入使产品离开产品成本很高。在新产品中重现这一点。
只是我的看法,但我不推荐InstallAnywhere。
在多平台环境中部署始终是一个很大的麻烦来源。它认为最佳解决方案的目标是为所有平台创建本机包,例如RPM,DEB或MSI ......也可以无人值守安装。
开发人员应该努力使应用程序自我修复并在不安装的情况下运行。
这样做可以最大限度地减少部署工作。
我知道这不是一个解决方案,因为你在那里问,但有时你可能会以这种方式获得更好的结果。
请记住,如果您遵循这些服务,您将获得Linux上的免费更新服务。
我仍然希望微软会添加类似于MSI的东西(并且不需要你注册它们)。同时对于Windows,您可以查看刚刚作为开源发布的Google Updater - http://code.google.com/p/omaha/
他们为Mac OS http://code.google.com/p/update-engine/发布了一款类似的产品,但很遗憾他们没有考虑从这两款产品中创造出一种产品。
您可以尝试使用SetupBuilder Gradle Plugin创建一个带有简单Gradle构建脚本的本机* .msi安装程序。
您可能感兴趣的launch4j
Jonik,感谢您发布有关您体验的详细反馈。我想写一个跟进答案,因为你提出了一些好处。
在满足某些基本要求之后(不幸的是,InstallAnywhere不再存在)并没有真正的“坏”或“好”工具,而是更适合某些项目的工具。您似乎仔细研究了所有选项,install4j将更好地适用于您的项目。这可能是一个不错的选择,因为您希望重用以前的安装程序中的现有Java代码库(尽管我认为使用InstallBuilder不需要某些代码:)
关于InstallBuilder,我们支持使用<insertBefore>标记自定义屏幕序列(我们可能应该更好地记录这一点)。捆绑JRE(在大多数情况下只包括java /文件夹)也很简单,但我认为你的批评是有效的:因为这是一项常见的任务,我们应该更好地记录/通过GUI访问它,包括在所有支持的平台中拖放。我们已经在我们的路线图中改进了您提到的领域中的GUI。有趣的是,我们的很多客户发现XML格式如此易于使用,以至于他们更喜欢使用编程编辑器进行编辑(就像编辑HTML一样)
最后,关于许可,我们当前的模型不需要购买额外的许可证,如果那些额外的程序员只是构建安装程序(不设计它们)或为构建或持续集成机器购买额外的许可证。在任何情况下,install4j的一些浮动许可证比BitRock的完整企业站点许可证更昂贵:)
再次感谢你的反馈