《多媒体软件设计技术》课件第9章_第1页
《多媒体软件设计技术》课件第9章_第2页
《多媒体软件设计技术》课件第9章_第3页
《多媒体软件设计技术》课件第9章_第4页
《多媒体软件设计技术》课件第9章_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.1VB多媒体应用系统的发布和测试9.2Authorware多媒体作品的发布本章小结练习九9.1.1使用SetupFactory制作安装程序

SetupFactory贯彻了快速方便的开发理念,读者无需长时间学习便可达到熟练使用的程度。它强大的功能、方便易用的操作界面较适合大多数程序员,而且其安装程序也非常精美。用户要做的只是在界面中通过鼠标点击将软件文件和目录直观地添加到目录中,整个过程完全逻辑化和无缝化。除此之外,SetupFactory支持创建一个安装文件包或一个单独的setup.exe文件,生成文件可以运行于任意版本的Windows中,包括Windows95到WindowsXP及其以上版本,且更利于用户的发布,比如通过网站、CD/DVD刻录和局域网等。9.1VB多媒体应用系统的发布和测试利用SetupFactory安装程序制作向导界面时,即使对安装制作不了解,也可以生成专业性质的安装程序;可建立快捷方式,也可直接在Windows系统的注册表中加入内容,还可在Win.ini和System.ini文件内加入设定值,更可建立反安装选项等。它内附的向导可以一步一步地引导用户做出既漂亮又专业的安装程序。下面就以SetupFactory 7.0版为例,介绍这个软件的一般的使用方法,并简要说明如何使用SetupFactory来制作一个安装程序。

1.SetupFactory的一般制作过程

运行SetupFactory7.0软件后,默认会跳出一个工程向导的界面。此时可点击“创建”来新建一个工程,或是按Esc键退出工程向导,直接进入软件主界面,如图9-1所示。图9-1SetupFactory软件主界面现在可以开始制作安装程序。先添加安装文件,在菜单的工程中选择“添加文件”,或在主界面左侧的“文件”中选择“添加文件”,然后点击“添加”按钮。文件加入后,用鼠标右键单击某一文件(也可选中多个文件对其编辑),选择“文件属性”,可修改相应设置。目标中默认为%AppFolder%,该变量表示安装路径,可以修改成其他自带变量或自定义变量。如果该文件为可执行文件,那么默认会在“开始”菜单建立相应的快捷方式,以进行相关设置;如果不需要快捷方式,可取消。文件加入后,可以设置安装程序的相关信息,如变量定义、软件卸载等,如图9-2所示。在左侧设置中点击“会话变量”,这些变量是SetupFactory自带的变量,在此处定义或在代码中定义后,即可在安装过程中使用。新建安装程序默认会创建卸载,如果软件不需要卸载,那么单击主界面左侧卸载中的“设置”,即可关闭“创建卸载”。下面来制作安装过程中的屏幕。屏幕分三部分:安装前、安装中、安装后。单击主界面左侧屏幕中的“工程主题”,在跳出的窗口下方选择工程主题可改变安装屏幕的样式。点击“安装之前”,可在窗口左侧添加或删除相应的屏幕,如图9-3所示。选中某一屏幕后,点击窗口下方的“编辑”按钮,即可对该屏幕进行编辑。在“属性”中可修改屏幕标题和按钮等。在“操作”中可对该屏幕事件进行编程。通过窗口底部的“添加操作”和“添加代码”,可加入相应的代码来实现所需功能,如图9-4所示。图9-2设置安装程序的相关信息图9-3制作安装前的屏幕图9-4编码设定屏幕的属性在“安装之时”选项卡中,取消“安装期间显示进程屏幕”的选择,该进程的屏幕在安装时将不再出现。如果只是想在安装过程中不显示复制的文件名称及其路径,那么点击“编辑”按钮,并取消“显示状态文本”的选择。在“安装之后”选项卡中可编辑安装完毕后的屏幕界面。上述过程完成后,一个简单的安装程序就可以发布了,点击菜单“发布”中的“构建”,默认选择“Web(单个文件)”,再点击“下一步”按钮即可。也可以发布成其他软盘、光盘等形式。确定输出安装程序的文件夹及安装程序文件名称,然后点击“构建”按钮。等待向导构件安装文件,最后单击“完成”按钮结束整个过程。现在就可以测试做好的安装程序了。测试前,可将SetupFactory工程保存到电脑上。

2.SetupFactory对VB工程的特别支持

SetupFactory可以方便地为VB应用创建安装程序。它不仅提供了VB运行时文件(Runtime),并且可以对VB项目、INI及DEP文件进行扫描。部分VB开发者因其强大、易用和可靠,而偏爱使用SetupFactory。如果不希望制作的安装程序具备过多的交互功能,也就是说不想在程序安装过程中让用户过多参与选择的话,则可删除一些选项。反过来,也可自行添加一些选项以增加安装程序的灵活性。总之,要想让安装程序做得更专业,设置ScreenManager中的选项内容是十分重要的。设置好以上参数后,点击“确定”按钮并退出该页。如果不想让打包的程序安装一些动态链接库文件和外部控件,那么现在就可以进行安装程序的生成步骤了;否则还得进行以下操作(尤其对VB的项目)。点击SetupFactory主界面左边工具栏中的“RuntimeSupport”来设置运行时支持文件。若程序是用VB写的,那么在出现的下拉选项中选择“MicrosoftVisualBasic”,然后点击“Next”按钮,随后选择“程序开发平台VB”。点击“下一步”按钮,选择VB程序的工程文件名(一般用VB开发的程序编译后应该保留工程文件,而不应该像平时那样把工程文件和窗体文件及模块代码等文件备份后就从目录中删除,保留工程对制作VB安装程序至关重要)。根据工程文件,软件会自动找到程序所用到的全部动态链接库文件和全部控件,包括在开发过程中用到的第三方控件。点击“完成”按钮,软件会把找到的文件在文件列表中全部列出来,这时还可根据需要进行取舍。最后,点击“Edit”菜单中的“Addfiles”,在出现的选择框中选择想打包的目标文件,确定后,此文件会和已选择的控件文件等一起出现在文件列表中。然后按“F7”键开始建立安装程序,软件会提示输入生成文件的文件名和存放位置等,根据需要填好后点击“Output”,一个专业的安装程序就做好了。当然,SetupFactory的功能远不止这些,比如让安装程序在运行时向系统注册表写入信息,各种反安装方式的设定,给软件添加安全保护等很多实用功能,灵活使用这些功能会让安装程序更专业、更漂亮。9.1.2使用VB自带的打包和展开向导制作安装程序

对于本书重点介绍的VB应用软件而言,专门的制作工具将是用户的首选,而VB就自带了一款这样的工具——打包和展开向导(PackageandDeploymentWizard)。

1.打包和展开向导介绍

打包和展开向导是VisualBasic自带的工具,它能为VisualBasic应用程序创建包装,并将它们安装到最终用户的机器上。也可以使用打包和展开向导创建从属文件( .dep),只是在运行该向导之前,必须有一个保存并编译了的工程。为发布VB应用程序,利用该向导可以创建标准包装(setup.exe)、Internet包装和部件一起分发的从属文件。该向导将应用程序部件包装为压缩文件( .cab)。另外,如果需要再次包装或部署相同的应用程序,则在向导中工作时,可以将设置保存为脚本,以便重复使用。也可以将打包和展开向导作为MicrosoftVisualBasic的外接程序或一个独立应用程序启动。

打开和展开向导有如下一些重要的功能选项:

(1)“激活工程”:显示当前工程的名称和路径名。只有将向导作为外接程序运行时才可用。

(2)“选定工程”:显示选定工程的名称和路径名,同时列出以前的工程,可以输入工程的名称和路径名,或者从列表中选择一个工程。只有将向导作为独立部件运行时才可用。

(3)“浏览...”:显示一个可以用来浏览工程的对话框。只有将向导作为独立部件运行时才可用。

(4)“打包”:包装工程的第一步。在包装完应用程序后,可以返回到主屏幕并部署包装。

(5)“展开”:部署包装的第一步。如果有一个包装好的工程想要发布到软盘、网络或本地文件夹,则可以使用向导的这一部分。

(6)“管理脚本”:显示“管理脚本”对话框,在这里可以重命名、复制或删除包装和部署脚本。

2.打包和展开向导的一般制作过程

程序开发工具中自带的打包程序,如VB自带的打包和展开向导,在功能和易用性上不是非常完善,但对应用程序的开发人员来说也不难,应该掌握。下面详细介绍用VB自带的打包程序对项目进行打包的操作步骤:

(1)运行打包和展开向导,如图9-5所示。图9-5“打包和展开向导”主页面

(2)点击“浏览”按钮,选择要打包的工程。然后单击“打包”按钮,进入下一个页面,如图9-6所示。

(3)选择要打包的类型。普通的EXE工程选择“标准安装包”;控件类要看使用的地点,如果是在网页中使用,则选择“Internet软件包”。然后点击“下一步”按钮,如图9-6所示。

(4)选择打包文件的存放位置,如图9-7所示。图9-6选择包的类型图9-7打包文件的存放位置

(5)向导自动找出了工程中应用的控件、DLL等文件,需要到工程中检查一下,看看所包含的文件是否齐全,第三方控件所带的文件一定要带上。然后点击“下一步”按钮,如图9-8所示。

(6)根据需要选择打包的文件类型:如果用光盘发布,则选择“单个的压缩文件”;如果用软盘发布,则选择“多个压缩文件”。然后单击“下一步”按钮,如图9-9所示。图9-8包含文件列表图9-9压缩文件类型

(7)确定安装程序的标题,也就是确定在安装背景上要显示的文字。然后单击“下一步”按钮,如图9-10所示。

(8)可以设置在“开始菜单”中显示哪些项目,比如可以设置加载、卸载程序项。选择“新建项”按钮,然后在“目标”栏中输入$(WinPath)\st6unst.exe-n"$(AppPath)\ST6UNST.LOG",注意应包括双引号。在“开始”项目中选择“$(WinPath)”,不包括双引号。然后点击“确定”按钮,如图9-11所示。图9-10确定安装程序的标题图9-11启动菜单项设置

(9)在此可以更改文件夹的安装位置,然后点击“下一步”按钮。在此,还可以将文件设置为共享(即文件可以被多个程序使用)。

到此为止,安装制作完成。安装完之后,会生成三个文件和一个文件夹,如图9-12所示。其中:SETUP.LST为安装信息文件;.CAB文件包是数据文件,安装的文件全部在包里;setup.exe是安装的主文件;Support是压缩包中包含的所有文件,它内部的所有文件如图9-13所示。图9-12生成的文件和文件夹图9-13压缩包中所包含的文件这个文件夹里有一个比较重要的文件就是“执照套打.BAT”这个批处理文件(不同的工程,文件名会不一样),当工程改动之后,可以将工程重新编译一下,然后将执行文件拷贝到此Support目录下,执行这个批处理文件,就可以重新打包,而不必每次改动时都运行打包和展开向导。

还有一个比较重要的文件是SETUP1.EXE文件,这是安装的主文件,安装时看到的界面就是这个文件运行产生的。该文件是用VB编写的,源程序在VB的安装目录下:C:\ProgramFiles\MicrosoftVisual

Studio\VB98\Wizards\PDWizard\Setup1\SETUP1.VBP。可以用VB直接编辑这个工程,改成具有个性的安装界面。如果在安装之后想在桌面上添加程序的快捷方式,则可以编译这个工程,打开“frmSetup1”窗口,在其代码中加上如下代码:下面介绍由向导生成的SETUP.LST(安装信息文件),其内容如图9-14所示,其中SetupTitle是解压窗口的标题,SetupText是解压窗口的内容,将SetupText的内容改为“正在复制文件,请等待”后,其效果如图9-15所示。接下来介绍SETUP.LST文件的Setup区,其内容如图9-16所示,其中,如果将Color设置为不同的值,就可以改变安装窗口的背景色(默认为蓝色)。把Color设置为16之后,窗口的背景就会变为绿色(当然还有其他的颜色,读者可以自行设置),其显示效果如图9-17所示。图9-14SETUP.LST文件的内容图9-15改动之后的运行界面图9-16SETUP.LST文件中Setup区的内容图9-17安装窗口的背景色的变化

VB自带的打包和展开向导程序完全是用VB编写的,源程序位于“C:\ProgramFiles\MicrosoftVisualStudio\VB98\Wizards\PDWizard\”的目录下,用户可以自行修改。9.1.3VB打包和展开向导打包的问题与对策

打包和展开向导可以创建两种软件包:标准软件包或Internet软件包。如果计划通过磁盘、光盘或网络共享来发布应用程序,则应创建一个标准软件包。如果计划通过Intranet或Internet站点来发布应用程序,则应创建一个Internet软件包。还可以使用VisualBasic的打包和展开向导将应用程序创建到软盘、CD、本地或网络驱动器以及Web上的软件包。在这些制作过程中,可能会出现各种问题,下面从两个方面汇总了一些问题与对策。

1.标准软件包部分

如果使用打包和展开向导,则向导将自动创建Setup.lst文件。如果需要自定义该文件,则可以在该文件被创建后手工进行编辑。Setup.lst文件描述了应用程序必须安装到用户机器上的所有文件,此外还包含了有关安装过程的关键信息。例如,Setup.lst文件告诉系统每个文件的名称、安装位置以及应如何进行注册等。

Setup.lst文件共有五个段:

(1) BootStrap段:列出了关于应用程序的核心信息。例如,应用程序的主安装程序的名称,在安装过程中使用的临时目录,以及在安装过程的起始窗口出现的文字。BootStrap段包含下述成员:

● SetupTitle:当Setup.exe将文件复制到系统时所出现的对话框中显示的标题。

● SetupText:当Setup.exe将文件复制到系统时所出现的对话框中显示的文字。

● CabFile:应用程序的 .cab文件的名称,如果软件包有多个 .cab文件,则表示第一个 .cab文件的名称。

● Spawn:当Setup.exe完成处理后要启动的应用程序名称。在大多数实例中,这个名称将是Setup1.exe文件。

● TmpDir:存放在安装过程中产生的临时文件的位置。

● Uninstall:用作卸载程序的应用程序名称。一般来说,该程序是st6unst.exe,这个文件是由向导创建所有的软件包时自动打包加入的。

(2) BootStrapFiles段:列出了主安装文件所需的所有文件,通常这部分只包括VisualBasic运行时的文件。BootStrapFiles段列出了在加载应用程序和从属文件之前,必须载入用户机器的所有文件。这些预安装的(或称为引导)文件包括运行任何VisualBasic应用程序所必需的核心文件,例如VisualBasic运行时的DLL(Msvbvm60.dll)文件,安装程序在安装和启动主安装程序之前将安装这些文件。

(3) Setup1Files段:列出应用程序所需的所有其他文件,例如 .exe文件、数据、文本。

(4) Setup段:Setup.lst文件的Setup段是一个简单的列表,它列出了安装过程的其他部分所使用的信息。下面列出了Setup段所包含的信息。

● Title:将出现在安装期间的快速显示屏幕、“启动”菜单的程序组以及程序项名称上的应用程序名称。● DefaultDir:缺省的安装目录。用户可以在安装过程中指定一个不同的目录。

● ForceUseDefDir:如果为空,则会提示用户输入一个安装目录。如果设为1,则应用程序将自动安装到SETUP.LST的“DefaultDir”所指定的目录中。

● AppToUninstall:应用程序在“控制面板”中的“添加/删除程序”实用程序中出现的名称。

● AppExe:应用程序的可执行文件的名称,例如Myapp.exe。

(5) IconGroups段:包含了关于安装过程所创建的“启动”菜单的程序组的信息。每个要创建的程序组首先在IconGroups部分列出,然后指定一个单独部分(Group0,Group1,Group2等),在此部分中包含关于这个程序组的图标和标题的信息。程序组从0开始顺序编号。

注意在安装过程中要用到两个安装程序:一个是Setup.exe,这是一个预安装程序;另一个是Setup1.exe,这是由安装工具包编译生成的。BootStrap部分将为Setup.exe文件提供指示。下面是用这个工具来创建一些额外安装信息的例子。

1)创建“启动”菜单的程序组

按照向导,选择“下一步”按钮,打开“启动”菜单项。选中“programs”、“新建组”、输入“启动”、“新建”项,输入想加入启动项中的名称如“启动应用程序”,按“下一步”按钮直至“完成”按钮。打开生成的Setup.lst文件,注意IconGroups段中的条目及其相关的字段:当运行向导所创建的安装程序时,该选项就会出现在“选择程序组”,现在就可以把程序放在“启动程序组”中了。

2)提供一个联机帮助安装选项

除了使用安装工具包工程来创建自定义安装工程外,还可以将安装工具包工程与打包和展开向导一起使用。在这种情况下,可以使用安装工具包工程来自定义安装过程的屏幕或其它部分,然后使用向导来创建和部署应用程序的软件包。例如,可以提供一个联机帮助,而用户可以不安装它。可以按照需要添加任意的安装选项,还可以将安装工具包与打包和展开向导一起使用,为安装工程添加新的对话框,以便提示用户选择是否安装应用程序的可选功能。

(1)在Setup1.vbp工程中,编辑Setup1.frm窗体中的Form_Load事件的代码,在调用ShowBeginForm函数(SubShowBeginForm)的代码块之后添加如下代码(该示例显示了如何添加一个对话框,来询问用户是否要安装可选文件):

(2)关闭Setup1.frm,保存该窗体以及安装工具包工程,并编译创建Setup1.exe文件。

(3)运行打包和展开向导,并从主屏幕中选择“打包”,根据向导的各个屏幕进行适当的选择。对上面的示例,可以在“添加和删除”屏幕列出的“自定义”对话框中确认用户可以选择安装的所有可选文件。在完成打包和展开向导的所有操作后,将生成发布媒体。

(4)对Setup.lst文件进行必要的更改。在上面的示例中,可以在代码CopySection所使用的部分中添加一个新的部分。在这种情况下,这个部分可能会像下面这样:

(5)部署并测试软件包。当用户运行本过程所示的安装程序时,安装程序将查看所有的BootStrap文件。CalcDiskSpace语句将确定在用户机器上是否有足够的磁盘空间来存放帮助文件。然后该程序会安装Setup.lst中的Setup1Files部分列出的所有文件。接下来,程序将再测试一次LoadHelp标记。如果用户选择安装帮助文件,Setup1.exe就开始为帮助文件执行CopySection语句,然后安装Setup.lst的[Help]部分所列的文件。

2.Internet软件包部分

Internet软件包是基于 .cab的安装程序,是专为从Web站点下载而设计的。InternetExplorer使用一个称为“Internet部件下载”的过程来安装Internet应用程序。打包和展开向导自动包括其所创建的软件包所需的信息。可以使用VisualBasic的打包和展开向导快速轻松地将ActiveX部件打包以供Internet下载。打包和展开向导把部件打包成一个浏览器能识别的文件,并创建一个Web页面,用户可以从其中下载。然后,就可将打包的结果部署到用户能存取的Web页面上了。

向导将部件及其所关联的文件打包到一个压缩( .cab)文件中,供浏览器下载部件时使用。向导确定运行工程需要哪些文件,然后收集这些文件,将它们压缩为一个 .cab文件,并生成指向部件的HTML;向导将打好包的文件部署到选择的Web服务器上。可以被打包而供Internet部署的主要类型包括:在Web页上显示的ActiveX控件( .ocx文件),用于在客户或Web服务器上运行的ActiveX.exe或 .dll文件,代替Web页显示的ActiveX文档,DHTML应用程序,基于客户的、通过使用动态的HTML来链接HTML页与VisualBasic代码的应用程序,IIS应用程序,基于服务器的、链接HTML页与webclass对象的应用程序Internet软件包的部分。

Internet软件包包括的主要文件有:应用程序的主要 .cab文件,所有必需的支持文件,应用程序的任何辅助 .cab文件。

●主要 .cab文件包括工程部件,例如应用程序的可执行文件 .DLL、控件的 .ocx文件、一个引用辅助 .cab文件、包含安全性和注册表信息的 .inf文件,以及不属于辅助 .cab文件的所有必需的从属文件;

●支持文件包括HTML文件、ActiveServerPages( .asp)文件、各种格式的图形文件或应用程序运行时必须访问的其它文件;●辅助.cab文件提供了一个有效的途径,可以确保用户使用的是该部件的最新版本。如果辅助.cab文件中部件的较新版本已经可以从外部Web站点上获得,则下载应用程序的用户将自动收到该部件的更新版本。

注意:如果不能或不愿意让应用程序的安装程序与Internet连接,则可以将辅助.cab文件放置在Intranet的服务器上。Intranet服务器通常提供了更快的下载,并允许用户从安全的网络下载。在为供下载的Internet应用程序或部件打包之后,就可以将其部署到Web服务器上的一个特定位置,用户可以从该位置访问这些应用程序或部件。通常,软件包被作为一个现存Web页面的一部分来引用,也就是说,控件或其它部件宿驻在一个Web页面上。当用户访问宿驻软件包的Web页面时,系统将该软件包下载到用户的计算机上。该软件包在确认安全性、打开、注册、安装之后被激活。所有这些都发生在后台,并由浏览器控制。在准备好供下载的Internet应用程序和部件后,必须将它们打包为一个可通过浏览器发布给用户的文件。此外,还必须执行一些安全性设置,以确保应用程序不会损害用户的计算机。这些步骤包括:对部件进行数字署名,以便用户能验证部件的内容,并知道是该软件的开发者;设置安全性级别来保证部件不会损害用户的计算机或毁坏其数据;为任何需要许可证的部件安排许可。当添加一个ActiveX控件到Web页面时,可以将其发布给从该页面下载该控件的任何用户。除非对该控件进行了许可,否则很难防止最终用户取走控件并在其他的应用程序中使用。许可证可以作为控件的一种版权,来防止未经授权的使用。

打包和展开向导在为Internet部件下载打包代码时创建两种类型的文件:发布文件和支持文件。●发布文件放在启动向导时指定的目录中,该目录一般包含.cab文件和任何与之相关联的 .htm文件。注意:如果生成 .cab文件后对工程进行了修改,例如修改文件列表,以使其包括在下载中或对部件进行数字签名,则需要重新生成 .cab文件。

●向导为支持文件创建一个目录并把.cab的输入文件( .inf)放入该目录。此外,支持文件目录还包括DiamondDirectives( .ddf)文件及其他下载需要的文件。以下列出了向导创建的所有文件类型:

● .cab文件是Windows安装文件或包含 .ocx文件、 .inf文件和其他从属文件的“压缩包”文件。可以对它进行数字签名以防止被篡改。

● .htm文件是用于显示Web页面的HTML文件,该文件包含指向 .cab文件的链接并用于启动下载过程。● .ddf文件是DiamondDirectives文件,是用于创建.cab文件的工程文件。

● .inf文件是代码下载信息文件,该文件包含有关如何安装控件的信息,并允许自定义。

● .ocx文件是ActiveX控件,可以对它进行数字签名以防止被篡改。

● .dll文件是ActiveX文档或代码部件。以下为向导自动创建的 .htm文件:示例中的第二个OBJECT标记包含了一个类标识符5D970D42-D857-11D2-A0A1-

0080C8E2D955,版本号为1,0,0,91。所创建的每个ActiveX控件都有一个不同的类标识符。此类标识符用于创建HTML页面上控件的实例,与将控件放置到VisualBasic窗体的过程类似。InternetExplorer使用类标识符检查注册表来判断控件是否存在,当不存在或现有控件的版本比CODEBASE属性中指定的旧时,InternetExplorer将下载并安装指定的文件。

OBJECT标记的重要部分包括:

(1) CLASSID类标识符,包含部件的类标识符。

(2) ID部件的名字,用于脚本中,与VisualBasic窗体中控件的Name属性相同。

(3) CODEBASE所需控件的最低版本号和安装位置。

3.Internet软件包部分的问题与对策

由于Internet软件包中问题比较多,因此向导中创建的文件往往不能正常工作。下面就常见的几个问题分析其原因及解决方法。

1)程序不能下载

问题表象:在一个Intranet上建立内部查询网页,服务器操作系统为WindowsNT4.0,在客户机上用VB6.0的中文企业版生成一个ActiveX用户控件(*.ocx),文件存于服务器,在此客户机上通过IE 4.0浏览器完全可运行此程序,然而在另一客户机上则无法运行此控件,用IE 4.0浏览器浏览时,屏幕上一个进度条窗口很快一闪而过,然后浏览器窗口什么也不显示。

问题解决:问题出在打包程序生成html文件上。用记事本打开html文件可以发现,该文件使用FRAME调用html文件,这是不正确的。在本地用IE打开html文件时,IE把SRC所指的文件按文件方式读入,IE可以识别html文件的结构并正确运行。可是从网上下载html文件时,IE通过Server接收html文件的数据。而在正常情况下,FRAME语句中的SRC所指应为一个HTML文档。这里,ActiveX用户控件是利用〈FRAMESRC="..."〉调用的,这在本机浏览时不会遇到问题。但InternetExplorer在从服务器调用HTML时,认为凡是出现在〈FRAMESRC="..."〉中的都应该是HTML文档,如果无法识别该文件,就下载并保存该文件。屏幕上一个进度条窗口很快一闪而过就是IE在下载文件。若要解决这个问题,不要使用〈FRAMESRC="..."〉,而改用〈A〉〈/A〉链接方式,一般就不会有问题了。所以,只要修改html文件,用如下的方法调用就可以解决问题:

〈ahref=http://YourIpA/firstdoc.vbd〉test〈/a〉

把YourIpA改为地址并把html文件放入正确的目录中。

例如,需要由Left.htm调用同一目录下的“记帐单.htm”,可以使用如下方法。Left.htm内容如下:

2)程序下载后却不运行

问题表象:用VB生成一个简单的ActiveX用户控件(*.ocx),并设定编译时版本自动加1,按照微软的提示编译成OCX文件,再用打包程序生成Internet下载程序,在本机上用IE浏览器浏览正常,其他机器用IE浏览时却不能运行,查看C:\WINDOWS\Downloaded

ProgramFiles及C:\WINDOWS\TemporaryInternetFiles目录,从版本号可知下载程序已下载。

问题解决:原因是ActiveX控件没有被正确地安装在客户机上,还有一些所需要的文件并没有下载到客户机,此问题与VB运行所需要的链接库有关。当然,可以手工在客户机上安装这个控件,或者每一台机器上都安装一次VB,但太麻烦并且很难保证版本一致性。还是借助向导来完成这一工作较好。

在向导中选择“下一步”按钮,继续下去,直至“包含文件”项。

由于生成的ActiveX用户控件(*.OCX)中使用了别的一些控件,因此在下载时会自动寻找相关的一些文件,如果找不到,则程序不会下载。所以,需要把相关的一些文件手工地添加进去。由于该ActiveX用户控件(*.OCX)还引用了其他的一些相关文件(常见的有DLL、OCX、TLB等),如DATLSCHS.DLL、DBRPRCHS.DLL、FlashControls_Hefawu.ocx、MSADO20.TLB等,因此,也需要为这些文件生成一个CAB文件,当该ActiveX用户控件(*.OCX)用到时会自动查找并下载。

在“包含文件”项中把用到的相关文件选中,然后选择“下一步”按钮,来到“文件源”,将所用到的一些相关文件在指定的目录中生成CAB文件。重要提示:发布的DLL、OCX、TLB等文件要与生成的CAB文件同名,并且每一个相关的文件都要生成自己的CAB文件。

例如,选中FlashControls_Hefawu.ocx,并选择“从其他web站点下载”项,然后输入指定的目录位置http://server/vb6/及生成的CAB文件,文件名为FlashControls_Hefawu.CAB。。相应地,DATLSCHS.DLL对应为http://server/vb6/DATLSCHS.CAB;DBRPRCHS.DLL对应为http://server/vb6/DBRPRCHS.CAB。另外有些特别的,如MSADO15.DLL对应为http://server

/vb6/MSADO15.CAB;VB6RuntimeANDOLEAutomation对应为http://server/vb6/Vb6RUN.CAB。当然,自己要生成的ActiveX用户控件(*.OCX)要选择“包含在此压缩文件中”选项最后,向导会建立两个文件:*.cab和*.htm,并且在http://server/vb6/目录中生成许多压缩包。*.cab文件包括了ActiveX控件,应该把它放在服务器上。*.htm的核心是修改Object标签的Codebase属性。这样,用户机的IE4.0在浏览时如果没有在客户机找到控件,就会利用Codebase属性从服务器上下载*.cab文件,并自动解包、安装并注册ActiveX控件。打包和展开向导能够为自己的VisualBasic应用程序创建和发布专业的安装程序。除了为应用程序创建 .cab文件之外,该向导还通过编译随VisualBasic一起安装的安装工具包工程来为应用程序创建安装程序,使程序在不同的计算机环境下都能“安居乐业”,打包和展开向导的确是程序员的好帮手。

4.其他问题与对策

下面介绍一些制作VisualBasic安装程序时常遇到的问题及其解决方法。

问题1假如VB5.0开发的程序很简单,只用到了ShellExecute()这个API以及CommandButton,这时能不能不做安装盘,而在所有客户机上(Windows95/98/NT/XP)都能正常使用程序?如不制作安装程序,则与EXE放在一起的应该包括哪些文件?解决方法:对于一个非常简单的VB6.0程序,没有使用额外的OCX控件,在Windows98/2000下是可以正常运行的,而不需要制作安装盘。因为Windows98/2000/XP带有VB 6.0程序所需要的DLL文件。但在Windows95/NT4.0下一般是不行的,因为缺少必要的文件。如果用户的机器上安装有IE,那么是可以不制作安装盘的。在一般情况下,不制作安装盘就不能保证程序的正确运行。制作的安装盘所包括的DLL中,除了Vb5stkit.dll只是安装时使用,安装后就不需要了,其他DLL都是不可缺少的。虽然对于某些机器而言,由于安装过其他软件而可能不需要某个DLL,但要想在所有的机器上都正确运行,则一个文件都不能少。所以,为了避免由于缺少某个文件或注册不正确而使程序无法运行,建议还是制作安装盘比较保险。如果程序是放在网上供别人下载的,为了减少下载文件的大小,则可以这样做:将程序单独打成一个包,如果用户已经有了运行VB6.0程序所需要的有关文件,就只需下载程序,然后,在网页上提供一个VB6.0的运行时间库的链,如果用户的机器上没有这些文件,则让它单独下载运行库。这是一种比较通行的方法。问题2若在一个程序中使用了其他的控件,则如何在没有注册该控件的机器上运行?是不是一定要制作安装程序或注册该控件?

解决方法:在Windows 95/98下,如果控件和EXE文件在同一个目录中,或者控件文件放置在System目录中,则EXE程序运行时会自动找到所需要的OCX文件并注册。但是这种方法在WindowsNT下不适用,在Windows NT下必须先注册控件才能保证EXE程序的正常运行。另外,这种自动注册有一些毛病,如果机器已经存在一个低版本的控件,自动注册可能会失败。所以,如果希望自己的程序能够非常好地工作,最好还是制作安装程序,否则可能会有麻烦。问题3用VB6.0制作了一个程序,但在某个机器上安装时,会出现以下错误:systemerror&H80004005(02147467259)未指定错误;“cannotfound‘c:\windows\temp\msftqws.pdw\

st6unst.exe’”无法开始系统安装程序。

解决方法:这是由于VB 6.0的一个BUG导致的,可以升级到VB6SP3,在这个升级版本中修复了这个错误。问题4用VB6.0制作了一个程序,但在安装该软件时系统报告错误:

在C:WINDOWS\SYSTEM\expsrv.dll中未发现DllRegisterServer()的\WINDOWS\SYSTEM

\expsrv.dll“输入点

***在本操作期间:DllSelfRegister:”C:

***错误:注册文件‘C:\WINDOWS\SYSTEM\expsrv.dll’时出错

***错误:(用户响应‘忽略’)

忽略错误后安装完成。在Windows98下安装也有同样的问题。解决方法:DLL有两种,一种是标准DLL,另一种是ActiveXDLL。前者拷贝到用户机器上就可以工作了,而后者还需要调用DLL中的DllRegisterServer或者使用RegSvr32进行注册才能使用。打开VB98\Wizards\PDWizard\VB6dep.ini文件,下面是这个文件的片断:从上面的文件中可以看到,MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),这是因为MSRD2x35.dll是ActiveXDLL,ExpSrv.dll是普通的DLL,没有DllRegisterServer,也用不着注册。所遇到的问题是VB6.0的一个BUG(在VB6 SP3中已经修复)。如果VB6dep.ini文件的ExpSrv.dll多了Register一行,则应该删除;或者打开安装程序的Setup.lst,删除ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。问题5用VB+Access开发数据库系统,发布时用VB自己的发布向导,程序目录中子目录的文件却加入不正常,向导不按子目录区分,都加入程序目录中。怎么办?

解决方法:VB的安装向导是支持包括子目录的安装程序的。运行安装向导到“文件小结”一步,在对话框中选择“添加”按钮,然后选择应该放置在子目录中的文件,将其添加到文件列表中。然后从文件列表中选择该文件,点击“文件详细资料”按钮。在对话框中设置的目标路径,最好不要用绝对路径(如C:\MyProject)来指定安装位置,这样会给用户带来不便。安装向导使用宏来指示文件要安装的位置,这些宏只在安装程序中有效。宏的含义参见表9-1。如果要将文件放置在应用程序目录下的\Data子目录下,可以使用$(AppPath)\Data来指定安装路径。表9-1安装向导使用的宏及其含义问题6安装时,用VB自己的“打包与展开向导”制作安装盘,不知道怎么使程序在桌面上放置一个快捷方式?

解决方法:VB“打包和展开向导”所生成的安装程序的工作步骤是这样的:先运行Setup.exe,这个程序将VB的运行库安装到用户的机器上,同时将 .cab文件中的文件释放到临时目录中,然后调用临时目录中Setup1.exe,完成余下的安装工作。Setup1.exe是用VB编写的(正是这个原因,所以要先安装VB的运行库),其源程序可以在VB98\Wizards\

PDWizard\Setup1中找到。如果对VB的安装程序不满意,希望添加新功能,则可以直接修改Setup1.vbp。具体到问题,在VB中可以打开Setup1.vbp,然后修改Setup1.frm的Form_Load事件,在其中可以找到如下几行:在If..EndIf中加上:重新编译Setup1.vbp,用Setup1.exe替换原来的Setup1.exe即可。问题7用VB6.0的安装向导制作的程序安装包里,总有一个 .dep文件,这个文件有什么用?是否与OCX注册有关?如何打开?如何编辑?解决方法:只有在为ActiveX控件制作安装包的时候,才会出现 .dep文件。这个文件主要是供使用ActiveX控件的程序设计者制作自己的程序的安装盘时使用的。用户在使用SetupWizard制作安装盘时,SetupWizard会读取这个文件,检查ActiveX控件需要哪些DLL支持。一般不用手工修改这个文件,如果认为确有必要,可以使用记事本打开修改。

问题8在制作安装文件后,安装过程中系统缺省的目录是C:\programfiles\tele,而需要的是C:\tele2000,有办法修改吗?解决方法:要修改安装程序的缺省目录,可以打开安装盘的setup.lst文件。在这个文件中可以找到下面一行:将这行中的“$(ProgramFiles)\tele”修改为想要的目录(如C:\tele2000)即可。9.1.4用VB开发与机器环境无关的程序

软件的开发必须保证与机器环境的无关性,这是一个在开发和调试过程中都必须注意的问题。下面介绍与机器环境无关的应用程序开发与测试的方法。

利用VisualBasic开发应用程序时,常常会遇到这样的问题:生成的可执行文件在开发的机器上能够运行,复制到另一台机器上则无法运行,这种现象称之为应用程序与机器环境相关。造成这种现象主要有两个方面的原因:一是程序在运行过程中调用了一些文件,如数据库文件、文本文件和图片文件等,由于路径使用不当而无法定位;二是VisualBasic编译成的 .EXE文件并不是实际意义上的EXE文件,VisualBasic系统中的标准控件和开发过程中用到的第三方控件都没有包含在内。

因此,要解决用VB开发的应用程序与机器环境的相关性,必须从两个方面入手:一是保证应用程序能调用到所用文件,二是应用程序发布时同时发布所有用到的控件和DLL

文件。

1.开发与路径无关的应用程序

无论应用程序开发得多么好,是否成功还取决于其能否在任何机器的任何目录下都能运行。这就要求应用程序要自成一体,不但要包含所有用到的文件,而且还应与路径无关。可用两种方法实现应用程序与路径无关:一是利用VB.APP对象的PATH属性;二是把调用文件放在光盘上,直接调用。

1)利用VB.APP.PATH实现与路径无关

该方法的主要思路是在调用文件时利用相对路径。由于VB中不支持与DOS类似的相对路径,如调用当前目录下的“hh1.bmp”文件,写成“hh1.bmp”和“.\hh1.bmp”时将会出错。为解决该问题,VB提供了一个VB.APP对象,该对象有个名为PATH的属性,它记下了执行文件所在的路径,可在运行时访问。用该方法创建与路径无关应用程序的要点如下:

(1)为应用程序(项目)创建一个目录,用以存放建立的窗体或其它文件。

(2)把应用程序所调用的文件放在该目录下或者放在该目录的子目录下。子目录最好按照引用文件的类型进行建立,如存放图片的子目录名为PIC,存放表的子目录为DBF等。

(3)除包含在可执行文件中的文件(如在设计时图片框加载的图片)外的其它文件,调用一律采用相对路径,而禁用绝对路径。这样,在复制应用程序的时候,只要把应用程序目录下的所有文件(包括子目录)复制到任意目录下,应用程序都不会发生因找不到文件而产生的错误。

以下是一个程序实例,该实例显示一系列的角度逐渐变化的地球图片,从而形成地球转动动画。用VB设计一个窗体,窗体上放置一个图片框,名为Image1(Strech=.T.),给窗体加一个定时器控件,控件名为Timer1(Interval=25,enabled=.t.)。该项目存放在A:\exam下,图片文件存放在A:\EXAM1\PIC下面。使用绝对路径,程序代码如下:该程序使用绝对路径调用外部文件(earth0.jpg-earth7.jpg),当把EXAM目录的全部内容拷贝到其他机器上并抽出软盘后,运行程序将发生找不到文件的错误。若采用VB.APP.PATH属性,把形成图片文件名的语句改写如下:这样,无论把EXAM目录完全复制到任何机器,程序均能运行。

2)从光盘调用文件实现与路径无关

把应用程序要调用的文件放在光盘指定目录下,应用程序发行时和该光盘的拷贝一同发行。程序运行时,直接从光盘指定目录调用文件,故不会发生因找不到文件而出现的错误。由于不同机器上的光盘盘符不同,因此在开发时不能直接引用光盘的盘符,应用程序必须先取得光盘盘符,然后再生成需要调用文件的完整文件名。可以使用API函数来取得光驱盘符,也可以通过以下程序段来检测光驱盘符:以上程序段放在需要检测光驱的地方,通常放在Form.load事件中,光驱盘符存放在Drive变量中。检测到光驱后,可直接调用光盘上的文件。如上例中,若PIC目录下的图片文件存放在光盘上,则形成文件名的语句可以用以下语句代替:这样,就实现了从光盘调用文件与路径无关了。

2.包装应用程序实现与系统无关

解决了与文件路径相关的问题后,生成的可执行文件在其它没有安装VisualBasic的机器中依然无法执行。原因之一是VisualBasic具有21个标准控件,这些控件都保存在动态链接库中(扩展名为 .DLL),而VisualBasic的可执行程序中并没有包含;原因之二是开发的应用程序可能包含了第三方控件,VisualBasic的可执行程序中也不包含它们。因此,在其它机器上执行VB开发的应用程序时,必须使该机器包含程序中所有用到的动态链接库和控件文件(OCX或VBX文件),并需要把它们在Windows中加以注册。为了减少拷贝和注册DLL、OCX和VBX给用户带来的麻烦,VB自带了一个包装程序,利用它给应用程序打包,生成安装盘。包中可以包含应用程序相关文件、DLL文件、OCX文件、VBX文件等。要把程序包安装到某台机器上时,只需在该机器上执行Setup程序即可,由Setup程序自动完成相应的DLL、OCX和VBX文件的拷贝和注册。

3.应用程序与机器环境无关性测试方法

要保证程序的机器环境的无关性,必须进行严格测试。但由于在开发机器上所有调用的文件都实际存在,DLL、OCX和VBX等文件存在并且已经注册,因此无法进行程序的机器环境无关性测试。测试只能在其它机器上进行,可以分成以下几步:

(1)另找一台只安装了Windows系统而没有安装任何其它软件的机器,且只有Windows系统子目录。

(2)在该机器上解包并执行程序。

(3)若执行无误,则进入下一步,否则该软件需根据提示进行修改。该步骤保证了调用DLL、OCX和VBX的正确性,但并不能保证与路径无关。

(4)改变应用程序的安装目录,再进一步验证路径无关性。若无误,进入下一步,否则该软件需根据提示进行修改。该步骤保证了软件自带文件的调用正确性。

(5)另找一台只安装了Windows系统的机器,Windows系统子目录与前台机器不一样,然后重复以上步骤。若无误,则说明该软件已经达到了机器环境无关性的要求;否则,该软件需根据提示进行修改。该步骤保证软件绝对没有调用任何自带的外部文件。

应用程序的系统无关性是软件成败的一个重要因素,是程序设计中需要详细规划的一个重要方面,同时也是程序调试的一个重点内容。对本文讨论的方法稍加修改,亦可适用于其它开发工具。9.2.1Authorware一键发行设定

为了说明问题,首先打开一个文件,选择菜单命令File/Publish,其中包含了一个子菜单,如图9-18所示。这个子菜单是一些与作品发布和打包相关的命令。

PublishSettings:对作品的发布参数进行设置。

Publish:按照设置情况将作品发布。

BatchPublish:对多个文件成批发布。

Package:对作品打包。

WebPackager:将作品进行网络环境下的打包。

下面简单介绍PublishSettings设置情况。9.2Authorware多媒体作品的发布图9-18

Publish子菜单

1.Formats页框

选择PublishSettings命令,会出现如图9-19所示的对话窗口,除窗口最上方显示的是当前文件的路径及名称外,还包含了多个设置页框,可以满足多种发布和打包方式的要求。图9-19OneButtonPublishing对话窗口

Formats页框显示的是作品将要发布的类型、发布文件存放的位置、文件名等信息。

(1) PublishForCD,LAN,LocalHDD:说明发布设置是应用于CD、LAN或本地硬盘。

● PackageAs:知识打包文件存放的位置。

● WithRuntimeforWindows9xandNTvariants:选择此选项,打包后的文件是一个可以独立在Windows环境下运行的可执行程序(EXE);不选择此选项,则打包后的文件必须在有“Runa6w32.exe”文件的情况下才能够运行,这时打包文件是以“.a6r”为后缀的文件。

● CopySupportingFiles:寻找打包文件运行所需要的文件,并将它们复制到打包文件所在的文件夹中。

(2) PublishForWeb:说明下面的设置是应用于网络环境的。

● ForWebPlayer:生成AuthorwareWebPlayer需要的作品片断。除第1个片断的文件后缀为“.aam”外,其余片断的文件后缀都是“.aas”。

● WebPage:生成使用浏览器观看需要的网页“.htm”。

2.Package页框

Package页框的内容如图9-20所示,是几个打包选项。

● PackageAllLibrariesInternally:使Authorware将所有与程序链接的库文件打包成EXE文件的一部分。

● PackageExternalMediaInternally:使Authorware将所有外部的媒体打包成作品的一部分,但不能包括数字电影。图9-20

Package页框的内容● ReferencedIconsOnly:仅将程序中用到的库图标打包。

● ResolveBrokenLinksatRuntime:当编写Authorware程序时,每放一个新图标在流程线上,系统会自动记录图标的所有数据,并且Authorware内部以链接方式将数据串联起来。一旦程序作了修改操作,Authorware里的链接会重新调整,某些数据链会形成断链。为了不让程序运行过程中出现问题,最好选择此项,让Authorware自动处理断链。

3.ForWebPlayer页框

ForWebPlayer页框主要包括网络片断文件的大小、名称、安全性以及是否使用智能流技术等选项的设置,如图9-21所示,一般采用缺省值即可。图9-21

ForWebPlayer页框

4.WebPage页框

WebPage页框主要包括网页的模板、大小、外观和播放控制等参数,如图9-22所示,一般不需要修改它。

5.Files页框

Files页框自动列出了需要发布的文件、发布的目标位置等信息,如图9-23所示,包括设计的程序、Xtras文件、用户定义文件(U32)、动态链接库文件(DLL)、外部文件等。通过其中的几个按钮还可以增加、删除文件,查找额外需要的文件等。这是一个非常重要的页框,在每次作品发布时,大家都应仔细审查一下这里是否包括了自己作品所需要的全部文件。图9-22WebPage页框图9-23Files页框在Commands菜单下有一个FindXtras选项,当并不想发布作品,而只是想了解程序中使用了哪些Xtras文件时,就可以利用它来查找。在完成了PublishSettings选项中的参数设置后,还应当对对话窗口右侧的几个按钮进行说明:9.2.2作品的发布和打包

1.Publish作品发布上一节介绍了PublishSettings的设置情况,Publish命令就如同使用PublishSettings命令下OneButtonPublishing对话窗口(图9-24)中的按钮一样,是按照设置好的参数将作品发布的。

2.BatchPubl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论