部署现有ActiveX控件的新版本

时间:2012-06-05 13:34:12

标签: c# visual-studio-2010 activex asp.net-4.0

我正在为IE7 +编写基于.NET 4.0的ActiveX控件。我必须使用密钥阅读器设备管理界面。我跟着一些很棒的教程和关于“如何做”的文章,目前运作良好。

当我想部署其他版本的控件时,我的问题就出现了。

我正在使用VS2010和.CAB的安装部署项目和cabarc。 1.0.0.0版本进展顺利。目前我想让1.0.2.0版本正常工作,它的工作做得很好,但IE总是提示安装。一次又一次。

我做了什么:

1:将AssemblyInfoVersion.cs更改为版本1.0.2.0

2:根据版本将.inf文件更改为1.0.2.0

3:将.msi版本更改为1.0.2

我将HTML页面中的OBJECT标记更改为#version = 1,0,2,0

到目前为止一切都很好。它已安装!我可以在“卸载程序”下看到它,控件的版本是1,0,2!太棒了,但IE每次打开页面时仍然要我下载并安装它。

我看到一个与Excel连接的线程:How to get COM Server for Excel written in VB.NET installed and registered in Automation Servers list?

我得到了有关我应该在注册表中更改内容的有用信息。我在那里做了一些搜索,我将我的课程改为: HKLM \ SOFTWARE \ Wow6432Node \ Classes \ CLSID {GUID}

我这里有以下子项: InstalledVersion 实施类别 InprocServer32的 PROGID

我很高兴,因为我看到,在InstalledVersion部分,版本仍为1,0,1,0。我将它改为1,0,2,0并且......它没有用。我浏览了注册表,现在InstalledVersion的所有地方都是1,0,2,0。 .dll版本是1,0,2,0。安装的控件版本为1,0,2。在InprocServer32下我有三个1,0,0,0; 1,0,1,0; 1,0,2,0版本。当然,在HTML代码中,版本也是1.0,2,0。

(我的机器是64位Win7,IE9)

有没有人可以帮忙,我错过了什么?

整个场景的其他问题:在第一次安装版本增加后,我的开发机器正在重新启动,没有任何问题。你知道什么样的设置会导致这种行为吗?

更新

问题解决了。因此,我有点失明或有点累。 但问题对未来可能很重要:

首先是关于这个问题的摘要: 在部署了新版本(在客户端上安装好)之后,IE总是支持安装该版本。

问题来源是在注册表中。您应该在InstalledVersion(默认)注册表项中具有rigth版本号。

我这里有一个非常特殊的情况(我还不知道原因),但我在SubKey InstalledVersion下有两个条目(默认)。第一个是空的,第二个包含rigth值。我无法删除第一个,但仅删除第二个。在我改变了第一个(默认)之后,所有工作都找到了!

2 个答案:

答案 0 :(得分:0)

自动重启的第二个问题也解决了。

这个主题帮助:MSI installer with Silent or Passive mode will automatically restart computer without prompt for user sometimes

必须将/qn /norestart/promptrestart添加到msiexec调用的结尾,因为没有此标记,Windows会自动重启,而不会产生疑问。

如果某人有类似的问题,那么这就是我的解决方案:

[RunSetup]
run="""msiexec.exe""" /i """%EXTRACT_DIR%\KeyReaderEngineInstaller.msi""" /qn /promptrestart

答案 1 :(得分:0)

根据Microsoft Documentatation

  

<强> / promptrestart
  在重新启动选项之前提示。显示完成安装需要重新启动的消息,并询问用户是否立即重新启动系统。此选项不能与/ quiet选项一起使用。

您可以使用 / qn / norestart 或只使用 / promptrestart 。就我而言,只需要重新启动IE,而不是整个操作系统。因此,我使用 / qn / norestart