CoolSwarvy
Pilgrim

Registering DLL components

Hello Everyone,

I have some questions to do with registration of DLLs and OCX files in Installshield. I have some fairly serious gaps in my knowledge and was hoping someone could help fill in the gaps.

If some components within a feature are not selected as 'self-registration' do any of the DLLs and OCX files get registered? Is it necessary to build your own custom action to perform the registration process? Also, if the DLLs and OCX files are some how registered without a custom action, how would you change the order of registration? I am concerned that a component which uses another component is being registered before its dependent component is registered and so think I may need the freedom to change the order of registration. How would this apply for self-registering DLLs? How do I check if registration of a component was successful?

Any links to tutorials, guides or references would be useful.

Thanks,
CoolSwarvy
Labels (1)
0 Kudos
1 Reply
ITI_Randy
Flexera beginner

CoolSwarvy wrote:
Hello Everyone,

I have some questions to do with registration of DLLs and OCX files in Installshield. I have some fairly serious gaps in my knowledge and was hoping someone could help fill in the gaps.

If some components within a feature are not selected as 'self-registration' do any of the DLLs and OCX files get registered? Is it necessary to build your own custom action to perform the registration process? Also, if the DLLs and OCX files are some how registered without a custom action, how would you change the order of registration? I am concerned that a component which uses another component is being registered before its dependent component is registered and so think I may need the freedom to change the order of registration. How would this apply for self-registering DLLs? How do I check if registration of a component was successful?

Any links to tutorials, guides or references would be useful.

Thanks,
CoolSwarvy



Self-registration of objects is a violation of Windows Installer best practices and is not recommended as it is not reliable. See Windows Installer Best Practices in InstallShield help.
If you use the Component Wizard when adding a new component, you will see that it allows you to optionally “Extract COM Info Immediately”. With this selected, you will notice that the static COM properties are filled in for the component after the wizard completes.

If you look at the components “COM Extract at Build” property, you will notice that it is set to “No” when you use the above method to acquire static values for the COM registration. If you wish to re-extract (refresh) the COM data each time you build your project, you will want to set this value to “Yes”.

As to the “what” will be registered, several factors are considered, but basically if the component that contains the COM object is installed or updated, then the COM data is updated. In execution sequence, you notice that unregister processes occur first, then file removal, then moving new files to the target, and then registration of the new files. Remember to use Best Practices, i.e., only one object (.dll, .exe, .ocx, etc.) per component.

Order of registration is not specified. For a discussion of self-registering dlls in this regard, see https://community.flexerasoftware.com/showthread.php?23855-DLL-OCX-Install-Order
0 Kudos