activex控件的更新后,每次新下载都生成一个Conflict.X文件夹,是漏掉了哪个版本定义导致的?

dengyejing 2012-05-12 12:28:21
在微软论坛上找到一个解释:http://support.microsoft.com/kb/196150

=================================
有某些情况下,在过程中的代码 (通常与安装 ActiveX 控件在 <object>标记中引用相关) 下载已下载的程序文件文件夹中创建一个冲突子目录的位置。 在创建它后,冲突目录用作文件安装在目标目录。

Internet Explorer 执行所有已下载的文件与 ActiveX 控件 (基本上,列出的所有文件 [Add.Code] 部分中) 相关联的以下的检查:
已下载的程序文件已经处于相同名称的文件吗?
是不同于以前安装,导致下载此文件的主要组件 (从 <object>标记) 的 CLSID。
下列选项之一:
文件本身具有不 CLSID。
文件本身具有主 CLSID,但它不同于已下载程序文件中已存在的文件的 CLSID。
如果所有三个问题回答为是的任何一个文件,一个唯一的子目录创建其中.x 是唯一的数字的命名的 CONFLICT.x。冲突的目录中安装了应该出现在已下载的程序文件文件夹中的 [Add.Code] 部分中的所有文件。
==================================

但是我不清楚这个“文件主CLSID”是指什么?我是用ATL写的,在主模块类里已经声明了APPID,并且.rgs文件里也写了AppID键的注册脚本:
class CFSWebPlayerModule : public CAtlDllModuleT< CFSWebPlayerModule >
{
public :
DECLARE_LIBID(LIBID_FSWebPlayerLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SERVER,"{B79598A8-E195-4f0c-9EB1-ADF5A2F561E7}")
};

HKCR
{
NoRemove AppID
{
'%APPID%' = s 'FSWebPlayer'
'FSWebPlayer.DLL'
{
val AppID = s '%APPID%'
}
}
}

并且注册后也看到这些信息确实写进了注册表里。但我按以下方式试验“重装”该控件时,还是导致冲突产生那个Conflict文件夹:
1、去注册表CLSID下面把我的COM类删掉
2、重新打开网页,又会提示是否要安装activex控件
3、装好后,c:\windows\download program files下面就多了个Conflict.x文件夹

按理说同样的dll文件,clsid也没变,重装的话直接覆盖或者完全不变就对了,为什么会产生这种冲突呢?
...全文
262 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon534706358 2012-11-05
  • 打赏
  • 举报
回复
我也出现了这个问题 我怀疑是ocx控件本身的问题 你解决这个问题了吗?可以联系我QQ:534706358 大家研究一下啊

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧