JRE 1.6.0_u10 でのインストールパスの変更

2010年1月9日の日記id:toby さんからトラックバックをいただきました。そのトラックバック先にて興味深い話題がありました。JRE 1.6.0_u10 から JRE のインストールパスが変更になり、古いバージョンが上書きされる模様です。この変更点を知らなかったので、確認してみました。

結論

JRE 1.6.0_u10 以降で初期設定のままインストールして最新版にアップデートすると、古いバージョンの JRE は残りませんでした

JRE 1.6.0_u10 以前をインストールし、アップデートしている場合、一度アンインストールして最新バージョンを再インストールするのがよいと思います。再インストールする際には、すべてのバージョンの JRE をアンインストールすること。ただし、バージョン依存の Java アプリケーションを使用する場合、そのアプリケーションの動作に影響が出るかもです。

リリースノートの確認

toby 様のところからリンクしている、JRE 1.6.0_u11 のリリースノートに以下の記述がありました*1。おぉー、確かにインストールパスが変更されているようです。この記述を読んで、「JRE 1.6.0_u10 以前をインストールしてアップデートしている場合、どうなるの?」と疑問に思いました。この疑問を解消するため、JRE 1.6.0_u07、JRE_1.6.0_u10 それぞれをインストールして、最新版にアップデートしてみて、古いバージョンの JRE が残るのか確認してみます。

Windows の Runtime Environment のインストール (patch-in-place と static)

JDK 6u10 では patch-in-place インストールがデフォルトとなり、JRE が jre6 という名前のディレクトリにインストールされます。以前は、jre1.6.0_10 という名前のディレクトリにインストールされていました。つまり、更新版ではデフォルトで jre6 ディレクトリがパッチ処理されます。

インストーラのインタフェースを使えば、JRE (たとえば 6u10、6u11 のいずれか) を静的にインストールするように選択できます。

http://java.sun.com/javase/ja/6/webnotes/6u11.html

JRE 1.6.0_u07、JRE 1.6.0_u10 からのアップデート

JRE 1.6.0_u07 の場合

JRE 1.6.0_u07 をインストールすると、初期設定のままだと「C:\Program Files\Java\jre1.6.0_07」にインストールされます(下記画像の左側)。この状態からコントロールパネルの「Java」を起動し、「アップデート」タブから [今すぐアップデート] を実行しました。最新版 JRE 1.6.0_u17 は、初期設定のままだと「C:\Program Files\Java\jre6」にインストールされ、JRE 1.6.0_u07 が残ったままとなります(下記画像の右側)。ただし、以後のバージョンは jre6 フォルダを更新していくと考えると、JRE 1.6.0_u10 以降の JRE は残らないでしょう。

このアップデート後にバージョン指定で java を実行してみると、指定したバージョンの java を実行できました。ただし、おそらく指定できるのは、インストールされている古いバージョンの Java のみだと思います。

C:\>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

C:\>java -version:"1.6.0_07" -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
JRE 1.6.0_u10 の場合

JRE 1.6.0_u10 をインストールすると、初期設定のままだと「C:\Program Files\Java\jre6」にインストールされます(下記画像の左側)。この状態からアップデートを実行しました。最新版 JRE 1.6.0_u17 は、「C:\Program Files\Java\jre6」にインストールされ、JRE 1.6.0_u10 は残りませんでした(下記画像の右側)。

このアップデート後にバージョン指定で java を実行してみても、指定したバージョンの java を実行できませんでした。

C:\>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

C:\>java -version:"1.6.0_07" -version
Unable to locate JRE meeting specification "1.6.0_07"

ちなみに一応 JRE 1.6.0_u11 から JRE 1.6.0_u16 まで同じように確認してみましたが、JRE 1.6.0_u10 と同じインストールパスとなりました。

参考情報 [2010年1月17日 追記]

*1:JRE 1.6.0_u10 のリリースノートには、この記載がない。不思議。