Registering a COM Dll with an MSI

G

Guest

I'm creating an installer for a project that I've created. My project is a
Managed C++ 2005 project, and it compiles out to a COM Dll. I need to
register this COM Dll in order for the final product to function properly.
Initially I tried registering the Project Output, but I understand that there
are issues with doing that, so I have excluded the Primary Output for my
project, and I have added the dll from my Release folder directly. In the
properties for my Dll I have set the Register property to
vsdraCOMReleativePath, but I have also tried vsdraCOM, in both cases the dll
does not register on the target machine. If I run regsvr32 on the target
machine my dll will register and the application will work. Does anyone have
any suggestions on how to get this work correctly. I appreciate any help.

I should also probably point out that I did not remove the Primary Output,
because I like how the MSI project will automatically determine the
dependencies if the Primary Output is with the MSI. I only excluded the
Primary Output.
 
P

Phil Wilson

You don't want COM relative path because that's for a little-used
side-by-side implementation, so use vsdraCOM.

What happens with these settings is that Visual Studio captures the
registration information at build time and puts them in the MSI file so that
the Dll doesn't need to be called at install time. The question then is how
much (if any) registration data is being captured at build time. Internally
I believe the build calls RegCap.exe to create a .reg file, and then this
..reg file gets imported into the setup project with a few changes. If you
feel like installing Orca (an MSI file editor/viewer from the Windows SDK)
you could look at the MSI file to see what's in the Registry, Class and
Typelib tables - that's where the registration would be.

Something to keep in mind is that MSI installs use the per-machine/per-user
settings, so if you so a Just me install the registration will be in HKCU,
not HKLM.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top