cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
LKM_N4EN
Level 6

COM Server Registration Sequence

I am using Basic MSI project to create setup for my application, and this will need to register some DLLs specifically after all other DLLs have been registered.

In the setup, I launched the component wizard to extract the COM info immediately. By default, the COM is not extract at build. I put the DLL into different subfeature. Let's say the component under subFeature1 need to be register before component subfeature2. I was thinking to make the component subfeature2 to be extracted at build. But this will not help me to make sure the COMs are registered later than subfeature1 during installation.

Is it possible to set the COM server registration order during installation?
Labels (1)
0 Kudos
(6) Replies
KathyMorey
Level 10

If you extract the COM information, either immediately or at build, the registration entries are entered into the Registry and related tables and written directly, without the need to call the registration functions. Consequently, you don't have to worry about the order of the dlls because they aren't actually being accessed during the install. Unless I misunderstood your question?
0 Kudos
LKM_N4EN
Level 6

Hi KathyMorey, thank you for your reply 🙂
Previously the application is using installscript project to create the setup, and the we call the registration function, hence we can set the sequence of DLL to be register in the target computer during installation. This is important as some of the COM information may overwrite others, so we need to make sure these certain DLL registries are written at last of the installation.

Now in Basic MSI project, as we can extract the COM information while adding these DLLs (as you said the registration entries are entered into the Registry and related tables) and I am not sure when these information written into target machine, the registry information that should be written at last (to overwrite others) is in the correct sequence.

Do you think is able to control on this? Or I have misunderstanding on the COM registration?
0 Kudos
KathyMorey
Level 10

If you use COM extraction, the information is written to the registry during the Registerxxx and WriteRegistry actions (between 4600 and 5000 in the InstallExecute sequence). There isn't any way I know of to control the order of those entries.

If there is no way to amend your code so that the COM entries are not overwritten, you may have to extract the entries for the dlls that need to be registered first, then self-register the ones that have to go last. I've never tried that, but the SelfRegModules custom action is performed after all the actions that write to the registry.
0 Kudos
LKM_N4EN
Level 6

Okay, I will try the self-register for those files that need to be register at last.
But I still open to other suggestions if possible 😛
0 Kudos
LKM_N4EN
Level 6

After I changed the properties of some files to be able to self register, it will add the entry in "ISSelfReg" table. In addition, I also fill up the the "Order" column in this table.

However, I read another statement which specifies "you cannot specify the order in which the installer registers or unregisters self-registering DLLs by using the SelfRegModules and SelfUnRegModules actions. These actions register all the modules listed in the SelfReg table. (refer to http://msdn.microsoft.com/en-us/library/aa372020(VS.85).aspx)

I am confused on this. Any guide?
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

The MSDN article references the SelfReg table and the corresponding actions built in to Windows Installer. The ISSelfReg table is an alternative provided by InstallShield; it has additional options including ordering by the Order column.
0 Kudos