我们有一个Web应用程序,我们需要使该应用程序更易于为客户进行部署。
全新安装的当前工作流程:

  • 确保机器(32位或64位)上存在JRE
  • 安装Tomcat(32或64位)
  • 在Oracle或SQL Server中创建数据库(为此我们提供SQL脚本)
  • 将一些值(例如主机名)写入到我们的设置表中。 (可以让用户验证这些内容,但不希望用户必须将它们敲入。
  • 创建一个连接属性文件(我们提供了一个迷你JAR应用程序来帮助解决此问题),该文件位于Tomcat下。
  • 我们的实际Web应用程序有两个WAR文件。可以将它们拆分到两台计算机上,但是现在,让我们假设它们都被转储到Tomcat下。
  • 启动Tomcat,以便部署WAR

  • 对于我们的用户来说,这是一个繁琐的过程
    我想将其封装到一个安装程序中,并一直在NSIS中(似乎有一个庞大的社区)进行研究,但是随后偶然发现了install4j,尽管它似乎鲜为人知,但它更特定于基于Java的应用程序。

    只是想从更多经验丰富的用户那里获得一些有关平台最佳选择的反馈。

    我不想半途而废,然后意识到我选择了错误的安装程序平台。

    最佳答案

    免责声明:我公司开发install4j。

    首先,install4j是一种商业工具,因此与NSIS有很大的不同。其他主要区别是:

  • install4j是适用于Windows,Mac OS X和所有POSIX兼容Linux和Unix平台的多平台安装程序生成器。
  • install4j的主要重点是安装基于Java的应用程序,例如,它处理启动程序和服务的创建,并提供捆绑JRE的几种策略。 Java应用程序需要的许多东西都可以立即使用。
  • install4j提供了自己的IDE,专注于易用性
  • 脚本是用Java完成的。 IDE提供了带有代码完成和错误分析的内置编辑器。操作,屏幕和表单组件具有广泛的“脚本属性”,可让您自定义安装程序的行为。

  • 对于install4j,我可以满足您的单个要求:



    在媒体向导中,选择一个JRE捆绑软件。如果选择“动态捆绑包”选项,则只有在找不到合适的JRE时才下载该选项。



    我建议仅将现有tomcat安装的根目录添加到您的分发树中。

    至于服务,您可以使用Tomcat发行版中的Tomcat服务启动器,也可以在install4j中创建服务启动器。在两种情况下,您都可以对安装使用“安装服务”操作。

    生成的服务具有以下优点:更新安装程序知道它们正在运行,并在安装任何新文件之前自动将其关闭。



    使用“运行可执行文件或批处理文件”操作以运行这些脚本。



    任何类型的用户交互都是通过可配置的形式完成的。使用几个文本字段表单组件,您可以查询您的设置。

    这也可以在控制台安装程序中透明地工作,并且自动生成的响应文件将允许您基于GUI安装程序的一次执行以无人参与模式自动进行安装。



    如果您已经具有执行此操作的JAR文件,只需将其添加到安装程序->自定义代码和资源下,然后向安装程序中添加“运行脚本”操作即可使用JAR文件中的类。

    表单组件中已保存到安装程序变量中的任何用户输入都可以通过如下调用进行访问:
    context.getVariable("greetingOption")
    

    在“运行脚本”操作的脚本属性中(或install4j中的任何其他脚本)。



    如果仅将Tomcat目录结构添加到分发树,则可以预先部署这些WAR文件。否则,您可以使用“复制文件”操作将WAR文件放置在任何位置。



    这是通过“启动服务”操作完成的。

    关于nsis - 根据我的要求,我应该使用NSIS还是jprofiler/install4j,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7528932/

    10-12 04:43