Установка JDK 8 и JRE 8 беззвучно на машине Windows через командную строку

Мы хотим обновить среду JDK на нескольких компьютерах, все запущенные окна, но разные версии (XP или 7)

С этой целью я создаю script, который автоматически запустит правильный установщик (32/64 бит). Я попробовал запустить установщик со следующей командой:

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

Это отлично работает на машине без установленной JDK/JRE 8. Однако я сталкиваюсь с несколькими проблемами:

  • Если JDK/JRE 8 уже установлен, программа установки UNINSTALLS как JDK, так и JRE вместо того, чтобы просто ничего не делать (или переустанавливать)
  • Если требуется перезагрузка, она принудительно выполняется автоматически, и мне нужно избегать этого, так как есть другие действия, которые мне нужно выполнить в script после завершения установки.
  • Нет файла VERBOSE/файла журнала, чтобы указать, что делает установщик.

Я рассмотрел эти источники:

но они кажутся недостаточными и очень запутанными относительно того, что даст мне желаемый результат.

Ответ 1

Я бы занялся JDK и JRE отдельно:

JDK не зависит от записей реестра или от того, что делает exe installer 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

Предполагая, что config находится в том же каталоге, что и exe installer, можно использовать опцию 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

Ответ 2

Для беспроблемной установки JRE:

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

Вы можете увидеть полный пост здесь.

Ответ 3

Я столкнулся с аналогичной проблемой с параметром /s. Я нашел ошибку jdk https://bugs.openjdk.java.net/browse/JDK-8033364. Кажется, они удалили поддержку или помощь. Try/qn это сработало для меня

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

Ответ 4

Кажется, что есть постоянные изменения в поддерживаемых параметрах командной строки. Для последних 8 обновлений 131 мне пришлось отказаться от всех параметров стиля msiexec, потому что никто из них не работал. Я использовал документацию для загруженной java-версии для создания коммутаторов в установщик. Как показано в ответах выше, параметры файла конфигурации могут быть переданы установщику в командной строке. Последняя команда, которую я использовал в Packer для установки Java на сервере Win2016 ami, была:

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

Эта команда также добавляет Java в системный путь по умолчанию, однако не в том, который он устанавливает. Откройте новую оболочку powershell, и она будет в пути для этой оболочки (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