it-swarm.com.ru

Как тихо установить Java JDK в определенный каталог на Windows

На моей машине разработки мне всегда нужно устанавливать Java 6 и Java 7, и мне нужно установить каждый JDK как в 32-, так и в 64-битную версию, для целей тестирования. Поскольку частота обновлений Java, похоже, становится все более и более нелепой (два раза в неделю?), Каждое обновление требует от меня удаления, а затем переустановки 4 JDK. Так что это становится действительно довольно раздражающим, и поэтому я хотел бы написать весь этот процесс. 

Моя проблема заключается в том, что по умолчанию каждая версия JDK устанавливается в путь к каталогу, который содержит номер обновления (по умолчанию: «C:\Program Files\Java\jdk1.6.0_ <update-nr> \»). Чтобы избавить меня от необходимости адаптировать тонны скриптов сборки, я всегда вручную удаляю конечный "_ <update-nr>" из пути установки и всегда устанавливаю в один и тот же "C:\Program Files\Java\jdk1.6.0" или «C:\Program Files\Java\jdk1.7.0», соответственно, для 64-разрядных версий и в C:\Program Files (x86)\Java\jdk1.6.0 »или« C:\Program Files (x86)\Java\jdk1.7.0 ", соответственно, для 32-битных версий.

Пока я узнал, как указать каталог установки для установщика JRE (т.е. среда выполнения Java):

<jre-installfile>.exe [/s] [INSTALLDIR=<drive>:\<JRE_install_path>] 
    [STATIC=1] [WEB_Java=0/1] [WEB_Java_SECURITY_LEVEL=VH/H/M/L]

Я еще не нашел похожее описание, как указать каталог установки для установщика JDK. 

Кто-нибудь знает, если и как можно указать путь установки для установщика JDK, чтобы можно было направить установку JDK без вывода сообщений в определенный каталог установки?

15
mmo

Я мог бы успешно установить как 64-разрядные, так и 64-разрядные версии обновления 60 JDK 8, включая общедоступный JRE, с помощью следующих команд:

Здесь JDK 1.8.60 (x86) с исходным кодом собирается в C:\Java\x86\jdk1.8.0_60, а JRE в C:\Java\x86\jre1.8.0_60:

jdk-8u60-windows-i586.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature" INSTALLDIR=C:\Java\x86\jdk1.8.0_60 /INSTALLDIRPUBJRE=C:\Java\x86\jre1.8.0_60

Аналогичным образом JDK 1.8.60 (x64) с исходным кодом собирается в C:\Java\x64\jdk1.8.0_60, а JRE в C:\Java\x64\jre1.8.0_60:

jdk-8u60-windows-x64.exe /s ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature" INSTALLDIR=C:\Java\x64\jdk1.8.0_60 /INSTALLDIRPUBJRE=C:\Java\x64\jre1.8.0_60

Смотрите Oracle Опции установки JRE

12
Vivit

Один из способов избежать переписывания каталогов в сценариях - использовать символические ссылки (соединения в NTFS) . Сначала загрузите утилиту соединения из SysInternals здесь: http://technet.Microsoft.com/en-us/ sysinternals/bb896768.aspx затем разархивируйте, скопируйте в какой-нибудь каталог в PATH и запустите один раз, чтобы принять лицензию.

Тогда вы можете легко создавать символические ссылки: junction "C:\Program Files\Java\jdk1.6.0" "C:\Program Files\Java\jdk1.6.0_37" junction "C:\Program Files (x86)\Java\jdk1.6.0" "C:\Program Files (x86)\Java\jdk1.6.0_37"

Чтобы удалить символическую ссылку: junction -d "C:\Program Files\Java\jdk1.6.0"

Вы также можете использовать mklink ( http://technet.Microsoft.com/en-us/library/cc753194.aspx ) взамен (и del для удаления), но я предпочитаю простоту и ясность соединения.

2
uk4sx

Я только что обнаружил регресс в установщике JDK7, который заставляет его игнорировать INSTALLDIR. Последняя правильная версия - обновление 21.

Я отправил отчет об ошибке и сообщу вам, как только Oracle ответит.

UPDATE: Оказывается, это было вызвано поврежденной (неполной) установкой JDK. После удаления этой версии (Установка и удаление программ) новая установка прошла нормально.

1
Gili

Я только что нашел эту статью во время поиска ... она указывает параметр для INSTALLDIR.

http://makeitfaster.wordpress.com/2011/03/25/Java-jdk-silent-install-on-windows/

jdk-7u2-windows-i586.exe /s ADDLOCAL="ToolsFeature,SourceFeature" INSTALLDIR="%CD%\jdk7u2"

Я, к сожалению, уже установил на мою машину разработчика, поэтому я не мог проверить ...

1
Matt

Это способ, который работает для меня для JDK_7u55. Я также решил установить JRE:

Команды PowerShell

$strJavaInstallExe=<Your JDK executable>
$strJavaInstallDir=<The directory you want the JDK and JRE to install to>

$cmdInstallJava=$strJavaInstallExe+' /passive /log "'+$strJavaInstallDir+'\install.log" ADDLOCAL="ToolsFeature,SourceFeature,PublicjreFeature" INSTALLDIR="'+$strJavaInstallDir+'" INSTALLDIRPUBJRE="'+$strJavaInstallDir+'"'

Invoke-Expression $cmdInstallJava

Надеюсь это поможет!

1
Rodney Spencer

Попробуйте: Jdk-7u2-windows-i586.exe/s INSTALLDIR =\"C:\Program Files\Java\JDK \"

1
user2503019

файл jreinstall.bat (пример: хранилище на рабочем столе) (заменить jre на jdk)

@echo off
start /w %UserProfile%\Desktop\jre-8u65-windows-x64.exe /s
setx Java_HOME "C:\Program Files\Java\jre1.8.0_65"
exit
0
ajcg

РЕДАКТИРОВАТЬ - более простой способ

Выполнить jdk-7u60-windows-x64.exe /passive /log install.log INSTALLDIR:c:\pippo

Работает с 7u45 и 7u60

СТАРЫЙ ответ

Exe содержит установщик MSI. Извлечь это (наверняка есть более элегантные методы, но я знаю только этот)

  1. Запустите exe вручную - вам нужно сделать это только в первый раз, чтобы преобразовать его в MSI
  2. Загрузите MSI-файл (и все остальные .cab-файлы) из C:\Users\AppData\LocalLow\Sun\Java\jdx.x.y\jdk.x.y.z.msi
  3. запустить msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo
0
Tommaso