I am designing a merge module in Visual Studio Installer. I am using a merge module to share a component with multiple programs I have created. The component is an automatic update dll. The merge module contains only the dll and a registry entry.

I created a 1.0 and 1.1 version of the merge module. I then put the 1.0 merge module into msi installer A. I put 1.1 merge module in msi installer B. If I install B, then install A, the dll from version 1.0 overwrites the newer dll in version 1.1. Does anyone know why this might be happening and how I can fix it to ensure that it does not overwrite a newer version?

I was also wondering if there was any way to install the new version of the merge module without having to update installation A or B. I can create an installation C that only installs the merge module component, but is there anyway I can make that the only thing the MSI does (doesn't create a program directory, does not make an entry in add/remove program files)? Basically I can install msi C and uninstall it, and the updated version should remain (because it is a shared component), but any trace of the program should be gone (that's my understanding). Is this right? And can I create the msi in a way that I get the same effect without requiring the uninstall?

Thank you for any help you can give.

Note: I have used Orca before for MSI editting if any solution to the problems requires that.