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

时间:2008-11-07 09:16:35

标签: java installer

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

我发现如果我尝试从我的MSI执行JRE的安装程序作为预安装步骤,它会抱怨另一个安装程序已经在运行(当然是我的),所以它很难解决。当我尝试将JRE安装程序添加为AdvancedInstaller项目中的软件先决条件(作为捆绑的EXE,而不是URL链接)时,尽管我尝试强制安装它,但它似乎从未实际安装过。

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

我同意bdumitriu's answer

jre的简单拉链就足够了,除非您想将jre链接到:

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

如果最后两点对您所关心的桌面不感兴趣,那么简单的拉链就足够了。

答案 2 :(得分:1)

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

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