jjzjj

java - 什么是安装 Java EE 应用程序的好的 InstallAnywhere 替代品?

coder 2023-05-14 原文

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

一些要求:

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

  • 编辑:还有几点:
  • 最好不依赖于目标机器上预装的 JRE(或任何其他 3rd 方运行时环境或库);也就是说,可以生成独立的Windows .exe(或.msi)
  • 该工具最好是跨平台的,以便安装程序开发可以在 Linux、Windows 或 Mac 上完成。
  • 最好有一个像样的 GUI 来将安装程序放在一起。然而,一旦完成,它 必须可以跳过 GUI 并使安装程序构建成为自动构建过程的一部分。
  • 最佳答案

    在这种情况下,不幸的是,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 .对于这些工具,我们下载了评估版本并进行了一些原型(prototype)设计,以查看对我们来说最重要的东西是否真的得到支持,以及让它们工作的难易程度。

    这两个选项在很多方面都很好(并且似乎都是 InstallAnywhere 的不错选择):

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

  • 在以下方面,install4j 似乎比 BitRock 更能满足我们的需求(当然,其中许多是主观的,所以 YMMV):
  • install4j 肯定对运行自定义 Java 代码有更好的支持——它可以在安装过程中的任何时候完成,而不管系统上是否有任何预装的 JRE。
  • BitRock 使用更硬编码的安装步骤序列,而 install4j 更灵活。在 install4j 中,可以在安装任何文件之前或之后的任何时候添加自定义屏幕和表单(带有或不带有自定义 Java 代码)、询问用户输入等。
  • 还有一些基本的事情,比如定义要复制到目标系统的文件集,以及添加安装步骤来替换配置文件中的某些字符串,在 install4j 中似乎更容易一些。
  • install4j 更好地支持 JRE 捆绑
  • 在 Linux 上创建安装程序时,install4j IDE 的外观和感觉比 BitRock 更好(更“ native ”)
  • (install4j 的 licensing options 对我们来说更好——我们强烈希望有几个 float 许可证,而不是所有开发人员的命名许可证或昂贵的“站点许可证”)

  • 所以最终我们选择了 install4j .以下是有关其令人印象深刻的原因的更多详细信息:
  • 它的 IDE,您将安装程序放在一起,非常简单且易于使用 - 我可以弄清楚如何快速完成我想做的大多数事情,甚至无需查看文档。当我确实必须检查文档中的某些内容时(例如如何引用 installer variables ;如何引用 get started writing custom Java code against the install4j API ),很快就找到了我需要的东西。
  • 您可以在安装过程中完全自定义屏幕和操作,也可以随时添加自定义屏幕和操作(根据其 Java API 编码)。这对我们很重要,因为我们需要重用旧 InstallAnywhere 安装程序中现有的自定义 Java 代码。
  • 在一些小细节上,install4j 似乎是 Java 开发人员的理想选择。例如,如果您想添加一个验证脚本来检查一些用户输入,您可以在 install4j IDE 本身中非常快速地编写代码,使用普通的旧 Java,并提供类似于 IntelliJ IDEA 的编码帮助。
  • 我们认为 install4j float 许可证的成本是合理的,考虑到该工具有多好(与 InstallAnywhere 的夸大定价相比,这是非常划算的......)
  • 简而言之,它似乎是可用于部署 Java 应用程序的最佳安装程序工具。
  • 关于java - 什么是安装 Java EE 应用程序的好的 InstallAnywhere 替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759855/

    有关java - 什么是安装 Java EE 应用程序的好的 InstallAnywhere 替代品?的更多相关文章

    1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

      类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

    2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

      我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

    3. ruby - 将差异补丁应用于字符串/文件 - 2

      对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

    4. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

      我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

    5. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

      我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

    6. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

      我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

    7. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

      为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

    8. ruby - 完全离线安装RVM - 2

      我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

    9. ruby-on-rails - Rails 应用程序之间的通信 - 2

      我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

    10. ruby - 无法运行 Rails 2.x 应用程序 - 2

      我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

    随机推荐