2023年11月30日发(作者:)
作者:meteor
email: xxzxly@
日期:8/29/2001 2:39:25 PM
二、 Internet 软件包部分
Internet 软件包是基于 .cab 的安装程序、它是专为从 Web 站点下载而设计的。
Internet Explorer 使用一个称为“Internet 部件下载”的过程来安装 Internet 应用程序。
打包和展开向导自动包括其所创建的软件包所需的信息。您可以使用 Visual Basic 的打包
和展开向导快速轻松地将您的 ActiveX 部件打包以供Internet 下载。打包和展开向导把部
件打包成一个浏览器能识别的文件,并创建一个 Web 页面,用户可以从其中下载。然后您就
可以将打包的结果部署到用户能存取的 Web 页面上了。
向导将部件及其所关联的文件打包到一个压缩的 (.cab) 文件中,供浏览器下载部件时
使用。向导确定运行工程需要哪些文件,然后收集这些文件,将它们压缩为一个.cab 文件,
并生成指向您的部件的 HTML;向导将打好包的文件部署到您选择的 Web 服务器位置上。
可以被打包供 Internet 部署的主要类型包括:在 Web 页上显示的 ActiveX 控件(.ocx
文件)、用于在客户或 Web 服务器上运行的 ActiveX .exe 或 .dll 文件、代替 Web 页显示
的 ActiveX 文档、DHTML 应用程序,基于客户的、通过使用动态的 HTML 来链接 HTML 页与
Visual Basic 代码的应用程序、IIS 应用程序、基于服务器的、链接 HTML 页与 webclass 对
象的应用程序Internet 软件包的部分。
Internet 软件包包括的主要文件有: 应用程序的主要 .cab 文件、所有必需的支持文
件、应用程序的任何辅助 .cab 文件。主要 .cab 文件包括工程部件,例如应用程序的可执
行文件或 DLL、或控件的 .ocx 文件、一个引用辅助 .cab 文件以及包含安全性和注册表信
息的 .inf 文件,以及不属于辅助 .cab 文件的所有必需的从属文件;支持文件包括 HTML 文
件、Active Server Pages (.asp) 文件、各种格式的图形文件或应用程序运行时必需访问的
其它文件;辅助 .cab 文件提供了一个有效的途径,可以确保用户使用的是该部件的最新版
本。如果辅助 .cab 文件中部件的较新版本已经可以从外部 Web 站点上获得,则下载您应用
程序的用户将自动收到该部件的更新版本。
注意:如果不能或不愿意让应用程序的安装程序需要与 Internet 的连接,则可以将辅
助 .cab 文件放置在您的 intranet 的服务器上。intranet 服务器通常提供了更快地下载,
并允许用户从安全的网络下载。
在为供下载的 Internet 应用程序或部件打包之后,您就可以将其部署到 Web 服务器上
的一个特定位置上了,用户可以从该位置访问这些应用程序或部件。通常,您的软件包被作
为一个现存 Web 页面的一部分来引用,也就是说,您的控件或其它部件宿驻在一个 Web 页
面上。当用户访问宿驻您软件包的 Web 页面时,系统将该软件包下载到用户的计算机上。该
软件包在确认安全性、打开、注册、安装之后被激活。所有这些都发生在后台,并由浏览器
控制。
在准备好供下载的 Internet 应用程序和部件后,必须将它们打包为一个可通过浏览器
发布给用户的文件。此外,还必须执行一些安全性设置,以确保您的应用程序不会损害用户
的计算机。这些步骤包括: 对部件进行数字署名,以便用户能验证部件的内容,并知道您是
该软件的开发者;设置安全性级别来保证您的部件不会损害用户的计算机或毁坏其数据;为
任何需要许可证的部件安排许可。当添加一个 ActiveX 控件到 Web 页面时,可以将其发布
给从该页面下载该控件的任何用户。除非对该控件进行了许可,否则很难防止最终用户取走
您的控件并在他们自己的应用程序中使用。许可证可以作为控件的一种版权,来防止未经授
权的使用。
打包和展开向导在为 Internet 部件下载打包代码时创建两种类型的文件:发布文件和
支持文件。发布文件放在启动向导时指定的目录中,该目录一般包含 .cab 文件和任何与之
相关联的.htm 文件。注意:如果生成 .cab 文件后对工程进行了修改,例如修改文件列表,
以使其包括在下载中或对部件进行数字签名,则需要重新生成 .cab 文件。向导为支持文件
创建一个目录并把 .cab 的输入文件(.inf)放入该目录。此外,支持文件目录还包括 Diamond
Directives (.ddf) 文件及其他下载需要的文件。
以下列出了向导创建的所有文件类型:
.cab文件是Windows 安装文件或包含.ocx 文件、.inf 文件和其他从属文件的“压缩包”
文件。可以对它进行数字签名以防篡改。
.htm 文件是用于显示 Web 页面的 HTML 文件,该文件包含指向 .cab 文件的链接并用
于启动下载过程。
.ddf 文件是Diamond Directives 文件,这是用于创建.cab 文件的工程文件。
.inf 文件是代码下载信息文件,该文件包含有关如何安装控件的信息,并允许自定义安
装。
.ocx 文件是ActiveX 控件,可以对它进行数字签名以防篡改。
.dll 文件是ActiveX 文档或代码部件。
如下为向导自动创建的.htm 文件。
〈HTML〉
〈HEAD〉
〈TITLE〉记账单.CAB〈/TITLE〉
〈/HEAD〉
〈BODY〉
〈!--如果这页上的任何控件需要授权,您必须创建一个授权包文件。 运行 LPK_
来创建要求的 LPK 文件。 LPK_ 将从 ActiveX SDK 中找到,
/intdev/sdk/. 如果您有 Visual Basic 6.0 CD, 您可以
在ToolsLPK_TOOL 目录下
下面是对象标记的例子:
〈OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"〉
〈PARAM NAME="LPKPath" VALUE=""〉
〈/OBJECT〉
--〉
〈OBJECT ID="UserControl1"
CLASSID="CLSID:5D970D42-D857-11D2-A0A1-0080C8E2D955"
CODEBASE="记账单.CAB#version=1,1,0,91"〉
〈/OBJECT〉
〈/BODY〉
〈/HTML〉
示例中的第二个 OBJECT 标记包含了一个类标识符为
5D970D42-D857-11D2-A0A1-0080C8E2D955,版本号为1,0,0,1。您所创建的每个 ActiveX 控
件都有一个不同的类标识符。此类标识符用于创建 HTML 页面上控件的实例,与将控件放置
到 Visual Basic 窗体的过程类似。Internet Explorer 使用类标识符检查注册表来判断控
件是否存在。当不存在或现有控件的版本比 CODEBASE 属性中指定的旧,Internet Explorer
将下载并安装指定的文件。
OBJECT 标记的重要部分包括:
CLASSID 类标识符,包含部件的类标识符。
ID 部件的名字,用于脚本中,与 Visual Basic 窗体中控件的 Name 属性相同。
CODEBASE 所需控件的最低版本号和安装位置。
由于Internet 软件包中问题比较多,向导中创建的文件往往不能正常工作,下面就常
见的几个问题分析其原因及解决方法。
1、 程序不下载
问题表象:
在一个intranet网建立内部查询网页,服务器操作系统为Windows NT 4.0,在客户机
上用VB 6.0的中文企业版生成一个ActiveX用户控件(*.OCX),文件存于服务器,在此客户
机上通过IE 4.0浏览完全可运行此程序,然而在另一客户机上则无法运行此控件,用IE 4
浏览时,屏幕上一个进度条窗口很快一闪而过,然后浏览器窗口什么也不显示。
问题解决:
问题出在打包程序生成HTML文件上。用记事本打来html文件可以发现,该文件使用
FRAME调用html文件,这是不正确的。
在本地用IE打开html文件时,IE把SRC所指的文件按文件方式读入,IE可以识别html
文件文件的结构并正确运行。可是从网上下载html文件时,IE通过Server接收html文件
的数据。而在正常情况下,FRAME语句中的SRC所指应为一个HTML文档。这里,ActiveX 用
户控件是利用〈FRAME SRC="..."〉调用的,这在本机浏览时不会遇到问题。但Internet
Explorer在从服务器调用HTML时,它认为凡是出现在〈FRAME SRC="..."〉中的都应该是HTML
文档,如果无法识别该文件,就下载并保存该文件。屏幕上一个进度条窗口很快一闪而过就
是IE在下载文件。若要解决这个问题,不要使用〈FRAME SRC="..."〉,而改用〈A〉〈/A〉链
接方式,一般就不会有问题了。
所以你只要修改html文件,用如下的方法调用就可以解决问题:
〈ahref=/〉test〈/a〉
把改为你的地址并把html文件放入正确的目录中。
例如我们需要由调用同一目录下的“记账单.htm”,可以使用如下方法。
内容如下:
〈head〉
〈link REL="STYLESHEET" TYPE="text/css" href="../"〉
〈base target="right"〉
〈title〉费用管理菜单〈/title〉
〈/head〉
〈body topmargin="0" leftmargin="0" bgcolor="#8a7a5a"〉〈font color="beige" face
style="BACKGROUND-COLOR: #dcc8aa"〉〈/font〉
〈table border="0" width="100%" cellspacing="0" cellpadding="5" height="100%"〉
〈tr〉
〈td width="100%" height="32" bgcolor="#dcc8aa"〉〈p align="center"〉
〈font color="beige"〉费用管理〈/font〉〈/p〉
〈/td〉
〈tr〉
〈td height="18" width="100%"〉
〈p align="center"〉〈font color="#ffffff"〉 〈a
href="server/gfylbeta/money/Program/记账单.htm"〉医院记帐单〈/a〉〈/font〉
〈/p〉
〈tr〉
〈/table〉
〈/body〉
〈/html〉
现在用IE打开记账单.htm并点击“医院记帐单”,记账单.htm就可以正确运行了。
〈/SCRIPT〉
2、 程序下载后却不运行
问题表象:
用Vb生成一个简单的ActiveX用户控件(*.OCX),并设定编译时版本自动加1,按照微
软的提示编译成OCX文件,再用打包程序生成Internet下载程序,在本机上用IE 4.0浏览
正常其他机器用IE 4浏览时却不运行,查看C:WINDOWSDownloaded Program Files及
C:WINDOWSTemporary Internet Files目录从版本号可知下载程序已下载。
问题解决:
原因是ActiveX控件没有被正确安装在客户机上,还有一些所需要的文件并没有下载到
客户机,此问题与Vb运行所需要的连接库有关。
你当然可以手工在客户机上安装这个控件,或者每一台机器上都安装一次Vb,但那样太
麻烦并且很难保证版本一致性。我们还是借助向导来完成这一工作。
在向导选择“下一步”继续下去,直至“包含文件”项中。
由于您生成的ActiveX用户控件(*.OCX)中使用了别的一些控件,那么在下载时会自动
寻找相关的一些文件,如果找不到,则程序不会下载。所以,我们需要把相关的一些文件手
工地添加进去。
如图所示
由于该ActiveX用户控件(*.OCX)还引用了一些其他的相关一些文件(常见的有DLL、
OCX、TLB等),如、、FlashControls_、
等。我们也需要为这些文件生成一个CAB文件,当该ActiveX用户控件(*.OCX)用到时会自
动查找并下载。
在“包含文件”项中把您用到的相关文件选中,然后选择“下一步”,来到“文件源”中,
将您所用到的一些相关文件在指定的目录中生成CAB文件。
重要提示:发布的DLL、OCX、TLB等文件要与生成的CAB文件同名!并且每一个相关的
文件都要生成自己的CAB文件。
例如,选中FlashControls_并选择“从其他web站点下载”项,然后输入您
指定的目录位置 server/vb6/及生成的CAB文件,文件名为
FlashControls_。相应地,对应为
server/vb6/;对应为
server/vb6/,另外有些特别的如对应为
server/vb6/ ;VB6 Runtime AND OLE Automation对应为
server/vb6/ 。当然,您自己要生成的ActiveX用户控件(*.OCX)要选
择“包含在此压缩文件中”选项。
如图所示
最后,向导会建立两个文件:*.cab和*.htm,并且在server/vb6/目录中生成
许多压缩包。*.cab文件包括了你的ActiveX控件,应该把它放在服务器上。*.htm其核心是
修改Object标签的Codebase属性。这样用户机的IE 4.0在浏览时如果没有在客户机找到你
的控件,就会利用Codebase属性从服务器上下载*.cab文件,并自动解包、安装并注册ActiveX
控件。
打包和展开向导能够帮助您为自己的 Visual Basic 应用程序创建和发布专业的安装程
序。除了为应用程序创建 .cab 文件之外,该向导还通过编译随 Visual Basic 一起安装的
安装工具包工程来为应用程序创建安装程序。使您的程序在不同的计算机环境下都能“安居
乐业”,的确是程序员的好帮手。
上述程序在中文Windows 98和 VB6.0中文企业版下调试通过。


发布评论