PowerShellを使ってOracleJDKサイレントインストール
OracleJDKをサイレントインストールする。
【概要】
・OTNサイト(US)から取得したJDK8u45(64bit)のインストーラを使用しサイレントインストールする。*1
・ダウンロードしたインストーラは「C:\\tmp」に置く。
・環境変数も設定する。
→ユーザ環境変数の「JAVA_HOME」と「PATH」にJDK実行に必要なパスを設定する。
・インストーラが出力するログは「C:\tmp\JDKsetup.log」に格納する。
【実行環境】
・Windows7 Home Premium 64bit
・PowerShell 4.0 (※新しい関数は使っていないので、おそらくPowerShell2.0以降であれば動作する)
【スクリプト】
Function Download{ $serverSourceURL = "http://download.oracle.com/otn/java/jdk/8u45-b15/jdk-8u45-windows-x64.exe" $localSourceURL = "C:\\tmp\\jdk-8u45-windows-x64.exe" Write-Host ("■インストーラ取得先URL : " + $remoteFileLocation) Write-Host ("■インストーラ保存先パス : " + $downloadToPath) $client = new-object System.Net.WebClient # ライセンスに同意する $cookie = "oraclelicense=accept-securebackup-cookie" $client.Headers.Add([System.Net.HttpRequestHeader]::Cookie, $cookie) Write-Host "★ダウンロード開始(しばらくお待ちください…)" $client.downloadFile($serverSourceURL, $localSourceURL) Write-Host "★ダウンロード終了" return } Function Install{ Write-Host "★インストール開始(しばらくお待ちください…)" # インストーラ実行(※同期実行) cmd /c "start C:\tmp\jdk-8u45-windows-x64.exe /s /lang=1041 INSTALLDIR=C:\java\jdk1.8.45\ /L C:\tmp\JDKsetup.log" Write-Host "★インストール終了" # ユーザー環境変数設定 # PATHは末尾に付加する $user_path = [Environment]::GetEnvironmentVariable('PATH', 'User') $user_path += ';' + "C:\java\jdk1.8.45\bin\" [Environment]::SetEnvironmentVariable('PATH', $user_path, 'User') # JAVA_HOMEは更新する #$user_java_home = [Environment]::GetEnvironmentVariable('JAVE_HOME', 'User') $user_java_home = "C:\java\jdk1.8.45\" [Environment]::SetEnvironmentVariable('JAVA_HOME', $user_java_home, 'User') Write-Host ("■現在のユーザー環境変数 PATH : " + $user_path) Write-Host ("■現在のユーザー環境変数 JAVA_HOME : " + $user_java_home) return } # 処理開始 Write-Host "★★★Oracle JDKのダウンロード・インストール開始" Download Install Write-Host "★★★Oracle JDKのダウンロード・インストール終了" # 処理終了
■実行結果
PS C:\Windows\system32> (ファイルパス).ps1 ★★★Oracle JDKのダウンロード・インストール開始 ■インストーラ取得先URL : http://download.oracle.com/otn/java/jdk/8u45-b15/jdk-8u45-windows-x64.exe ■インストーラ保存先パス : C:\tmp\jdk-8u45-windows-x64.exe ★ダウンロード開始(しばらくお待ちください…) ★ダウンロード終了 ★インストール開始(しばらくお待ちください…) ★インストール終了 ■現在のユーザー環境変数 PATH : (既存のPATH設定値);C:\java\jdk1.8.45\bin\ ■現在のユーザー環境変数 JAVA_HOME : C:\java\jdk1.8.45\ ★★★Oracle JDKのダウンロード・インストール終了
■結果確認
C:\>java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) C:\>
【備考】
・インストーラを毎回取りに行くので、インストーラの有無チェックが必要。
・インストールを毎回実行するので、プログラム一覧をなめてOracle Javaの存在チェックする処理が必要。*2
【参考】
java - Downloading jdk using powershell - Stack Overflow
Microsoft WindowsのJDKのインストール
【改訂新版】 Windows PowerShell ポケットリファレンス
- 作者: 牟田口大介
- 出版社/メーカー: 技術評論社
- 発売日: 2013/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
*1:PowerShellの関数のみで実行したかったが、リクエストに載せるCookieの設定方法がわからなかったので、.NETのクラスを使った。
*2:要は冪等性を作りこむ必要がある。現状のコードのまま2回実行すると、インストーラを再ダウンロードし、再インストールを実行する。