描述:
1,如何能作到:当访问网页下载cab文件执行安装后,第2次访问时不再下载该cab文件并不提示安装?原理是什么?
2,我在IE地址栏中输入http://localhost/my.cab时,为什么不会下载cab,而是将cab文件中的内容输出在页面上(输出的是乱码)?难道是IE的设置问题吗?
我是处学者,谢谢各位大哥!
解决方案1:
1、先检查组件是否已经安装(判断标准是clsid:279344D0-DB23-4BEE-A239-3D1E8C8D4D6D在注册表中是否已经存在),如没有安装,则下载安装。
2、上述中,如发现已经安装有对应clsid的组件,则进一步检查版本version,如本机当前版本低于安装包标明的版本(a.CAB#version=1,0,0,1),则下载安装,否则跳过。
控件下载一次以后,已经按照cab文件的描述将cab中包含的ocx或dll copy并在系统中注册过了。
当页面再次调用该控件时系统会首先检查该控件是否已经在机器上注册过,然后在检测系统中
该控件的版本与version=1,0,0,1描述的版本哪个新,如果版本要比version指定的低就不会在下载了。如果同一版本需要重新下载安装就要将ie->工具->设置->查看对象->删除控件。
在一个网页中调用cab的方法:
<OBJECT id=a codeBase=a.CAB#version=1,0,0,1 classid=clsid:279344D0-DB23-4BEE-A239-3D1E8C8D4D6D>"></OBJECT>
codeBase制定cab包所在的路径 classid为cab包的calssid,version指定cab包的版本号,网页运行的时候会到指定的目录下寻找cab包并且安装,如果已经安装的cab包比version指定的版本要低,会自动升级,否则就不会重复安装