開発マシンには常に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インストーラーのインストールパスを指定できるかどうか、またその方法を知っている人はいますか?
次のコマンドを使用して、パブリック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インストーラーオプション
検索中にこの記事を見つけました... 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つの方法は、シンボリックリンク(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を使用します)。 。
JDK7インストーラーでINSTALLDIR
を無視する原因となるリグレッションを発見しました。最後の正しいバージョンはアップデート21です。
バグレポートを提出しました。Oracleから返信がありましたらお知らせします。
[〜#〜] update [〜#〜]:これは、破損した(不完全な)JDKインストールが原因であることがわかりました。このバージョンをアンインストールすると(プログラムの追加と削除)、新しいインストールは問題なく実行されました。
これは、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
お役に立てれば!
試してください:jdk-7u2-windows-i586.exe/s INSTALLDIR =\"C:\ Program Files\Java\JDK \"
ファイル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
編集-より簡単な方法
実行jdk-7u60-windows-x64.exe /passive /log install.log INSTALLDIR:c:\pippo
7u45および7u60で動作
古い答え
Exeにはmsiインストーラーが含まれています。抽出することです(確かにもっとエレガントな方法がありますが、私はこれだけを知っています)
msiexec /i jdkx.y.z.msi /passive INSTALLDIR:c:\pippo