首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

将ocx跟DLL文件打包成cab文件,inf的编写

2012-12-19 
将ocx和DLL文件打包成cab文件,inf的编写2722人阅读?评论(14)?43人阅读?评论(1)?[version]区域设置signatu

将ocx和DLL文件打包成cab文件,inf的编写

2722人阅读?评论(14)?43人阅读?评论(1)?[version]
将ocx跟DLL文件打包成cab文件,inf的编写;区域设置
将ocx跟DLL文件打包成cab文件,inf的编写signature="$CHICAGO$"
将ocx跟DLL文件打包成cab文件,inf的编写AdvancedINF=2.0?
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写[Add.Code]
将ocx跟DLL文件打包成cab文件,inf的编写;该项会指明该安装包中有哪些项,这里说明包中有ActiveX.ocx、msvcr80.dll、mfc80u.dll、msvcp80.dll?四个项
将ocx跟DLL文件打包成cab文件,inf的编写;这里一般会使用文件名和项名相同的方法,主要是便于维护
将ocx跟DLL文件打包成cab文件,inf的编写ActiveX.ocx=ActiveX.ocx
将ocx跟DLL文件打包成cab文件,inf的编写msvcr80.dll=msvcr80.dll
将ocx跟DLL文件打包成cab文件,inf的编写mfc80u.dll=mfc80u.dll
将ocx跟DLL文件打包成cab文件,inf的编写msvcp80.dll=msvcp80.dll
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写[ActiveX.ocx]
将ocx跟DLL文件打包成cab文件,inf的编写;这就是Activex控件文件了
将ocx跟DLL文件打包成cab文件,inf的编写file-win32-x86=thiscab?
将ocx跟DLL文件打包成cab文件,inf的编写;表示所需要的这个文件就在当前的安装包中,file-win32-x86表示该文件是一个win32系统下的文件
将ocx跟DLL文件打包成cab文件,inf的编写clsid={A3B4C60F-24A7-40E8-A06B-1A5EFE5F0A43}
将ocx跟DLL文件打包成cab文件,inf的编写;这里是这个安装包的GUID这个值是在创建项目的时候系统生成在,一般存放在以项目名命名的idl文件中,使用项目的类信息的GUID
将ocx跟DLL文件打包成cab文件,inf的编写RegisterServer=yes
将ocx跟DLL文件打包成cab文件,inf的编写;说明这个控件是需要注册的,
将ocx跟DLL文件打包成cab文件,inf的编写;一般情况下只有编写的文件是需要注册的,运行库文件和系统中可能存在的DLL文件是不用注册的,如MFC70.dll等
将ocx跟DLL文件打包成cab文件,inf的编写FileVersion=1,0,0,1
将ocx跟DLL文件打包成cab文件,inf的编写;这个文件的版本,注意要用逗号隔开
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写[msvcr80.dll]
将ocx跟DLL文件打包成cab文件,inf的编写;这是ocx控件的第一个依赖文件,有的地方说明依赖文件必须按照依赖顺序安装,可以用"所剩dll都依赖的文件最先安装”的规则来进行,但是我并没有在MSDN上看到什么地方有很明确的说明,并且在我自己的测试中也没有发现有关顺序的问题,并且很多地方都是将ocx控件写在最前面的,但是ocx文件是最依赖其他文件的,貌似按顺序写的做法有点“迷信”
将ocx跟DLL文件打包成cab文件,inf的编写FileVersion=8,00,50727,42
将ocx跟DLL文件打包成cab文件,inf的编写;这里是该dll文件的版本,这里注意下,这个版本可以在文件属性的版本选项卡中看到,不知道为什么这里显示的版本号有时会比最外面显示的版本号多一个0,注意,复制到inf文件后要将点分隔符改成逗号分隔符
将ocx跟DLL文件打包成cab文件,inf的编写hook=mfc80installer
将ocx跟DLL文件打包成cab文件,inf的编写;这个hook是个保留字,说明该项目被挂接到哪里,如果有则表示被挂接到目标项,hook不是一个必填项,这里表示该文件将被挂接到mfc80installer项
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写[mfc80u.dll]
将ocx跟DLL文件打包成cab文件,inf的编写FileVersion=8,00,50727,42
将ocx跟DLL文件打包成cab文件,inf的编写hook=mfc80installer
将ocx跟DLL文件打包成cab文件,inf的编写?
将ocx跟DLL文件打包成cab文件,inf的编写[msvcp80.dll]
将ocx跟DLL文件打包成cab文件,inf的编写FileVersion=8,00,50727,42
将ocx跟DLL文件打包成cab文件,inf的编写hook=mfc80installer
将ocx跟DLL文件打包成cab文件,inf的编写;上面两项都跟[msvcr80.dll]一样,这里就不解释了
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写[mfc80installer]
将ocx跟DLL文件打包成cab文件,inf的编写;挂接项
将ocx跟DLL文件打包成cab文件,inf的编写file-win32-x86=http://192.168.1.117/helloactivex/mfc80.cab
将ocx跟DLL文件打包成cab文件,inf的编写;这里表示这个被挂接的文件的位置在一个地址
将ocx跟DLL文件打包成cab文件,inf的编写run=%EXTRACT_DIR%vcredist_x86.exe
将ocx跟DLL文件打包成cab文件,inf的编写;这里表示从这个地址下载到cab包后执行包里面的vcredist_x86.exe文件,%EXTRACT_DIR%表示下载后的解压目录
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写

上面有一点没有说明白,就是“为什么会出现hook这个东西?”,很多的inf文件是这样写的

将ocx跟DLL文件打包成cab文件,inf的编写[Add.Code]
将ocx跟DLL文件打包成cab文件,inf的编写msvcr80.dll=msvcr80.dll
将ocx跟DLL文件打包成cab文件,inf的编写mfc80u.dll=mfc80u.dll
将ocx跟DLL文件打包成cab文件,inf的编写msvcp80.dll=msvcp80.dll
将ocx跟DLL文件打包成cab文件,inf的编写ActiveX.ocx=ActiveX.ocx
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写[msvcr80.dll]
将ocx跟DLL文件打包成cab文件,inf的编写file-win32-x86=thiscab
将ocx跟DLL文件打包成cab文件,inf的编写;该文件在当前安装包中
将ocx跟DLL文件打包成cab文件,inf的编写FileVersion=8,00,50727,42
将ocx跟DLL文件打包成cab文件,inf的编写RegisterServer=no?
将ocx跟DLL文件打包成cab文件,inf的编写;不需要注册
将ocx跟DLL文件打包成cab文件,inf的编写destdir=11
将ocx跟DLL文件打包成cab文件,inf的编写;该文件将被安装到系统所在目录的system32下
将ocx跟DLL文件打包成cab文件,inf的编写
将ocx跟DLL文件打包成cab文件,inf的编写;........

我使用这样的方法在没有安装过任何软件的2kpro和XP下测试过,均安装失败,其原因就是运行库不匹配,如果你的控件是用VS2005的MFC开发的话,使用这样的方法无法将msvcr80.dll,mfc80u.dll,msvcp80.dll这几个控件依赖的文件安装到目标位置的,具体是什么原因我也不明白。

这里的hook就是为了解决上面说的问题:要给被按装该控件的机器安装一个运行环境。很多人可能都看过http://support.microsoft.com/kb/167158/这里说明了如何制作一个inf文件,但是很可惜,微软对mfc的下载支持到VC 6.0就结束了,并且,这里还有一个错误,在他的主要示例中有一段

将ocx跟DLL文件打包成cab文件,inf的编写[mfc42installer]
将ocx跟DLL文件打包成cab文件,inf的编写???file-win32-x86=VALUE=http://activex.microsoft.com/controls/vc/mfc42.cab
将ocx跟DLL文件打包成cab文件,inf的编写

上面的“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”

?

?

vc下使用activex控件

http://222.30.226.10/hhcmc/study/teach_vc/teach_sp_24.htm

?

?

热点排行