【问题标题】:Deploy new version of an existing ActiveX control部署现有 ActiveX 控件的新版本
【发布时间】:2012-06-09 12:44:20
【问题描述】:

我正在为 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?

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

我这里有以下子项: 安装版本 实施类别 InprocServer32 程序编号

我很高兴,因为我看到 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) 的条目。第一个是空的,第二个包含正确的值。我无法删除第一个,但只能删除第二个。在我更改了第一个(默认)之后,一切正常!

【问题讨论】:

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


【解决方案1】:

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

这个帖子有帮助: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

【讨论】:

    【解决方案2】:

    根据Microsoft Documentatation

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多