JDK-6579208 : FamilyVersionSupport removed when installing jre-6u2-windows-i586-p.exe
  • Type: Bug
  • Component: install
  • Sub-Component: install
  • Affected Version: 5.0u13,6u2
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_vista
  • CPU: x86
  • Submitted: 2007-07-11
  • Updated: 2013-06-04
  • Resolved: 2007-09-12
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other JDK 6 JDK 7
5.0u14Fixed 6u4 b03Fixed 7Fixed
Description
FULL PRODUCT VERSION :
java version 1.6.0_02
Java(TM) SE Runtime Environment (build 1.6.0_02-b05)
Java HotSpot(TM) Client VM (build 1.6.0_02-b05, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Windows Vista Ultimate
running 'ver' returns: Microsoft Windows [version 6.0.6000]

A DESCRIPTION OF THE PROBLEM :
When installing jre-6u2-windows-i586-p.exe on Windows Vista the FamilyVersionSupport entry in the Windows registry is removed. This means that your recommend approach to figure out which java version is installed when running applets, http://java.sun.com/j2se/1.5.0/family-clsid.html, is not working any more. The result of this is that all Applets are running using the newest version of the installed JRE even though it requires for instance JRE 1.4.2.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1) Install Windows Vista.
2) Install all Windows updates.
3) Install j2re-1_4_2_08-windows-i586-p.exe.
4) Install jre-6-windows-i586.exe and observe how the FamilyVersionSupport entry is added to the Windows registry.
5) Install jre-6u2-windows-i586-p.exe and observe how the FamilyVersionSupport entry is removed from the Windows registry.


EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I did not expect the FamilyVersionSupport entry to be removed from the Windows registry.
ACTUAL -
The FamilyVersionSupport entry is removed from the Windows registry and the Applets are not using the correct JRE anymore. The following java script, recommended by you, is not working anymore:

<SCRIPT language="JavaScript">
     // Return true if the family version is supported.
     function isFamilyVersionSupported() {
        try {
           return (new ActiveXObject("JavaPlugin.FamilyVersionSupport") != null);
        } catch (exception) {
           return false;
        }
     }

     if (isFamilyVersionSupported())
        // Family CLSID is supported
        document.writeln("<OBJECT classid=\"clsid:{CAFEEFAC-0014-0002-FFFF-ABCDEFFEDCBA}\" ..... </OBJECT>");
    else
        // No family CLSID supported, continue to use specific version
        document.writeln("<OBJECT classid=\"clsid:{CAFEEFAC-0014-0002-0008-ABCDEFFEDCBA}\" ..... </OBJECT>");
</SCRIPT>


REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
Update the registry manually with the following reg file:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\JavaPlugin.FamilyVersionSupport]

[HKEY_CLASSES_ROOT\JavaPlugin.FamilyVersionSupport\CLSID]
@="{761497BB-D6F0-462C-B6EB-D4DAF1D92D43}"

Or reinstall jre-6-windows-i586.exe again.

Comments
EVALUATION On windows Vista, the installer calls into some functions in ssv.dll to setup ssv related registry keys. To ensure that the FamilyVersionSupport registry key stays after JRE installation, an additional check is needed in the RemoveProgIDs() function.
25-07-2007