欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cab包自动更新问题

程序员文章站 2022-03-26 15:40:35
...
我制作的activex控件cab安装包,经过签名后,放在WEB服务器上,如果是初次使用,可以正确地安装到用户的系统上。后来对控件的版本号进行提升后,重新打包成CAB文件,然后签名,放到服务器上,但打开相应网页,并没有自动更新到新的版本。于是上网查找相关资料,发现一个帖子说,只有.inf文件中AdvancedINF定义的版本号、控件ocx或者dll的版本号、网页中引用控件时定义的#version=的版本号这三个版本号都一致的时候,cab包才会比较本地控件的版本号与服务器定义的版本号是否一致,如果发现不一致并且服务器的版本号大于本地的版本号就重新下载安装cab包,否者,不再下载安装cab包。一旦重新下载安装cab包,ie会自动更新加载项该控件的版本号。

另外需要注意的是:网页中引用控件的代码,比如写成:
<object width="0" style="display:none" height="0" id="abcObj" classid="clsid:BD1E9B61-F3B2-4A19-AB69-68E77CA81C42" CodeBase="http://www.abc.com/abc.cab#version=1,0,0,2"></object>

一定要记住version后面的数字使用半角逗号分隔,不是半角句号,我被这个给坑爹了一次。

还有一个地方需要注意:网页中引用控件的代码定义的#version=1,0,0,2,在进行版本比较的时候只会比较前两位,即MAJOR和MINOR。举个例子,如果控件的老版本号为1.2,新版本号为1.3,要把版本号写成1,2,0,1和1,3,0,1才能自动更新。