ActiveX控件打包cab时INF文件的编写[转]
虽然微软对ActiveX越来越不信任,但是这个技术还是很多人喜欢用的,这个博客的编辑器貌似就用到了ActiveX。
在我们编写好ocx控件后只有在打包成CAB文件加入数字签名后才能正常发布,如果你用的是vc6,那么问题简单了,打包完成后不用考虑控件的运行库问题,现在的XP系统和将要淘汰的2kpro都已经有了这样的运行库。但是如果使用的是.net2005就会遇到有关运行库的问题,这些问题只能依靠CAB压缩包中的安装文件 .inf来解决。
首先看看基本的inf文件格式
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
上面有一点没有说明白,就是“为什么会出现hook这个东西?”,很多的inf文件是这样写的
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
我使用这样的方法在没有安装过任何软件的2kpro和XP下测试过,均安装失败,其原因就是运行库不匹配,如果你的控件是用VS2005的MFC开发的话,使用这样的方法无法将msvcr80.dll,mfc80u.dll,msvcp80.dll这几个控件依赖的文件安装到目标位置的,具体是什么原因我也不明白。
这里的hook就是为了解决上面说的问题:要给被按装该控件的机器安装一个运行环境。很多人可能都看过http://support.microsoft.com/kb/167158/这里说明了如何制作一个inf文件,但是很可惜,微软对mfc的下载支持到VC 6.0就结束了,并且,这里还有一个错误,在他的主要示例中有一段
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
上面的“VALUE=”是没有必要的,如果增加了该内容反而会让安装包无法下载。
有了在依赖文件dll的项中有了挂接的hook的值后安装文件会到hook的位置去找需要下载安装的文件,这里我将/Microsoft Visual Studio 8/SDK/v2.0/BootStrapper/Packages/vcredist_x86/vcredist_x86.exe文件做成一个cab文件MFC80.cab,这个包里面只有一个vcredist_x86.exe文件,没有其他文件。
按照上面的方法打包好mfc8的运行库并使用hook的方式将Dll和运行库文件挂接后就可以了。
以上内容在没有安装任何软件的XP和2k pro上测都通过了,顺便说下,Activex控件,只要在控件测试的那个工具中跑成了就是好的,如果目标机器上出不来就是环境问题,inf是解决环境问题的唯一途径。
最后补充一点,上面说的都是在发布Release版本的情况,如果是Debug版本就会少两个库文件“MFC80D.DLL”和“MSVCR80D.DLL”
本博客转载CSDN网友http://blog.csdn.net/immc1979/archive/2007/04/20/1572222.aspx,本人觉得写得非常的实在,一看就是从实际经验中总结出来的,借鉴了,感谢immc1979
转载于:https://www.cnblogs.com/matoo/archive/2011/09/20/2182324.html
ActiveX控件打包cab时INF文件的编写[转]相关推荐
- ActiveX控件打包cab时INF文件的编写
虽然微软对ActiveX越来越不信任,但是这个技术还是很多人喜欢用的,这个博客的编辑器貌似就用到了ActiveX. 在我们编写好ocx控件后只有在打包成CAB文件加入数字签名后才能正常发布,如果你用的 ...
- ActiveX控件打包、签名、嵌入详解
ActiveX控件打包.签名.嵌入详解 前言 在我们的一个项目中,使用到了大华网络监控摄像头枪机,网络上下载了其ActiveX插件,但是发现其所提供的类库没有打包处理.这就导致我们每次给用户安装的时候 ...
- ActiveX控件打包成Cab置于网页中自动下载安装
From: http://www.iteye.com/topic/110834 makeCAB.rar (188.5 KB) [背景] 做过ActiveX控件的朋友都知道,要想把自己做的ActiveX ...
- ActiveX控件打包成Cab实现浏览器自动下载安装
前言 我们在浏览器中使用我们自己的一些OCX,或者是DLL这一类的文件,在X86的机器上需要我们手动将这些文件拷贝到Windows/System32 文件夹下面去,然后通过Dos命令regsvr32 ...
- ActiveX控件打包成Cab置于网页中自动下载安装 (收藏未实践测试)
from http://blog.csdn.net/htqlhy/article/details/7937897?locationNum=12 [背景] 做过ActiveX控件的朋友都 ...
- ActiveX控件打包成Cab置于网页中自动下载安装(转载)
原文出自http://www.iteye.com/topic/110834 [背景] 做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必 ...
- 为ActiveX控件创建Cab文件
为ActiveX空间添加Cab文件 目的: 1. 依赖MFC库或ATL库等开发的ActiveX控件要正常的运行必须依赖这些库.但是你不能保证你用户的机器上装有与你开发环境相同的库,所以,当你发行一个 ...
- VS2005下MFC开发的ActiveX控件的部分总结 inf 篇
本博客转载CSDN网友http://blog.csdn.net/immc1979/archive/2007/04/20/1572222.aspx,本人觉得写得非常的实在,一看就是从实际经验中总结出来的 ...
- ActiveX 控件打包
网上有很多进行控件打包和签名的步骤,不过很遗憾的是他们发布的控件大多以VB进行的开发,可以直接使用VC6的package & deployment wizard对控件进行打包.我这里的开发的控 ...
最新文章
- mysql 绿色版远程访问_【Linux】MySQL解压版安装及允许远程访问
- a类不确定度计算器_统统帮您搞定:LIMS系统,换版、内审、期间核查、不确定度、数据分析…………...
- solr索引服务器的配置和solrj集成开发总结
- APK Expansion Files / Obb 接入介绍
- 结构体指针struct stu *p;和结构体变量struct stu p;结构体为什么要用指针引用而不用变量引用
- QT的QTextLayout类的使用
- A strange lift HDU - 1548(基础广搜)
- leetcode603. 连续空余座位(SQL)
- 20170124L07-03-01老男孩linux运维实战培训-生产环境大于254台机器网段划分及路由解决方案案例...
- Kubernetes 证书过期
- 牛客题霸-SQL篇——10~20题
- linux 修改时间 date
- CGAL DEMO 演示
- 基于python+django框架+Mysql数据库的电影院售票选座系统设计与实现
- php用pkcs1还是pkcs8,PKCS1与PKCS8的小知识
- 计算机网络原理最详细解说
- 万字拆解欧莱雅:百年美妆帝国的数字化远征
- Word - 简繁转换功能
- Rationla Rose
- 面试官问“为什么应聘这个岗位”,应该如何回答?