我正在为 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 连接的线程:如何在自动化服务器列表中安装并注册用 VB.NET 编写的 COM Server for Excel?
我得到了关于我应该在注册表中更改某些内容的有用信息。我在那里做了一些搜索,我的 classId 在: 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(Default) 注册表项中有正确的版本号。
我在这里遇到了一个非常特殊的情况(我还不知道原因),但是我在 SubKey InstalledVersion 下有两个带有 (Default) 的条目。第一个是空的,第二个包含正确的值。我无法删除第一个,但只能删除第二个。在我更改了第一个(默认)之后,一切正常!