JDK-7019865 : PIT(b130): Downgrade scenario fails to work with latest PIT bundle
  • Type: Bug
  • Component: install
  • Sub-Component: install
  • Affected Version: 7
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows,windows_xp
  • CPU: generic,x86
  • Submitted: 2011-02-16
  • Updated: 2011-04-19
  • Resolved: 2011-04-19
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 7
7 b137Fixed
Related Reports
Duplicate :  
Description
JDK7 bundles used : jdk7-b130-PIT http://rehudson.sfbay/hudsonws/deploypit/bundles/windows-i586/b255-2011-02-14_40/
OS Tested: Winxp, Win7
Browser tested: IE7/IE8/IE9
This issue was reported earlier also http://monaco.sfbay.sun.com/detail.jsf?cr=6990701 and got fixed. But it's back again using mentioned PIT bundles. Once JDK7 is removed from the windows machine then applet should be able to load using the older version of JRE present on the system. That's not true with JDK7 PIt  build

Steps to reproduce
1) On windows box, install 6UR followed by JRE7
2) Load any applet using <applet> inside IE brower applet should get loaded fine using JRE7
2) Remove JRE7 and now system is left with 6UR jre only
3) Try to load same applet again and applet should get loaded fine with 6uR
If applet fails to load with 6UR then bug is reproduced

Comments
EVALUATION There are a 2 problems causing this. 1st problem: After b128, some functions are now using RES_PLUGIN_VERSION to pass the version. This variable will always be set to 1.7.0, which will not work when reregistering older versions of the JRE during downgrade uninstall. We need to use GetVersionInfo( with the params that are passed to these functions 2nd problem: Now that we call deploy.dll to register/unregister most common deployment modules, there is a problem for downgrade. These functions need to find Java7 JavaHome so that they can load msvcr100.dll and deploy.dll. But these downgrade functions are being called after the Java7 keys are removed, so they can't find JavaHome. We'll either need to figure out a way to pass the JavaHome down to these functions or keep the JavaHome registry around longer during the uninstall/downgrade.
16-03-2011

EVALUATION After uninstall of jre 7, I see some FindJavaHome Error in the install log: -- Start UninstallJavaRegSet v.1.7.0 -- -- installer.dll, UninstallJQS() begin -- -- installer.dll, UninstallJQS() return true -- -- installer.dll, InstallJQS() begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll, InstallJQS() FindJavaHome() failed. -- End in UninstallJavaRegSet -- Start in ReregisterCurrentJRE ** Start WINAPI InstallJava: 0 ** -- installer.dll, UninstallJQS(lpszVersion) begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll, UninstallJQS(lpszVersion) FindJavaHome() failed. -- Start in InstallJavaJREBrowserSettings -- -- installer.dll: RegJava2IExplorerDefault: begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll: RegJava2IExplorerDefault: FindJavaHome() failed. -- installer.dll, RegJava2BrowserDefault() begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll, RegJava2BrowserDefault() FindJavaHome() failed. -- End in InstallJavaJREBrowserSettings, return TRUE -- ** Start RegisterJavaWS v.1.6.0_26 (JAVA_HOME=C:\Program Files\Java\jre6) ** ** Start WINAPI CleanupTempFiles ** ** End WINAPI CleanupTempFiles ** -- installer.dll, InstallJQS() begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll, InstallJQS() FindJavaHome() failed. ** End WINAPI InstallJava ** -- Start in InstallJavaJREBrowserSettings -- -- installer.dll: RegJava2IExplorerDefault: begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll: RegJava2IExplorerDefault: FindJavaHome() failed. -- installer.dll, RegJava2BrowserDefault() begin -- ERROR: FindJavaHome Open(version) failed. -- installer.dll, RegJava2BrowserDefault() FindJavaHome() failed. -- End in InstallJavaJREBrowserSettings, return TRUE -- For the one associated with RegJava2IExplorerDefault, I believe the problem is in RegJava2IExplorerDefault in RegCommon.cpp. The call to FindJavaHome uses RES_PLUGIN_VERSION as the jre version. if (!FindJavaHome(RES_PLUGIN_VERSION, szHome, MAX_PATH, JRE)) { WriteLogFile("-- installer.dll: RegJava2IExplorerDefault: FindJavaHome() failed."); return false; } With jre 7 installer, RES_PLUGIN_VERSION is set to 1.7.0 and after uninstall of jre 7, the JavaHome for 1.7.0 doesn't exist. Question: why do we need to call FindJavaHome since there's an input parameter lpszJavaHome in RegJava2IExplorerDefault? The 6 update version of that function doesn't call FindJavaHome. Transferring back to install team for further investigation.
01-03-2011

EVALUATION The issue is reproduced by installing 6u24, then installing promoted jdk7 b131, uninstall jdk7b131. The applet will not load in IE. The "java -version" gives correct java version after downgrade, but plugin does not seem to work. This seems to be the same issue as 6990701(fixed in b123), it looks like it's a regression, send back to common deploy team.
01-03-2011

EVALUATION We need to make sure this is no longer reproducible in our nightly DS builds after Jennifer made the DS scripts to use the new dummies from the RE promotions.
22-02-2011

EVALUATION I don't trust the dummies from our JDK7 b130 PIT build, as they are out of date. I bet this will be not-reproducible when we have a new build.
16-02-2011