网页下载CAB文件总结
网页下载CAB文件总结
原来的程序是一个EXE,现在需要封装成COM,然后打包成CAB文件,让客户通过网页调用。耗费了两天时间终于完成了,总结一下。
1、最初我是用VC6.0的MFC ActiveX生成了OCX,OCX中有一个对话框,通过IE控件来显示一个生成的网页文件,写完之后发现通过外部IE调用OCX的时候对话框中的IE控件显示不出来需要加载的网页。
没办法,只能让OCX返回网页文件的地址,再通过JS的window.open来显示网页。
2、实现了网页的显示,我以为已经完成了90%的工作,挺高兴,原来预计两天时间的任务不到一天就完成了,感觉挺爽,那就用一个小时的时间完成剩下的10%吧,用iexpress把OCX及相关的动态库打包成CAB文件,
挠头的事情发生了,网页无法下载这个CAB文件!更别提注册了!反复研究INF文件,反复生成CAB,反复的失败...
怀疑打包程序,用iexpress,用CABARC,甚至用VB自带的打包程序,结果都一样,失败,排除打包程序的问题,还是别冤枉微软了。
怀疑INF文件有问题,重写了一个MFC ActiveX小程序,INF文件简单的不能再简单了,打包,失败,排除INF文件问题。
...
一个同事问我,你的COM标准吗?靠,这个问题问的太好了!堪比“人为什么活着?”!赶紧用ATL COM生成一个小例子,打包成CAB,成功了!!!
严重鄙视MFC ActiveX,不伦不类的东西。
3、主要技术点:
INF文件的格式:
INF文件的格式;INF file for tkSoundExe.exe;DestDir can be 10 for Windows directory, 11 for Windows\System(32) directory, or left blank for the Occache directory.[version]signature="$CHICAGO$"AdvancedINF=2.0
[DefaultInstall]CopyFiles=install.filesRegisterOCXs=RegisterFiles[RInstallApplicationFiles]CopyFiles=install.filesRegisterOCXs=RegisterFiles[DestinationDirs]install.files=11[SourceDisksNames]1=%DiskName%,RptView.CAB,1
[Add.Code]RptView.dll=RptView.dllMSVCP60.DLL=MSVCP60.DLLMSVCP60D.DLL=MSVCP60D.DLLMSVCRT.DLL=MSVCRT.DLLMFC42.DLL=MFC42.DLLMSVCRTD.DLL=MSVCRTD.DLLcppbind.dll=cppbind.dllCacheODBC.dll=CacheODBC.dllRisDll.dll=RisDll.dllFTPClient.dll=FTPClient.dllris.ini=ris.ini[install.files]MSVCP60.DLL=MSVCP60.DLLMSVCP60D.DLL=MSVCP60D.DLLMSVCRT.DLL=MSVCRT.DLLMFC42.DLL=MFC42.DLLMSVCRTD.DLL=MSVCRTD.DLLcppbind.dll=cppbind.dllCacheODBC.dll=CacheODBC.dllRisDll.dll=RisDll.dllFTPClient.dll=FTPClient.dllris.ini=ris.iniRptView.dll=RptView.dll[SourceDisksFiles]MSVCP60.DLL=1MSVCP60D.DLL=1MSVCRT.DLL=1MFC42.DLL=1MSVCRTD.DLL=1cppbind.dll=1CacheODBC.dll=1RisDll.dll=1FTPClient.dll=1ris.ini=1RptView.dll=1
[RptView.dll]file-win32-x86=thiscabRegisterServer=yesclsid={279662D5-3EAE-4BD3-A8E0-8A503AA4F616}DestDir=11 FileVersion=1,0,0,1
[MSVCP60.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,8972,0
[MSVCP60D.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,8972,0
[MSVCRT.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,1,9844,0
[MFC42.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,9586,0
[MSVCRTD.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,9782,0
[cppbind.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=5,0,5105,0
[CacheODBC.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=5,0,5105,0
[RisDll.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=1,0,0,1
[FTPClient.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=1,0,0,1
[ris.ini]file-win32-x86=thiscabRegisterServer=noDestDir=11
[RegisterFiles]%11%\RptView.dll
在JS文件中,写下载CAB文件的代码:
document.write("<OBJECT ID='RptView' WIDTH=0 HEIGHT=0 CLASSID='CLSID:279662D5-3EAE-4BD3-A8E0-8A503AA4F616' CODEBASE='../addins/client/RptView.CAB#version=1,0,0,1'>");
document.write("</object>");
注意:CODEBASE最好为相对路径。
在JS文件中,调用COM接口,并弹出网页文件。
var objVar = RptView.GetRptURL("XXXXX");
window.open(objVar,'newwindow','height=700,width=900,top=5,left=150,toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no, status=no')
转载于:https://www.cnblogs.com/FlyingRoc/archive/2008/12/03/1346479.html
网页下载CAB文件总结相关推荐
- python beautifulsoup下载_使用Python和BeautifulSoup从网页下载.xls文件
你的剧本目前的问题是:url有一个尾随的/在请求时给出一个无效的页面,而不是列出要下载的文件. soup.select(...)中的CSS选择器正在选择具有属性webpartid的div,该属性在链接 ...
- cab文件打包的ActiveX控件
程序环境:Windows Xp SP2, IE 6, Tomcat 6.0, VC++6.0javascript 利用MFC开发的ActiveX控件要正常运行必须依赖MFC库.可是你不能保证你用户的机 ...
- Web发布cab文件打包的ActiveX控件总结
这两天做控件的web发布遇到了几个问题,现总结如下. 一.程序描述: 程序环境:windows Xp sp2, ie 6, tomcat 5.5, vc++6.0 程序过程:控件做成ocx文件,用于客 ...
- 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件
本文使用HttpClient依据url进行网页下载.当中 (1)HttpClient的相关知识请參见 HttpClient基础教程 (2) package org.ljh.search.downloa ...
- python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...
由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...
- 自动从mysql下载文件到powerbi_关于在Power Query和Power BI中从网页下载文件的小提示...
从网络下载数据时,通常最好是从专门为机器对机器通信而设计的API中获取数据,而不是从屏幕上实际可见的站点中获取数据.下载不仅通常更快,而且还常常获得更多非常有用的附加参数.在本文中,我将向您展示如何 ...
- python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...
有一个网页带有链接"单击下载",单击该链接可以下载文件. 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件. 如果我看到源代码,则可以看到锚 ...
- python批量下载网页文件夹_Python的urllib模块、urllib2模块批量进行网页下载文件...
由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...
- 如何极速下载网页上的文件? 怎么批量下载文献
如何快速下载网页上的文件?当今许多文件会被传输至网盘等云空间中,但有些文件仍可以通过网页下载,使用IDM我们可以快速下载不同类型的网页文件.怎么批量下载文献?在写论文时,常需要引用某些文献来支持自己的 ...
- 微信公众号 - 实现 H5 网页在微信内置浏览器中下载文件,可预览和下载 office 文件(doc / xls / ppt / pdf 等)适用于任何前端技术栈网站,兼容安卓和苹果系统!
前言 网上的教程都是让你写页面 "引导" 右上角三个点里,让用户自己去浏览器打开,其实这样用户体验并不好. 本文实现了 最新微信公众号 H5 网页(微信内置浏览器中),预览下载 o ...
最新文章
- fanuc机器人四边形编程_FANUC机器人示教编程:原始路径恢复功能介绍与使用方法...
- R语言ggplot2可视化:使用热力图可视化dataframe数据、自定义设置热力图的颜色、自定添加标题、轴标签、热力图线框等
- 五连阳回调买入法_短线高手总结的强势股回调买入法,散户需牢记
- 【剑指offer-Java版】29数组中出现次数超过一半的数字
- oracle中join另一个表后会查询不出一些数据_阿里规定超过3张表,禁止JOIN,为何?
- C语言学习及应用笔记之五:C语言typedef关键字及其使用
- 2003文件共享服务器搭建,用Windows Server 2003搭建安全文件服务器(2)
- python的优点有哪些-Python有哪些技术上的优点?比其他语言好在哪儿?
- 第一类边界条件,三角单元剖分,线性插值的位场延拓,LDLT高效求解
- 从零开始学WEB前端——HTML理论讲解
- tomcat运行超时问题解决
- Hive 连接 secured ES 踩坑日记
- android wear 微信支付,智能手表不是鸡肋 Pacewear能刷微信支付宝结账
- postgresql 计算时间差
- UOJ#311. 【UNR #2】积劳成疾
- 艾司博讯:拼多多新手如何正确使用多多进宝?
- Ubuntu: failed to fetch
- 如何评价蚂蚁的ant-design-vue UI框架
- 关于《报到证》的相关问答
- stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)