问题 通过命令行在Windows机器上静默安装JDK 8和JRE 8


我们想要在多台机器上更新JDK环境,所有运行的窗口都有不同的版本(XP或7)

为此,我现在正在创建一个脚本,它将自动运行正确的安装程序(32/64位)。 我尝试使用以下命令运行安装程序:

jdk-8u25-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature"

这在没有安装JDK / JRE 8的机器上工作正常。但是,我遇到了一些问题:

  • 如果已经安装了JDK / JRE 8,安装程序将取消JDK和JRE,而不是简单地做任何事情(或重新安装)
  • 如果需要重新启动,则会自动强制执行,我需要避免这种情况,因为安装完成后我需要在脚本中执行其他操作。
  • 没有VERBOSE模式/日志文件来指示安装程序实际执行的操作

我看过这些来源:

但他们似乎缺乏并且非常混淆什么会给我想要的结果。


10601
2018-01-20 10:57


起源

将其部署为/在文件夹中并调整环境变量是什么? - PeterMmm
在Windows机器上以这种方式部署Java是否安全?安装程序是否还设置了某些程序可能需要的不同注册表值? - dagandlerx
取决于您的用例。您是否使用Java Browser Plug-in?你不应该,如果强制,这可能不会起作用。你正在运行.jar双击?可行的是,这个解决方案也不会起作用。如果你制作一个版本,我不会发生什么事 不可知 初始安装(将C:\ java指定为安装文件夹)并将新版本简单复制到该文件夹​​中。 - PeterMmm
太多“ifs”,我宁愿让静音安装程序正常工作。我真的觉得奇怪的是它的记录不足 - dagandlerx


答案:


我将分别处理JDK和JRE:

JDK 不依赖于注册表项或安装程序exe执行的任何其他操作。所以安装JDK -  Public JRE - on just  机器使用

jdk-8u25-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature"

然后,您可以简单地压缩生成的安装,将其复制并解压缩到相同操作系统类型的其他计算机。

JRE 安装程序(从Oracle单独下载)可以使用选项和配置文件运行,如下所示: http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html

假设配置与安装程序exe在同一目录中,则选项 INSTALLCFG="%cd%\jre-install-options.cfg" 可以使用。否则,配置文件需要完整路径(INSTALLCFG =“c:\ path \ to \ jre-install-options.cfg”)。所以,像这样(使用日志文件并假设配置文件位于exe的同一目录中):

jre-8-windows-i586.exe INSTALLCFG="%cd%\jre-install-options.cfg" /s /L C:\TMP\jre-install.log

似乎以下jre-install-options.txt可能适合您:

INSTALL_SILENT=Enable
REBOOT=Disable
STATIC=Enable

配置文件选项在此处列出: http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html

这里解释了最后一行的含义: http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html#static_installation


8
2018-01-23 02:23



INSTALLCFG的相对路径对我不起作用。看我的 超级用户 题 - Thomas Weller
如果已经安装了Java,安装程序会做什么?它会卸载Java并重新安装它还是只卸载?在后一种情况下,它会表明它做了什么,最好不是通过日志?在Java可用之前是否真的需要重新启动? - Septagram
我知道这是相当老的帖子,但配置文件有 REMOVEOUTOFDATEJRES 将删除旧版JRE的标志。将此值设置为零可能会为您提供所需的信息。 - DynaWeb


我面临与/ s选项类似的问题。我发现了一个jdk bug https://bugs.openjdk.java.net/browse/JDK-8033364。我似乎已经取消了对帮助的支持。尝试/它对我有用

jdk-8u92-windows-x64.exe / qn


1
2017-07-20 17:55



我认为 /s  只是沉默错误信息。所以,通过删除 /s 当出现错误时,您会看到弹出窗口。 - bvdb


对于JRE静默安装:

start /wait msiexec /i "%~ java8.40x64.msi " JU=0 JAVAUPDATE=0 AUTOUPDATECHECK=0 RebootYesNo=No WEB_JAVA=1 /q

你可以看到完整的帖子 这里


0
2017-10-26 14:58



这有用吗? exe 代替 msi? - Septagram


似乎支持的命令行选项不断变化。对于最新的8 Update 131,我不得不放弃所有msiexec样式选项,因为它们都不起作用。我使用我下载的java版本的文档构建了安装程序的开关。如上面的答案所示,配置文件选项可以在命令行上传递给安装程序。我在Packer中用于在Win2016 Server ami上安装Java的最后一个命令是:

Start-Process 'C:\Windows\Temp\jre-8u131-windows-x64.exe' `
  -ArgumentList 'INSTALL_SILENT=Enable REBOOT=Disable SPONSORS=Disable' `
  -Wait -PassThru

此命令还默认将Java添加到系统路径,但不在其安装的路径中。打开一个新的PowerShell shell,它将位于该shell的路径中(Inspect with $env.path

事实来源:

http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#table_config_file_options


0
2017-07-18 23:47