关于在VS205下编写CAB包无法正常安装的解决方法.docVIP

关于在VS205下编写CAB包无法正常安装的解决方法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于在VS205下编写CAB包无法正常安装的解决方法

虽然微软对ActiveX越来越不信任,但是这个技术还是很多人喜欢用的,这个博客的编辑器貌似就用到了ActiveX。 在我们编写好ocx控件后只有在打包成CAB文件加入数字签名后才能正常发布,如果你用的是vc6,那么问题简单了,打包完成后不用考虑控件的运行库问题,现在的XP系统和将要淘汰的2kpro都已经有了这样的运行库。但是如果使用的是.net2005就会遇到有关运行库的问题,这些问题只能依靠CAB压缩包中的安装文件?.inf来解决。 首先看看基本的inf文件格式 [version] ;区域设置 signature=$CHICAGO$ AdvancedINF=2.0? [Add.Code] ;该项会指明该安装包中有哪些项,这里说明包中有ActiveX.ocx、msvcr80.dll、mfc80u.dll、msvcp80.dll?四个项 ;这里一般会使用文件名和项名相同的方法,主要是便于维护 ActiveX.ocx=ActiveX.ocx msvcr80.dll=msvcr80.dll mfc80u.dll=mfc80u.dll msvcp80.dll=msvcp80.dll [ActiveX.ocx] ;这就是Activex控件文件了 file-win32-x86=thiscab? ;表示所需要的这个文件就在当前的安装包中,file-win32-x86表示该文件是一个win32系统下的文件 clsid={A3B4C60F-24A7-40E8-A06B-1A5EFE5F0A43} ;这里是这个安装包的GUID这个值是在创建项目的时候系统生成在,一般存放在以项目名命名的idl文件中,使用项目的类信息的GUID RegisterServer=yes ;说明这个控件是需要注册的, ;一般情况下只有编写的文件是需要注册的,运行库文件和系统中可能存在的DLL文件是不用注册的,如MFC70.dll等 FileVersion=1,0,0,1 ;这个文件的版本,注意要用逗号隔开 [msvcr80.dll] ;这是ocx控件的第一个依赖文件,有的地方说明依赖文件必须按照依赖顺序安装,可以用所剩dll都依赖的文件最先安装”的规则来进行,但是我并没有在MSDN上看到什么地方有很明确的说明,并且在我自己的测试中也没有发现有关顺序的问题,并且很多地方都是将ocx控件写在最前面的,但是ocx文件是最依赖其他文件的,貌似按顺序写的做法有点“迷信” FileVersion=8,00,50727,42 ;这里是该dll文件的版本,这里注意下,这个版本可以在文件属性的版本选项卡中看到,不知道为什么这里显示的版本号有时会比最外面显示的版本号多一个0,注意,复制到inf文件后要将点分隔符改成逗号分隔符 hook=mfc80installer ;这个hook是个保留字,说明该项目被挂接到哪里,如果有则表示被挂接到目标项,hook不是一个必填项,这里表示该文件将被挂接到mfc80installer项 [mfc80u.dll] FileVersion=8,00,50727,42 hook=mfc80installer ? [msvcp80.dll] FileVersion=8,00,50727,42 hook=mfc80installer ;上面两项都跟[msvcr80.dll]一样,这里就不解释了 [mfc80installer] ;挂接项 file-win32-x86=17/helloactivex/mfc80.cab ;这里表示这个被挂接的文件的位置在一个地址 run=%EXTRACT_DIR%vcredist_x86.exe ;这里表示从这个地址下载到cab包后执行包里面的vcredist_x86.exe文件,%EXTRACT_DIR%表示下载后的解压目录 上面有一点没有说明白,就是“为什么会出现hook这个东西?”,很多的inf文件是这样写的 [Add.Code] msvcr80.dll=msvcr80.dll mfc80u.dll=mfc80u.dll msvcp80.dll=msvcp80.dll ActiveX.ocx=ActiveX.ocx [msvcr80.dll] file-win32-x86=thiscab ;该文件在当前安装包中 FileVersion=8,00,50727,42 RegisterServer=no? ;不需要注册 destdir=11 ;该文件将被安装到系统所在目录的system32下 ;........ 我使用这样的方法在没有安装过任何软件的2kpro和XP下测试过,均安装失败,其原因就是运行库不匹配,如果你的控件是用VS2005的MFC开发的话,使用这样的方法无法将msvcr80.dll,mfc80u.dl

文档评论(0)

ush829 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档