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

2022-09-04 21:22:48

我们希望在多台计算机上更新 JDK 环境,这些计算机都运行 Windows,但版本不同(XP 或 7)

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

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

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

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

我查看了这些来源:

但是他们似乎缺乏并且非常困惑,因为什么会给我想要的结果。


答案 1

我将分别处理JDK和JRE:

JDK 不依赖于注册表项或安装程序 exe 执行的任何其他操作。因此,只需在台计算机上安装JDK-无需公共JRE-即可使用

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=“c:\path\to\jre-install-options.cfg”)。所以,像这样的东西(使用日志文件,并假设配置文件位于exe的同一目录中):INSTALLCFG="%cd%\jre-install-options.cfg"

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

似乎以下 jre 安装选项.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


答案 2

似乎对支持的命令行选项不断进行更改。对于最新的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 的路径中(使用$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


推荐