/**
* note
* 带上系统有的Dll, 比如mfc42.dll, msvcrt.dll, ssleay32.dll, libeay32.dll等,
* 实验表明, 如果系统中的Dll和CAB中的Dll版本不同, 会导致CAB中的ocx下载后,注册不上.
* 如果CAB中不自带这些Dll, 有潜在问题. 当CAB中的ocx, exe, dll依赖特定版本的系统Dll时,程序运行不正常.
* 解决方法(需要验证): 在.inf中指定每一个文件的FileVersion, 用本地的测试网页测试,看是否运行正常.
*/
我缺张证书, CAB没有进行签名, 测试页面运行后, 执行ocx中的方法失败, 在IE的加载项中没有看到MainOcx.ocx, ocx没有注册上.
只能换个测试环境,再研究了. 或者先写最简单的单ocx, 然后慢慢加入其他的exe, dll, 再做实验。
手头有个demo的CAB是好的,在我的PC上也不行.
参考资料:
http://hi.baidu.com/flfboy/blog/item/9e4ca512d36500c7c3fd789b.html
改变下载的路径
http://topic.csdn.net/t/20020814/17/940677.html
实验还没做通, 在刚装好的Xp + vmware, 不能正常的下载. IE设置安全级别已经设定, 安全站点已经把lcoalhost和127.0.0.1加入了.
感觉还是inf写的有问题,已经调整了inf中文件的加入的顺序.
实验一下对mfc的dll也加入RegisterServer=yes. 和下载的路径到系统文件绝对不可能存在的路径.
实验确定, 是inf写的不对. 从百度文库上找了一篇资料, 搞定. 这篇资料好的地方是, 可以把cab内的文件解压到system32目录下的子目录下, 这就避免了和系统Dll冲突的可能性.
只要inf写对了, 不签名降低安全级别也能运行.
最后正确的inf如下:
html测试代码
运行效果
工程下载点: