从网页上下载控件时制作CAB包的方法

控件|网页|下载|下载控件

Internet 软件分发单位是“软件包”,它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 类文件或小程序。当 Web 页上 OBJECT 元素的 CODEBASE 特性引用包含.inf 文件的 CAB 文件时,Internet Explorer 3.0 和更新的版本将自动把 CAB 文件作为软件分发单位。
第一步:创建一个inf文件:
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。
一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下,
与现有硬盘中文件版本号相同的文件不被下载。
要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况,
请参考平台软件开发工具包(Platform SDK,)的设置和系统管理服务(Setup and System Management Services)
部分的\Setup API\Overview\INF Files目录下的内容。
下面就以我自己写的一个videoweb.dll为例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.
video.inf的例子:
;inf file for videoweb.dll
[version]
signature=$CHICAGO$

[DestinationDirs]
DLLSysCopy=11
IniWinCopy=25

[DefaultInstall]
CopyFiles=DllSysCopy,IniWinCopy
AddReg=videoReg

[DllSysCopy]
tdiio.dll
Decoder.dll
VideoWeb.dll

[IniWinCopy]
camer.ini
user.ini
xvidMP4.ini

[videoReg]
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC},"",%REG_SZ%,"Video Class"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Control
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"", %REG_SZ%,"%11%\VideoWeb.dll"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"ThreadingModel",%REG-SZ%,"Apartment"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus,"",%REG_SZ%,"0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus\1,"",%REG_SZ%,"131473"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ProgID,"",%REG_SZ%,"VideoWeb.1.1"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Programmable
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ToolboxBitmap32,"",%REG_SZ%,"%11%\VideoWeb.dll,102"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\TypeLib,"",%REG_SZ%,"{FC4352CB-BB55-498C-BB21-E4BAE2FC2584}"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Version,"",%REG_SZ%,"1.0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\VersionIndependentProgID,"",%REG_SZ%,"VideoWeb.1"
;end of INF file

DestinationDirs:指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32;
10 规定为窗口目录、WINDOWS或者WINNT。
videoReg:如果是自己写的控件:可以在本地先用regsvr32 xxx.dll注册后,从注册表中找到上面的注册信息。
当然以上仅仅是在internet上分发软件时一个很简单的inf文件,还有更复杂的inf文件。请看SDK。

第二步:把video.inf, tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.放在一个文件夹中。
第三步:开始制作cab文件,我是用IExpress工具制作的(该工具在winnt\system32目录下面)。
1:选择创建新的自解压指令文件。
2:选择仅创建压缩文件(ActiveX安装)
3:点击添加把你要供别人下载的文件添加
4:点击浏览 输入*.cab文件的存放地址(包含文件名)
5:就随便了
好了制作完成。
现在在你的网页中使用该控件,当别人访问你的网页时,如果他的机子上没有你的控件,浏览器就会自动下载安装。因为你的控件可能没有获得签名
因此得在你的浏览器中把浏览器的安全级别降低。在internet 工具中选择安全,选择自定义。找到下载未签名的ActiveX控件。选择其下面的提示或者启用。
在网页中插入:
<OBJECT classid=clsid:4BDA0AA3-2164-44B7-8A88-208A145F51DC
codebase="video.cab#version=2,0,0,1"
id=Video1 style="HEIGHT: 507px; WIDTH: 718px"></OBJECT>
该句.
注意:得把*.cab 文件你和的网页放在同一目录下。或者在codebase中指定*.cab的路径。

时间: 2024-08-12 20:45:31

从网页上下载控件时制作CAB包的方法的相关文章

activex 控件制作成cab包的问题_应用技巧

我的控件是自己写的,现在需要把它做成.cab包,以使其可以在客户端自动下载注册.我只知道使用cabarc.exe这个工具.但是不知道怎么写inf文件,怎么加入证书.ActiveX发布步骤:      创建PVK文件[私人密匙文件]      makecert   -sk   DigitalTitan   DigitalTitan.pvk      makecert   -n   CN=TelStar   TelStar      创建CER文件[公司证书]      makecert   -sk

c#-ASP.NET中实现直接从网页上下载文件

问题描述 ASP.NET中实现直接从网页上下载文件 我想制作一个空白网页,访问网页后直接下载服务器上的程序文件到本机,下载后自动 运行程序.请各位老大指点(最好是基于C#).谢谢 解决方案 出于安全的考虑,下载后启动程序不可能实现.除非本地部署activex控件,或者干脆你自己去写浏览器. 空白网页下载,这个可以实现 <script language="javascript" type="text/javascript"> window.location

使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容

原文:使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容     第一次在CNBlogs上发Post是提出一个有关使用WebBrowser控件时对SELECT网页元素操作的疑惑,这个问题至今也没有解决,后来有朋友在该Post的评论里询问WebBrowser控件如何在网页元素上绘制文本的问题--但是由于我的懒惰,竟然已有半年时间没有浏览过自己的Blog,因此没有看到这位朋友的评论而不能及时提供回答,真是愧疚.       大家都见过VS.NET的WebForm设计器,当我们在设计器

我做的可上传下载控件,欢迎使用。

控件|上传|下载|下载控件 这是控件的源程序:工程名:MY控件名:TESTFTP Dim FileName As StringDim connect As Boolean Private Sub CmdCd_Click()   Call Link  'Inet1.Execute , "cd c2000"  connect = True   End Sub Private Sub CmdList_Click()   If connect = True Then    Inet1.Exec

.net 实现图片上传的同时在网页中显示,主要是上传控件没有事件,想不出怎么弄,求大手指点

问题描述 .net实现图片上传的同时在网页中显示,主要是上传控件没有事件,想不出来怎么弄,求大手指点 解决方案 解决方案二:如果你是用的服务器控件,那也有事件的啊如果你不是的话,那就要用js来通知更新,可以的方法有:1.后台返回js,更新指定img2.前端定时轮询,超出次数则提示上传失败

JS禁用页面上所有控件的实现方法(附demo源码下载)_javascript技巧

本文实例讲述了JS禁用页面上所有控件的实现方法.分享给大家供大家参考,具体如下: 利用页面元素的特征,可以捕捉到所有元素. function DisableElements(container,blnHidenButton) { if (!container) return; var aEle; if (navigator.appName =="Microsoft Internet Explorer") //IE { for (var i=0;i<container.all.le

WEBS上自动下载控件的实现方法

例子代码如下所示: <SCRIPT LANGUAGE="VBScript"><!-- Function OCXTest()OCXTest = 1 dim ocxon error resume nexterr.clearset ocx = createobject("I_FLEXGRID.FlexGridCtrl.2")set ocx = nothingif err <> 0 thenOCXTest = 0err.clearexit fu

如何解决“呈现控件时出错”的问题

在制作控件的时候容易遇到" 呈现控件时出错"" 发生了未处理的异常.未将对象引用设置到对象 的实例." 这样的错误,如下图:( 也有可能仅仅只是因为未设置runat="server" 标签而导致该错误, 请先检查该项.) 但是在编译时/ 运行时也都是没有错误的. 分析 如图所示的情况我们称之为" 设计时" 以区别于" 编译时"/" 运行时" . 设计时 :在ASP.NET 环境中也就是当

asp.net silverlight批量上传控件实现方法

    /// <summary>     /// 文件的状态     /// </summary>     internal enum filestatus     {         /// <summary>         /// 准备就绪,等待上传         /// </summary>         ready = 0,         /// <summary>         /// 正在上传中         /// &