VC9 Merge Module Design Kills Minor Upgrades - by simdoc

Status : 

  External<br /><br />
		This item may be valid but belongs to an external system out of the direct control of this product team.<br /><br />
		A more detailed explanation for the resolution of this particular item may have been provided in the comments section.

Sign in
to vote
ID 428663 Comments
Status Closed Workarounds
Type Bug Repros 0
Opened 3/31/2009 1:38:58 PM
Access Restriction Public


The design of the library redistributables merge modules in the various VC9 editions (RTM, SP1, QFE, etc.) will prevent a minor upgrade from being created for a product that was originally distributed with one version of the compiler (e.g., RTM) while the minor upgrade is distributed with another version (e.g., SP1).  

This failure exists because the new merge modules create new Windows Installer components for the library files in the update which causes the previous components for the earlier merge module to be removed from the package.  This is a fundamental violation of a minor upgrade.  Components cannot be removed.

In the past, the library files were only updated in the merge modules.  This allowed the updates to work as expected because the component structure for a given compiler version.

Complicated products can be distributed with VC++ and these products may require minor upgrades.  With this change, minor upgrades cannot be distributed with VC++ merge modules.
Sign in to post a comment.
Posted by simdoc on 8/31/2009 at 12:26 PM
A trivial change to the design of the merge module would allow more than one version of the merge module to be merged into a minor upgrade. If the Directory_ table is modified so that the source folder is different for each merge module (so no two merge modules share the same source directory for a component), all the merge modules from each library version could be merged into the update. This would allow the original library components to remain on the system during a minor upgrade and the new components would properly be added. During application removal, all merge module components from the different merge module versions would be uninstalled if no other product references the components.
Posted by Microsoft on 4/16/2009 at 3:20 PM
Hi Simdoc,

This is indeed a limitation with MSMs which contain Fusionized components. Fusion requires that each upgrade is a completely new set of components installed to a new location.

One work around is to install vcredist_x86.exe as a prereq before installing your product upgrade.

thank you,
George Mileka
Visual C++ Libraries
Posted by Microsoft on 4/1/2009 at 2:59 AM
Thanks for your feedback.

We are escalating this issue to the appropriate group within the Visual Studio Product Team for triage and resolution. These specialized experts will follow-up with your issue.

Thank you,
Visual Studio Product Team