views:

222

answers:

2

I think the title says it all,

I have an activeX control, that ask the user if he want's to install it every single time the page loads (Even if it is already installed)...

Can anyone point me in the right direction? What I have tried so far:

  • Setting new Guids for the class & interface.
  • Changing interfaces names & method names.
  • Changing version number
  • Uninstalling and re-installing the activeX
+2  A: 

First see this MSDN post it sounds like what you are experiencing.

This can happen when the VerCache registry key may not have got updated during the upgrade of the control. For example, [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ext\Settings{D7D5ACA4- 4C57-4C75-8D68-BC185E924B4C}] "VerCache" This happens if the old and new versions of the control have the same “Created” date time stamp, “Modified” date time stamp and the file size.

If this registry key doesn't exist, you may have to use the Sysinternals Process Monitor tool to log a repro of the problem, then search the log for the correct registry value that is being checked. It's most likely under \Ext\Settings{}...but regardless, ensure that at least one of these parameters - “Created” date time stamp, “Modified” date time stamp or the file size, on the updated control is different from the old version of the control.

Also, I would use Process Monitor (Sysinternals) as the user installs the ActiveX control to check that it is making the correct registry entries. Search through the registry for the any GUID's associated with your "old" controls and latest. You may want to backup your registry before actually deleting any registry keys.

You could also try a registry cleaning or search tool.

If these don't help perhaps you could provide some more details about your ActiveX control.

  1. Did you use binary compatability?
  2. What Version of windows of user?
  3. Which version of IE of user?
  4. Is this only happening to this user? (this works for others?)

Did the user re-install any software lately?

How about checking :

  • The registry (Does your ActiveX make any registry changes?)
  • The user's PATH environment variable

Have you had the user unregister the dll? You can run this from the cmd line where the dll file is located on the hard drive:

From the command prompt, type “regsvr32 /u filename.dll” where “filename” is the name of the file that you want to unregister.

David Glass
Thank you for the input, but unfortunately it didn't solved my problem... +1 for the effort
Sergio
Well, I've fixed it. The problem was on the Install project that created the .msi file to be used in the .cab. Thanks
Sergio
How did you fix this problem in your install project?
Rick Minerich
@Rick-Minerich See Sergio's comment from yesterday. Hopefully he can add some more details about the configuration problems.
David Glass
A: 

To solve this I ended up writing a custom installer action which deleted VerCache before and after each install. I also wrote a really long blog post about it to vent. Hope this helps someone from falling into the same time sink.

Rick Minerich