I've been trying to use WiX 3.7 to install a COM+ assembly. I've been using several WiX code snippets I found here on StackOverflow. Although I can generate an MSI, when I then install the msi it fails with errors that look like this:
RegisterComPlusAssemblies: DLL: C:\Program Files\Kutana\Kappris\Carson.dll
ComPlusInstallExecute: ExceptionInfo: Code='0', Source='System.EnterpriseServices', Description='Could not install type library 'C:\Program Files\Kutana\Kappris\Carson.tlb' into application 'COM+ Carson - Kappris Print Cache'.', HelpFile='', HelpContext='0'
ComPlusInstallExecute: Error 0x80020009: Failed to invoke RegistrationHelper.InstallAssembly() method
ComPlusInstallExecute: Error 0x80020009: Failed to register .NET assembly
ComPlusInstallExecute: Error 0x80020009: Failed to register assembly, key: MyComPlusAssembly
ComPlusInstallExecute: Error 0x80020009: Failed to register assemblies
No matter what I try I can't do this with WiX. I know other people have had the same problem installing COM+ with WiX but I don't think anyone's got further than blaming WiX.
I wondered if it would be OK to manually export the COM+ application from the Component Services control panel, which creates an MSI installer. And then I could use dark.exe to generate WiX source code from the MSI.
I've actually done this and I can build an MSI that installs the COM+ App. But is this a good idea?
I have misgivings: Firstly, the component now gets registered in the GAC even though when I manually registered the assembly using regsvcs it wasn't in the GAC. Secondly, the exported MSI contains three files - the dll, its associated tlb and another 'APL' file which is an undocumented internal format generated as a side-effect of the export.
What problems can people see using this method of installing a COM+ App? Should I worry that I don't know anything about the APL file? If you can tell me how to do it using WiX I'd be happy with that. Just looking to be able to do the installation...
COM+ Deployment: I have only dealt with COM+ a few times, even though I am an experienced setup developer. It seems genuinely messy to deal with, extremely poorly documented and worst of all: causing intermittent problems
- the worst kind of problems to debug since I experienced different results on different MSI runs. Generally it worked, but sometimes it crashed, and then it crashed repeatedly at some points. I tested a lot. I concluded that since COM+ is some sort of event queue for distributed events (I don't know too much about the technology) there are ample opportunities for confounding variables during each setup run.
Component Services: I believe I ended up using the exported MSI from Component Services at one point, and at other points I set up the COM+ application on the system and imported it to Installshield at build time. As I recall there were problems with both approaches. I don't remember all the details, it was long ago. Installshield registered fewer COM settings than the exported COM dll from component services. I never figured out why, even after talking to Installshield support. It was also necessary to have the application properly installed on the build system to be able to import it. Hassle and undesirable on a build computer.
APL File: If I were you I would use the exported MSI as it is, and perhaps run it separately along with another MSI installing the rest of your application - embed it all in a batch file or use a bootstrapper. I definitely remember trying to change the exported MSI and have it break repeatedly in the process. Some sort of problem with the APL file not being applied properly to the COM+ application (the APL file is some sort of COM+ settings file that I never understood - largely undocumented). Again: extremely poorly documented the whole process, and I never figured out why it happened.
Sorry for not being of more help, but I will still post this to ensure
this information is out there and people know what they are getting
into with COM+. Use the exported MSI from Component Services is my advice, and don't touch it after export.
- How to update a COM+ applications and create its msi file using PowerShell?