web-dev-qa-db-fra.com

Comment installer JDK Java en mode silencieux dans un répertoire spécifique de Windows

Sur ma machine de développement, je dois toujours installer Java 6 et Java 7 et je dois installer chaque JDK dans les versions 32 et 64 bits, à des fins de test. Étant donné que la fréquence des mises à jour de Java semble devenir de plus en plus ridicule (deux fois par semaine maintenant?), Chaque mise à jour me demande de désinstaller puis de réinstaller 4 JDK. Donc, cela devient vraiment très ennuyant et je voudrais donc scripter tout ce processus. 

Mon problème est que, par défaut, chaque version du JDK est installée dans un chemin de répertoire contenant le numéro de mise à jour (par défaut: "C:\Program Files\Java\jdk1.6.0_ <update-nr> \"). Pour ne pas avoir à adapter des tonnes de scripts de compilation, je supprime toujours manuellement le "_ <update-nr>" suivant le chemin d'installation et l'installe toujours dans le même "C:\Program Files\Java\jdk1.6.0" ou "C:\Program Files\Java\jdk1.7.0", respectivement, pour les versions 64 bits et dans C:\Program Files (x86)\Java\jdk1.6.0 "ou" C:\Program Files (x86)\Java\jdk1.7.0 ", respectivement, pour les versions 32 bits.

Pendant que je découvrais, comment spécifier le répertoire d’installation d’un programme d’installation JRE (c’est-à-dire le runtime Java):

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

Je n'ai pas encore trouvé de description similaire pour spécifier le répertoire d'installation du programme d'installation de JDK. 

Est-ce que quelqu'un sait si et comment on peut spécifier le chemin d'installation du programme d'installation du JDK, de manière à pouvoir diriger une installation JDK en mode silencieux vers un répertoire d'installation spécifique?

15
mmo

Je pouvais installer avec succès les versions x64 et x86 de JDK 8 update 60, y compris un JRE public, avec les commandes suivantes:

Ici JDK 1.8.60 (x86) avec le code source va à C:\Java\x86\jdk1.8.0_60 et 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

De manière similaire, JDK 1.8.60 (x64) avec le code source va à C:\Java\x64\jdk1.8.0_60 et 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

Voir les options du programme d’installation Oracle JRE

12
Vivit

Une approche pour éviter de réécrire les répertoires dans les scripts consiste à utiliser des liens symboliques (jonctions sur NTFS). Tout d'abord, téléchargez l'utilitaire de jonction à partir de SysInternals ici: http://technet.Microsoft.com/ en-us/sysinternals/bb896768.aspx puis décompressez, copiez dans un répertoire du chemin PATH et exécutez-le une fois pour accepter la licence.

Ensuite, vous pouvez créer facilement des liens symboliques: 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"

Pour supprimer un lien symbolique: junction -d "C:\Program Files\Java\jdk1.6.0"

Vous pouvez également utiliser mklink ( http://technet.Microsoft.com/en-us/library/cc753194.aspx ) à la place (et supprimer pour la suppression), mais je préfère la simplicité et la clarté de jonction.

2
uk4sx

Je viens de découvrir une régression dans le programme d’installation de JDK7 qui l’ignore INSTALLDIR. La dernière version correcte est la mise à jour 21.

J'ai déposé un rapport de bogue et je vous le ferai savoir une fois que Oracle aura répondu.

UPDATE: Il s’avère que cela est dû à une installation JDK corrompue (incomplète). Une fois que j'ai désinstallé cette version (Ajout/Suppression de programmes), la nouvelle installation s'est bien déroulée.

1
Gili

Je viens de trouver cet article lors d'une recherche ... il spécifie un paramètre pour 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"

Malheureusement, j'avais déjà installé ma machine de développement, je n'ai donc pas pu tester ...

1
Matt

C'est la méthode qui fonctionne pour moi pour JDK_7u55. J'ai aussi choisi d'installer le JRE:

Commandes 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

J'espère que cela t'aides!

1
Rodney Spencer

Essayez: Jdk-7u2-windows-i586.exe/s INSTALLDIR =\"C:\Program Files\Java\JDK \"

1
user2503019

fichier jreinstall.bat (exemple: stockage sur le bureau) (remplace jre par 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

EDIT - plus facile

Exécuter jdk-7u60-windows-x64.exe /passive /log install.log INSTALLDIR:c:\pippo

Fonctionne avec 7u45 et 7u60

OLD answer

Le fichier EXE contient l'installateur MSI. Extraire est (bien sûr il existe des méthodes plus élégantes, mais je ne connais que celle-ci)

  1. Exécutez le fichier exe manuellement - vous devez le faire seulement la première fois, pour le convertir en msi
  2. Saisissez le fichier msi (et tous les autres fichiers.cab) dans C:\Utilisateurs\AppData\LocalLow\Sun\Java\jdx.x.y\jdk.x.y.z.msi
  3. exécuter msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo
0
Tommaso