ActiveX要求用户每次加载页面时都要安装

时间:2010-02-01 17:50:42

标签: c# asp.net activex

我有一个activeX控件,询问用户是否希望每次页面加载时都安装它(即使它已经安装)......

有人能指出我正确的方向吗?到目前为止我尝试了什么:

  • 为班级设置新的Guids&接口。
  • 更改接口名称&方法名称。
  • 更改版本号
  • 卸载并重新安装activeX

3 个答案:

答案 0 :(得分:2)

首先看this MSDN帖子听起来就像你正在经历的那样。

  

这可能发生在VerCache上   注册表项可能没有更新   在控制升级期间。对于   例,   [HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \分机\设置{D7D5ACA4-   4C57-4C75-8D68-BC185E924B4C}]   “VerCache”如果旧的和   新版本的控件有   相同的“创建”日期时间戳,   “修改”日期时间戳和   文件大小。

     

如果此注册表项不存在,   你可能不得不使用Sysinternals   Process Monitor工具记录repro   问题,然后搜索日志   正确的注册表值   被检查。它最有可能在   \分机\设置{} ...但是   无论如何,确保至少有一个   这些参数 - “创建”日期   时间戳,“修改”日期时间戳   或更新的文件大小   控制与旧的不同   控件的版本。

此外,我会使用Process Monitor(Sysinternals)作为用户安装ActiveX控件来检查它是否正在创建正确的注册表项。在注册表中搜索与“旧”控件和最新控件关联的任何GUID。在实际删除任何注册表项之前,您可能需要backup your registry

您还可以尝试使用注册表清理或搜索工具。

如果这些没有帮助,您可以提供有关ActiveX控件的更多详细信息。

  1. 您使用的是二进制兼容性吗?
  2. 用户的Windows版本是什么?
  3. 哪个版本的IE用户?
  4. 这只发生在这个用户身上吗? (这适用于其他人?)

  5. 用户最近是否重新安装了任何软件?

    如何检查:

    • 注册表(您的ActiveX是否进行了任何注册表更改?)
    • 用户的PATH环境变量

    您是否让用户取消注册了dll?您可以从dll文件位于硬盘驱动器上的cmd行运行:

    在命令提示符下,键入“regsvr32 /u filename.dll”,其中“filename”是要取消注册的文件的名称。

答案 1 :(得分:0)

为了解决这个问题,我最终编写了一个自定义安装程序操作,在每次安装之前和之后删除了VerCache。我还写了really long blog post来发泄它。希望这可以帮助某人陷入同一时间。

答案 2 :(得分:0)

在我的情况下,解决方案是在资源文件my_active_x_control.rc中修复我的ActiveX控件的版本

我读了这个blog

  

转到任何计算机并启动IE8。选择工具>然后选择管理插件   选择Show:Downloaded Controls下拉列表。查看列表   安装了Active X控件......

我的控件版本是1.0.0.1。一旦我在资源文件中更新了版本,连续安装就消失了。