I have the following dilemma. I need to know what settings I should set to register my ActiveX objects so that they are not over written and can be removed. Here is the situation. I have built an MSI lets say version 1. It includes two files,


I install this on the production machine.

Then I create an update to the previous ActiveX_1.DLL and call it ActiveX_2.DLL with the same named ActiveX.INF file.
When I install the the second MSI it overwrites the INF file of the first one. Both ActiveX are registered. However, when I try to uninstall both, I get strage behaviour.

First, when uninstalling the ActiveX.INF, it removes the ActiveX.DLL and ActiveX.INF files. When I try to uninstall the ActiveX_1.DLL, it un registers the object, but does not remove the DLL.

Also, the reason for INF file, the install comes from a CAB file. A cab file can not be installed from IE because of security policy. In that case, do I really need the INF File, would I be fine by just installing the ActiveX_1.DLL and ActiveX_2.DLL as the only files in the MSI. Or do I need INF?

Any help?

0 Comments   [ - ] Hide Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
Answer this question or Comment on this question for clarity


As far as I know you do not need to include the .INF file. You just need the .DLL and associated registration info (preferably using the correct tables) all written by the same component.

If you want the .DLL etc removed during uninstall then ensure you don't have the permanent component attribute set (value 16 when viewing the component table). You should then be able to create a neat upgrade package which will remove ActiveX_1.DLL and install ActiveX_2.DLL as long as you do the ActiveX_2.DLL package it in the same way.

Hope this makes sense.

Answered 06/24/2008 by: MSIPackager
Third Degree Black Belt

Please log in to comment