如何在安装程序中正确地重新打包JRE安装程序



我有一个Java应用程序,正在为它编写安装程序。我们正在使用AdvancedInstaller程序来创建我们的安装程序(好吧,我们目前正在评估它,但肯定会很快购买许可证),尽管它对Java应用程序有特殊支持,但它更倾向于将它们重新打包为桌面型应用程序,我们的软件是一系列Java服务和其他实用程序,用EXE包装器分发是没有意义的。该软件的目标受众非常具体,我们知道我们的软件可能会自动分发到新映像的Windows2003Server计算机上。因此,要求Java作为先决条件基本上会为一些糟糕的系统管理员带来更多的工作,如果可能的话,我宁愿通过在我们自己的系统中重新打包JRE的安装程序来避免这种情况。

我发现,如果我试图从MSI中执行JRE的安装程序作为预安装步骤,它会抱怨另一个安装程序已经在运行(当然是我的),所以它会退出。当我试图在AdvancedInstaller项目中添加JRE安装程序作为软件必备组件(作为捆绑的EXE,而不是URL链接)时,尽管我试图强制安装它,但它似乎从未真正安装过。

重新打包JRE的最佳方式是什么?我不是一个真正的Java爱好者,所以我不太了解其他开发人员如何处理同样的问题,除了要求他们的用户自己寻找并安装JRE之外。理想的解决方案是,我们可以找到一个EXE安装程序,它可以从另一个MSI安装程序内部执行,或者如果可能的话,只需将所有文件打包到JRE内部,然后创建适当的注册表和环境变量。我该怎么做?

我不知道这是否是"正确的方法",但面对类似的问题,我们只需将安装的JRE与其他应用程序文件存档,并确保所有启动脚本都不使用java ...,而是使用....jrebinjava ...或类似的方法。JRE是作为安装过程的一部分在我们安装的子目录中进行解压缩的,仅此而已。

我同意bdumitriu的回答:

一个简单的jre zip就足够了,除非你想把这个jre链接到:

  • 默认java(意味着您必须在任何其他java路径引用之前,将解压缩的jre的java.exe添加到路径中)
  • 某些脚本的默认java(您可以将java_HOME定义为引用新解压的jre,但这可能会对在新jre之前也使用java_HOME的其他脚本产生副作用)
  • 文件关联,如.jnlp或.jar文件(这需要对注册表进行一些修改)
  • 浏览器java插件注册(还需要修改注册表)

如果最后两点在桌面上不感兴趣,那么一个简单的zip就足够了。

http://www.syswow64.co.uk/2013/05/java-7-update-21-1721-enterprise.html

许多博客和文章中的问题都围绕着为企业部署创建"deployment.config"one_answers"deploment.properties"文件。在我的情况下,我想将安全级别设置为"中等",但每次打开Java控制面板时,它都被设置为默认的HIGH设置。

最新更新