WORK AROUND
The workaround/solution, if pending file rename entries exist for the jre installation directory after uninstall, is to reboot to cleanup the pending file rename operations.
P.S. lib\bundles\tnp\merged-rt.jar would be located under C:\Program Files\Java\jre6\ on XP.
|
SUGGESTED FIX
Read HKLM\SYSTEM\CurrentControlSet\Control\Session Manager, PendingFileRenameOperations,
search data read for INSTALLDIR
If found, block install with a new error message.
Need to handle differences in case (C:\Progam Files\Java\jre6 and c:\program files\java\jre6) and shortnames vs longnames (C:\Progam Files\Java\jre6 and C:\PROGRA~1\JAVA\JRE6)
|
EVALUATION
Kernel performs the rt.jar replacement in two steps:
1) Delete lib/rt.jar
2) Move lib/bundles/tmp/merged-rt.jar to lib/rt.jar
So if the Kernel completion got interrupted or otherwise didn't complete properly, you could potentially see a missing lib/rt.jar but a still-present lib/bundles/tmp/merged-rt.jar. The next JVM startup would then immediately attempt completion again (because the lib/bundles/tmp/finished file still exists).
But the symptom you're seeing, of a missing lib/bundles plus a missing lib/rt.jar, doesn't make sense for Kerneel. Removing lib/bundles is the very last thing Kernel does. It would only remove lib/bundles if the rt.jar file had been successfully moved into place, and it would never remove lib/rt.jar after having already removed lib/bundles, since the trigger conditions are then gone.
Chris suggested a plausble explanation for this: an uninstall notes some files being in use and marks them as delete-on-restart. You then continue to interact with the computer normally, installing a new Kernel JRE and so forth, without realizing the lurking danger. But when you eventually reboot the machine, the delete-on-restart time bomb goes off and lib/rt.jar is deleted, destroying your JRE. This explanation seems far more likely than it having to do with Kernel completion, especially since you specifically said it only happens after a reboot (reboots mean nothing to Kernel; it neither looks for them nor acts specially upon them).
Reassigning to install team.
|