Установка JDK 8 и JRE 8 в автоматическом режиме на компьютере Windows через командную строку
Мы хотим обновить среду JDK на нескольких машинах, на всех запущенных окнах, но на разных версиях (XP или 7).
Для этого я сейчас создаю скрипт, который автоматически запускает правильный установщик (32/64 бит). Я попытался запустить установщик с помощью следующей команды:
jdk-8u25-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature"
Это прекрасно работает на машине без установленной JDK/JRE 8. Однако я сталкиваюсь с несколькими проблемами:
- Если JDK/JRE 8 уже установлен, программа установки удаляет JDK и JRE вместо того, чтобы просто ничего не делать (или переустанавливать)
- Если требуется перезагрузка, она принудительно выполняется автоматически, и мне нужно избегать этого, так как есть другие действия, которые мне нужно выполнить в сценарии после завершения установки.
- Нет режима / файла журнала VERBOSE, чтобы указать, что на самом деле делает установщик
Я посмотрел на эти источники:
- Установка JDK для Microsoft Windows - тихая установка JDK
- Параметры установщика Windows JRE - установка из командной строки
но они кажутся недостающими и очень запутанными относительно того, что даст мне желаемый результат.
4 ответа
Я бы занялся 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
Предполагая, что config находится в том же каталоге, что и 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
Кажется, есть постоянные изменения в поддерживаемых параметрах командной строки. Для последнего 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, и она будет на пути к этой оболочке (проверьте с помощью $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
Я столкнулся с аналогичной проблемой с параметром /s. Я нашел ошибку jdk https://bugs.openjdk.java.net/browse/JDK-8033364. Кажется, они убрали поддержку или помощь. Попробуйте / QN это сработало для меня
jdk-8u92-windows-x64.exe /qn
Для тихой установки JRE:
start /wait msiexec /i "%~ java8.40x64.msi " JU=0 JAVAUPDATE=0 AUTOUPDATECHECK=0 RebootYesNo=No WEB_JAVA=1 /q
Вы можете увидеть полный пост здесь.