Установка 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