1

I'm writing a .NET 4.0 based ActiveX control for IE7+. I have to manage an interface with a key-reader device. I followed some great tutorials and articles about "how to do" it, and currently is working well.

My problems started when I wanted to deploy an other version of my control.

I'm using VS2010 with setup deployment project and cabarc for the .CAB. The 1.0.0.0 version went well. Currently I would like to get the 1.0.2.0 version working, and it is doing its job well, but IE always prompting for an install. Again and again.

What I did:

1: Changed the AssemblyInfoVersion.cs to version 1.0.2.0

2: Changed the .inf file according version to 1.0.2.0

3: Changed the .msi version to 1.0.2

And I changed the OBJECT tag in the HTML page to #version=1,0,2,0

So far so fine. It is installed! I can see it under the "Uninstall Programs", the version of the control is 1,0,2 ! Great, but the IE still wants me to donwload and install it every time when I open the page.

I saw a thread connected with Excel: How to get COM Server for Excel written in VB.NET installed and registered in Automation Servers list?

And I got usefull information about I should change something in the registry. I did some search there, and I fould my classId under : HKLM\SOFTWARE\Wow6432Node\Classes\CLSID{GUID}

I have here the following subkeys: InstalledVersion Implemented Categories InprocServer32 ProgId

I was happy, because I saw, that in the InstalledVersion part the version still 1,0,1,0. I changed it to 1,0,2,0 and... it did not worked. I serched through the registry, now everywhere the InstalledVersion is 1,0,2,0. The .dll version is 1,0,2,0. The installed control's version is 1,0,2. Under the InprocServer32 I have all three 1,0,0,0 ; 1,0,1,0; 1,0,2,0 versions. And of course in the HTML code the version is also 1,0,2,0.

(My machine is 64 bit Win7, IE9)

Could anybody help in this, what I missed?

Other problem with this whole scenario: After the version increase by the first install my dev machine is rebooting without any question. Do you have any idea what kind of settings can make this behavior?

UPDATE:

The problem solved. I'm kind of blind or just a bit tired because of this. But the problem is may important for the future:

First a summary about the issue: After a new version was deployed (installed well on client) the IE was always propting for install the version.

The problem source is in the registry. You should have the rigth version number in the InstalledVersion(Default) registry key.

I had a very special case here (and I don't know the cause yet), but I had two entries with (Default) under the SubKey InstalledVersion. The firs one was empty, the second one contained the rigth value. I could not delete the first one, but the second one only. After I changed the first (Default) everything worked find!

Community
  • 1
  • 1
András Ottó
  • 7,605
  • 1
  • 28
  • 38
  • Any chance you were creating a regvalue with the name "(Default)" instead of setting the default reg value (which then gives it a virtual name of "(Default)"? http://msdn.microsoft.com/en-us/library/xkfz6802(v=VS.80).aspx – dkackman Jun 05 '12 at 16:26
  • Thanks for the comment! Yes it was true too! – András Ottó Jun 06 '12 at 09:43

2 Answers2

0

The second problem with the automatic restart solved too.

This thread helped: MSI installer with Silent or Passive mode will automatically restart computer without prompt for user sometimes

Have to add the /qn /norestart or /promptrestart to end of an msiexec call, because without this flag the windows automatic restarts itself without questioning.

If somebody has a similiar issue, then here is the solution in my case:

[RunSetup]
run="""msiexec.exe""" /i """%EXTRACT_DIR%\KeyReaderEngineInstaller.msi""" /qn /promptrestart
Community
  • 1
  • 1
András Ottó
  • 7,605
  • 1
  • 28
  • 38
0

According to Microsoft Documentatation:

/promptrestart
Prompt before restarting option. Displays a message that a restart is required to complete the installation and asks the user whether to restart the system now. This option cannot be used together with the /quiet option.

You can either use /qn /norestart or just /promptrestart. In my case, just the IE had to be restarted, instead of the whole operational system. Therefore, I use /qn /norestart

Guilhermevrs
  • 2,094
  • 15
  • 15