Question

I am trying to create an MSI that will place two OCX files in the Program Files (x86) folder as well as register both the OCX files.

The first of the two OCX files (which actually makes use of the 2nd OCX at run-time) is successfully registered. The second OCX is not being successfully registered. I know this because if I run regsvr32 on the OCX that is not successfully registering, it then works in the application it is used for.

The registration information for the two OCX files were generated with the harvest tool (heat.exe). I used the heat tool on both OCX so I can't understand why OCX registration works for just one of them and not both.

How can I go about debugging this?

Was it helpful?

Solution

It's actually not that weird at all. COM extraction / harvesting is a tricky business. Given enough COM components and you'll find that frequently it doesn't go well.

You already have half the problem solved. The fact that regsvr32 fixes the problem tells you that you are close and not missing other dependencies and what not.

What you want to do is get a clean machine ( VM's are great for this stuff ) in the state where you are installed but only one is registered. Use a tool that can scan and capture the registry (InstallWatch is a decent one) before and after running regsvr32. Then compare the snapshot to see what changed.

You'll have to filter out some noise from other processes on the machine but with a little experience it should be obvious what changed. Work this into your wxs source, rebuild and retest ( again VM's are great ).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top