转)关于ActiveX控件网上发布后的自动更新研究

来源:互联网 发布:sql substring函数 编辑:程序博客网 时间:2024/05/01 16:22
(转)关于ActiveX控件网上发布后的自动更新研究
2010-02-01 14:30
Link:www.cublog.cn/u/26905/showart_221113.html

昨天做了一个CAB包发布,今天发现新版本的ActiveX控件不能自动更新,在做了N多试验后,得出结论:

1. 网页发布的时候,如下面代码
<OBJECT ID="test "
CLASSID="CLSID:xxxxxxxx-516F-41D6-xxxx-130831539940" 
CODEBASE=http://xxx/app.cab#version=1,0,0,3> 
</object>
当用户访问该网页的时候,先把version取出来,上例为1,0,0,3
然后在用户电脑上搜索对应DLL的版本,如果电脑的DLL版本比1,0,0,3小,那么就自动更新
由此可见cab配置文件app.inf里面的fileversion一点用场都没派上

2. 一个不断下载的死循环:
比如用户发布的DLL版本为1.0.0.2
发布网页代码 CODEBASE=http://xxx/app.cab#version=1,0,0,3
这样问题就来了,用户第一次访问网页,自动安装该控件,
当用户第2次访问的时候,CODEBASE里面版本是1,0,0,3,电脑上已有的版本是1.0.0.2,那么
IE继续提示需要更新控件,这样就陷入了死循环.

3. 我认为正确的版本发布应该是, DLL版本一定要>= 网页发布的codebase版本号,当然,一般来说是要一样的,不然会导致一些问题.

4. 用户更新DLL的时候一定要关掉其他IE,停止使用控件,不然计算机会提示需要重启.

5. 如果控件是用来做其他功能比如IE插件,而非嵌入页面的,那么<object>...</object>最好写在<head></head>里面


如果大家有什么问题,欢迎留言,一起探讨.
原创粉丝点击