web-dev-qa-db-ja.com

Windows上の特定のディレクトリにJava JDKをサイレントインストールする方法

開発マシンには常にJava 6 and Java 7をインストールする必要があり、両方に各JDKをインストールする必要があります。 32ビット版と64ビット版、テスト目的。Java更新の頻度はますますばかげているようです(現在、週に2回ですか?))ため、更新ごとに、 re-install 4 JDKsしたがって、これは非常に煩わしくなり、このプロセス全体をスクリプト化したいと思います。

私の問題は、デフォルトでは、各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 runtime))のインストールディレクトリを指定する方法:

<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インストーラーのインストールパスを指定できるかどうか、またその方法を知っている人はいますか?

16
mmo

次のコマンドを使用して、パブリックJREを含むJDK 8アップデート60のx64バージョンとx86バージョンの両方を正常にインストールできました。

ここで、ソースコードを含む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インストーラーオプション

13
Vivit

検索中にこの記事を見つけました... 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"

残念ながら、すでに開発マシンにインストールしていたため、テストできませんでした...

2
Matt

スクリプト内のディレクトリの書き換えを回避する1つの方法は、シンボリックリンク(NTFSのジャンクション)を使用することです。まず、SysInternalsから接合ユーティリティをダウンロードします: http://technet.Microsoft.com/en-us/sysinternals/bb896768.aspx 次に解凍し、PATH上のディレクトリにコピーして、1回実行しますライセンスを受け入れる。

その後、シンボリックリンクを簡単に作成できます: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

これは、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. C:\ Users\AppData\LocalLow\Sun\Java\jdx.x.y\jdk.x.y.z.msiからmsi(およびその他すべての.cabファイル)を取得します
  3. 実行msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo
0
Tommaso