COM deployment dependencies
-
22-09-2019 - |
Question
I have been running in to an issue where a COM dll that I am distributing with my application fails to register because the atl.dll is not registered on the machine.
The quick fix is to have the run regsvr32 on the dll, but I want something a little cleaner then that.
I don't have much experience with deployment and I was wondering if there is a way that I could determine if the atl.dll is registered on the machine and if not I could register it from code.
I currently have a C# custom action for my msi installer so I could possibly add logic there to perform the task.
Thanks in advance.
Solution
You will need to include the correct Merge Module with your installer. These will be installed to C:\Program Files\Common Files\Merge Modules
. If you don't find the required files, you probably haven't installed the "Redistributable Components" feature in either the Windows SDK and/or Visual Studio (I think it's unselected in both by default)
ATL90.DLL
can be found inMicrosoft_VC90_ATL_x86.msm
ATL80.DLL
can be found inMicrosoft_VC80_ATL_x86.msm