【问题标题】:Installing JDK 8 and JRE 8 silently on a Windows machine through command line通过命令行在 Windows 机器上静默安装 JDK 8 和 JRE 8
【发布时间】:2015-03-18 13:51:47
【问题描述】:

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

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

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

这在没有安装 JDK/JRE 8 的机器上运行良好。但是,我遇到了一些问题:

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

我查看了以下来源:

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

【问题讨论】:

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

标签: java windows silent-installer


【解决方案1】:

我将分别处理 JDK 和 JRE:

JDK 不依赖于注册表项或安装程序 exe 所做的任何其他事情。所以安装 JDK - 没有 Public 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="%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

【讨论】:

  • INSTALLCFG 的相对路径对我不起作用。请参阅我的SuperUser 问题
  • 如果已经安装了 Java,安装程序会做什么?它会卸载 Java 并重新安装,还是只会卸载?在后一种情况下,它会表明它做了什么,最好不是通过日志吗?在 Java 可用之前实际上需要重新启动吗?
  • 我知道这是相当老的帖子,但配置文件有 REMOVEOUTOFDATEJRES 标志,它将删除旧版本的 JRE。将此设置为零可能会满足您的需求。
  • 我知道它真的很旧,但我现在需要它,我是否也需要复制JDK?
【解决方案2】:

对于 JRE 静默安装:

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

你可以看到完整的帖子here

【讨论】:

    【解决方案3】:

    我在使用 /s 选项时遇到了类似的问题。我发现了一个 jdk 错误https://bugs.openjdk.java.net/browse/JDK-8033364。我似乎他们已经删除了对帮助或 s 的支持。试试 /qn 它对我有用

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

    【讨论】:

    • 我认为/s 只是使错误消息静音。因此,通过删除/s,您实际上会在出现错误时看到弹出窗口。
    • 这对我来说还没有完成,当使用 /qn 开关执行上述操作时,我仍然可以启动 UI。
    • 这对我有用(用于 MDT) jre-8u231-win-x64.exe INSTALL_SILENT=1 AUTO_UPDATE=0 REBOOT=0 SPONSORS=0 REMOVEOUTOFDATEJRES=1
    【解决方案4】:

    支持的命令行选项似乎不断变化。对于最新的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      相关资源
      最近更新 更多