cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
stiggy8
Level 4

Simple Question

I have several COM dll's and dot net assemblies.

I've added these to my BASIC MSI project using the Add Component Wizard.

My question... Will these DLL's automatically be registerred (regsvr32 for COM and (regasm for Dot Net) when the project is installed?

If I look at the individual COM components in the IS project, they do have registry entries listed when I expand/select the Registry option under the Components expanded tree.

Please advise as it's not 100% clear to me.
Thanks...
Labels (1)
0 Kudos
(9) Replies
RobertDickau
Flexera Alumni

Depending on your project settings, COM information might be extracted once and stored in the COM-related MSI tables (Class, ProgId, etc.) or extracted during each build. There are several advantages to doing this, rather than using old-style self-registration (calling DllRegisterServer or running regsvr32.exe), such as supporting product advertisement, handing rollback correctly, and others.
0 Kudos
LisaSmile
Level 4

I am new to InstallShield 2008, and created the InstallScript Project, there are OCX, COM, and dot net dlls. previously we use the regsvr32.exe for COM and OCX, RegAsm.exe /codebase DotNet.dll /tlb. How can I register those files through InstallShield 2008, Thanks
0 Kudos
RobertDickau
Flexera Alumni

In an InstallScript project, you can put your COM DLLs and OCXs into one or more components with the Self-Register property set to Yes, and the run-time will register them...
0 Kudos
LisaSmile
Level 4

RobertDickau wrote:
In an InstallScript project, you can put your COM DLLs and OCXs into one or more components with the Self-Register property set to Yes, and the run-time will register them...



Thanks for your suggestion, I tried to put the .net DLL and ocx into one component with the self- register property set to yes, the ocx was registered, but the .net DLL could not be registered. we can manually register it by command line: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe /codebase DotNet.dll /tlb. But can not register it using the installshield in the component, is there any other way to register it? We need to deploy the .net dll to end user. How we do that?
0 Kudos
alegerlotz
Level 7

For the .NET dlls you need to turn on ".NET COM Interop" for the component that they're in.

Turn off the "Self Register" box on the file itself.

You should be all set after that.
0 Kudos
LisaSmile
Level 4

Thank you very much for your solution, I did the way you said, but I still can not get it registered, here is what I did: See the attachment
0 Kudos
alegerlotz
Level 7

This is what I've done in the past and its has worked properly for me.

I have not, however, used the .NET Precompile Assembly setting set to Yes.

Sorry this hasn't worked for you.

Perhaps you need a custom action that calls Regasm?
0 Kudos
LisaSmile
Level 4

Thanks for your suggestion, I successfully regasm by custom action and script function. I am glad it is working now
0 Kudos
Cromagnon35
Level 4

I had a similar issue in the past and even did the regasm via custom actions (and I had a lot of dll's 😉 ).

The fix to do it correctly was to set the component property(s) '.NET Scan at build' to 'Properties only'. 'Dependancies and Properties' is the default which caused the issue for me.
0 Kudos