JDK-6964872 : misplaced windows registry key after jdk uninstall
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 6u18
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows
  • CPU: x86
  • Submitted: 2010-06-28
  • Updated: 2011-05-17
  • Resolved: 2011-05-17
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.
JDK 6 JDK 7
6u22-revFixed 7 b115Fixed
Description
IBIS case 73146070

Problem Description: Improper Next Gen Plug-in referenced after uninstall of JRE 1.6.0_18 / _20.

Upon uninstall of 1.6.0_18 or 1.6.0_20 when 1.5.0_22 is the next highest underlying version, the following key is replaced incorrectly.

Should be:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA}\InprocServer32]
@=���C:\Program Files\Java\jre1.5.0_22\bin\ssv.dll���

But instead the uninstall of 1.6 is reverting the key to an invalid dll that doesn���t exist.
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA}\InprocServer32]
@="C:\\Program Files\\Java\\jre1.5.0_22\\bin\\jp2iexp.dll"

Jp2iexp.dll is the next gen plug-in which doesn���t exist in 1.5. Prior to 1.6 being installed this key was pointing to ssv.dll.
The result is the reference to 1.5.0_22 becomes corrupted and unusable.

We believe the proper course of action of the uninstall should be to revert back to the original setting prior to installation (which was pointing at the ..1.5.0_22\\bin\\ ssv.dll) as is customary with most uninstall scripts.

The impact of this is quite severe to our business, in the event an application is not java 1.6 compatible, we need to be able to rollback the desktop, this unstable uninstall script prevents that from occurring efficiently and requires a technician to physically visit the desktop to correct during office hours which equals downtime for users and loss of productivity. The desktops potentially impacted are over 300,000 across the enterprise

This Test result is re-creatable every time with any version of 1..5.0_xx and either 1.6.0_18 or 1.6.0_20 JRE���s installed and then uninstalled on top of the 1.5

Plesae note, the uninstall *does* indeed finish. But it puts the wrong value as seen here:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA}\InprocServer32]
@="C:\\Program Files\\Java\\jre1.5.0_22\\bin\\jp2iexp.dll"

Comments
EVALUATION The problem is likely in RegInstall.cpp. The RegCurrentVersionKeys function is responsible for setting up the correct dll name based on checking the "UseNewJavaPlugin" registry key. The "UseNewJavaPlugin" registry key is populated by the RegUniqueVersionKeys function via the RegUniqueVersion.rgs script. A possible fix is in the RegUniqueVersionKeys function by checking the JRE version (szVersion). If it's older than "1.6.0_10", remove the "UseNewJavaPlugin" registry key.
29-06-2010