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

Shared components causes constant problems - is there a better way than .MSI project?

My naive opinion is for my software - having components marked as shared is only asking for trouble. 

But I have a feeling that if I don't have them as Shared, then nothing happens when you uninstall - no unregistering, no file removal. Then I'm stuck resorting to file removes and custom actions.

Nothing in my software is shared by anything else on the machine. I purposefully make sure not to place assemblies in the GAC. I have COM dlls (mix of old ActiveX, and newer COMVisible assemblies) that do get registered but that's only so they can be used by my application, if I could avoid that I would. 

What I need to do is put files in directories and do some system stuff (dependency checking, environment variables, service, permissions, file associations, start menu items). And when I uninstall, get rid of all of that.

Maybe there is a better way than using a .MSI project for my use case?

 

 

 

Labels (1)
0 Kudos
(2) Replies
shunt
Revenera Moderator Revenera Moderator
Revenera Moderator

Rather than having your installer manually registering files, Installshield has a "COM Extract at Build" option.

This will extract the COM data from the key file of the component, and that registry data will become part of the MSI.
This means that the registry data is installed, uninstalled, repaired, modified and upgraded by the Windows Installer Engine - and not a custom action.

More information can be found here:
https://docs.revenera.com/installshield/helplibrary/ExtractingCOMServer.htm?

As a whole having your installer use native Windows Installer functionality will help it be cleaned up during an uninstall - if you have custom actions performing tasks at install time then these will have to be reversed with another custom action at uninstall time.

0 Kudos
shunt
Revenera Moderator Revenera Moderator
Revenera Moderator

With regards to the shared components setting - we have a great article which explains why New Components are shared by default and what the "Shared" setting is actually doing.

https://community.flexera.com/t5/InstallShield-Knowledge-Base/Why-Are-New-Components-Shared-by-Default/ta-p/4677

 

0 Kudos