Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在我的安装程序中正确地重新打包JRE安装程序?_Java_Installation - Fatal编程技术网

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

Java 如何在我的安装程序中正确地重新打包JRE安装程序?,java,installation,Java,Installation,我有一个Java应用程序,我正在为它编写安装程序。我们正在使用AdvancedInstaller程序创建我们的安装程序(我们目前正在评估,但肯定会很快购买许可证),尽管它对Java应用程序有特殊支持,但它更倾向于将其重新打包为桌面型应用程序,我们的软件是一系列Java服务和其他实用程序,在EXE包装器中分发是没有意义的。此软件的目标受众非常具体,我们知道我们的软件可能会自动分发到新映像的Windows 2003服务器机器上。因此,要求Java作为先决条件基本上会让一些糟糕的系统管理员做更多的工作

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

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


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

我不知道这是不是一种“方法”,但遇到了一个类似的问题,我们只是将已安装的JRE与其他应用程序文件一起存档,并确保所有的启动脚本都不使用
java…
,而是使用
。\..\JRE\bin\java…
或类似的东西。JRE作为我们安装过程的一部分被解包到我们安装的子目录中,就是这样。

我同意:

一个简单的jre压缩包就足够了,除非您想将该jre链接到:

  • 默认java(意味着您必须在任何其他java路径引用之前,将解压缩jre的java.exe添加到路径中)
  • 某些脚本的默认java(您可以将java_HOME定义为引用新解压的jre,但这可能会对在新jre之前使用java_HOME的其他脚本产生副作用)
  • 文件关联,如.jnlp或.jar文件(这需要一些)
  • 浏览器java插件注册(也需要注册表修改)
如果桌面上的最后两点对这种解聚剂不感兴趣,简单的拉链就足够了。


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

如果不想全局设置Java_HOME等,则需要使用exe启动器或bat文件,并在启动应用程序之前设置该环境变量的值