JDK-6593761 : patch-in-place breaks if previous JRE image has locked files.
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.
Setup update for 6u5 and 6u6
Open IE load some page (no applets) and keep it minimized
Perform update to 6u5
Perform update again to 6u6
Error is shown while patching jqs_plugin.dll (screenshot attached)
The fix here is to go back to using the RemoveFile standard action to detect if the target image that we're patching has locked files. But before MSI actually removes the files, we rename the dir aside briefly so that it doesn't actually remove them. The we rename it back.
I was looking to this more, why it was showing the FilesInUse dialog on winXP, but not on Vista. This looks like a bug with MSI on winXP. In the RemoveFile table, we have the jre image getting deleted with the attribute "2", which means to only delete it during uninstall. However, it's still showing the FilesInUse dialog, even though we're not going to delete the file. So this appears to be a MSI bug fixed in Vista.
The problem here is that we no longer use the RemoveFile table to detect locked files in the INSTALLDIR during Install. We only use it for uninstall. So if the files in the jre image are locked, patching will break.
I would suggest that we do the following.
1. Use the RemoveFile to detect locked files in the target dir.
2. This will pop up the FilesInUse dialog during install, and make them have to shutdown those applications.
3. Before the RemoveFiles action actually takes place (when it actually removes the files), rename the target directory temporarily, so that nothing gets removed. Then rename it back before the patching takes place.
This is somewhat of a hack, but it is fairly easy to implement and we can still leverage the nice MSI FilesInUse dialog. We'll probably have to remove the "Ignore" button in the FilesInUse dialog too. There may be other ways of solving this problem too.
I installed jre1.6.0_04 from http://j2se.east/plugin/1.6.0_04-nightly/2007-08-16.15_01/windows-i586/jre160.exe
I opened IE 7.0. Process Explorer shows iexplorer.exe has the following DLLs in use:
See attachment CR6593761-ProcessExplorer.JPG
Update to 6u5 by running jre-6u5-windows-i586-p-iftw.exe from archives\1.6.0_04\nightly\2007-08-16.20_09\windows-i586
I am blocked by the Files in Use dialog. See attachment CR6593761-FilesInUse.JPG
"Blank Page - Windows Internet Explorer" - correct
"Google Calendar - Mozilla Firefox" - incorrect
Firefox is using 6u1
Did you see the Files in Use dialog when installing 6u5? If not, why not. If so, what did you do?
*** (#1 of 1): [ UNSAVED ] ###@###.###