JDK-6622174 : need to remove msvcr71.dll from the RemoveFile table
  • Type: Bug
  • Component: install
  • Sub-Component: install
  • Affected Version: 6u5
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic,windows,windows_xp
  • CPU: generic,x86
  • Submitted: 2007-10-26
  • Updated: 2010-09-17
  • Resolved: 2008-01-24
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
6u10 b11Fixed 7Fixed
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Description
There is a bug in MSI, where when it goes to delete each of our JRE files, it scans all processes to see which processes are using any files of the same name.

The bigger problem is specifically with msvcr71.dll  MSI goes to remove this in the jre/bin directory, and it also notices other random processes are using the same file (though their own copy).  So sometimes our uninstaller will ask users to showdown many apps that Java isn't even using, because these apps also use msvcr71.dll.

I believe the one fix would be to individually add files to the RemoveFile table for the jre/bin directory, and specifically leave out msvcr71.dll.  Then we'll need to manually remove it in the UninstallJRE function in RegUtils.dll.  Though this isn't really an elegant solution. 

Another approach to this problem would be to not use the RemoveFile table anymore, and use our new FilesInUse.cpp native win32 dialog.  We'd also have to do all of the removing of the JRE files ourselves.  This is probably the better solution.

Comments
SUGGESTED FIX http://sa.sfbay.sun.com/projects/deployment_data/6u10/6622174
10-01-2008

EVALUATION Move msvcr71.dll from the File table back into core.zip so Windows Installer doesn't know about it. Instead of bin\* in the RemoveFile table, add an entry for every file other than msvcr71.dll. MSIDuplicateUnzippedFiles will copy bin\msvcr71.dll to bin\new_plugin\msvcr71.dll. MSIRemoveInstalledFiles will try to delete bin\msvcr71.dll. (Windows Installer will ignore errors)
21-12-2007

SUGGESTED FIX Moved msvcr71.dll from the File table back into core.zip so Windows Installer doesn't know about it. Instead of bin\* in the RemoveFile table, add an entry for every file other than msvcr71.dll. MSIDuplicateUnzippedFiles will copy bin\msvcr71.dll to sbin ew_plugin\msvcr71.dll. MSIRemoveInstalledFiles will try to delete bin\msvcr71.dll. (Windows Installer will ignore errors) testcases: http://oklahoma.east/deployment/www/tests/1.6.0_10/6622174/testcases.html webrev: http://sa.sfbay.sun.com/projects/deployment_data/6u10/6622174
21-12-2007