Coexistence of 64bit and 32bit version of a COM component

  • Thread starter Thread starter tt.monica
  • Start date Start date
T

tt.monica

Guest
Hi Gurus,

We have a set of COM components (DLLs) that are deployed as merge modules (*.msm) and shared by multiple applications. The client application could be 32bit or 64bit windows application and they may be coexisted on the same Win7 (32bit client may run in WOM64 mode).

We use the same source codebase and compile with 32bit or 64bit configuration to get 32bit and 64bit version of DLLs seperately. As a shared COM component, we prepare both 32bit and 64bit merge modules for the client redistribution.

The question is: Client A(32bit) use 32bit merge module and Client B(64bit) use 64bit merge module. When both A and B installed on the same machine, they works fine. But when uninstall either one, another one cannot work any more!!

My analysis:

After both the 32bit and 64bit merge modules are installed on Windows 7, the following KEYs can be found in register table:
HKEY_LOCAL_MACHINE\Software\Classes\MyComponent.ProgID
HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{MyGUID}\InprocServer32 (64bit DLLs)
HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{MyGUID}\InprocServer32 (32bit DLLs)

However, after the one merge modules(either 32bit or 64bit) are uninstalled, the following KEYs are also removed
HKEY_LOCAL_MACHINE\Software\Classes\MyComponent.ProgID

Could anybody tell me how I should deploy my 32bit and 64bit Merge Module to ensure uninstalling one does not impact another one?

I checked http://msdn.microsoft.com/en-us/library/dd464643%28VS.85%29.aspx but still not get the clear point for the solution.

Thanks a lot for the help!

tt.monica

Continue reading...
 
Back
Top