制作一个完整的应用程序安装实例

上传人:cjc****537 文档编号:35018955 上传时间:2018-03-07 格式:DOC 页数:14 大小:536.50KB
返回 下载 相关 举报
制作一个完整的应用程序安装实例_第1页
第1页 / 共14页
制作一个完整的应用程序安装实例_第2页
第2页 / 共14页
制作一个完整的应用程序安装实例_第3页
第3页 / 共14页
制作一个完整的应用程序安装实例_第4页
第4页 / 共14页
制作一个完整的应用程序安装实例_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《制作一个完整的应用程序安装实例》由会员分享,可在线阅读,更多相关《制作一个完整的应用程序安装实例(14页珍藏版)》请在金锄头文库上搜索。

1、探索 InstallShield 制作一个完整的应用程序安装实例 夏翔 01-8-1 下午 03:01:20 大家一定有过这样的经历, 每当我们殚精竭虑为用户开发完一个系统之后往往都是派一名技术员 到用户那里进行应用软件的安装,数据 库的配置, 这些看似简单的配置对一般用户来说可不是件容易 做的事。这不仅给那些喜欢力求完美的程序 设计师带来一点 遗憾外,而且也使我 们设计出来的软件缺 少一种安全可靠感。如果我们在交给用户软件的时候能给他们一个象一些专业软件的安装程序, 这不 仅给用户留下了一个良好的第一印象,同时也节省了开发维护成本。 要说起制作安装程序的软件有许多,像 InstallShie

2、ld,CreateInstall,Easy Install,EasySetup,SetupBuilder 等等,可以 举出一大堆来。但其中最 为著名的当属 InstallShield。目前世 界上绝大多数的商业软件的安装盘都是用她来完成,比如我们可能天天在使用的 Norton AntiVirus 2000。 InstallShield 之所以很流行也 许是因为程序员可以在通过编写脚本语言方便的进行 Windows 应用程 序的注册表修改、ODBC 配置等复杂的操作,以及她本身提供了一些相当智能化的功能。下面,就本人 在实际开发中的一些所得和大家一起探讨,文中如有任何不妥之 处还请同行们给予指教

3、。 在讲述到数据库配置的一系列问题是以目前最常用的 ODBC 接口为基础,文中用到的 实例是在 WIN98 系统中,InstallShield 用的是 Professional 6.21 下开发和调试的,其中的 应用程序实例用的 PowerBuilder 7.0 下开发的演示程序。 第一步:快速体验 首先,我们可以来快速体验一下用 InstallShield 制作的安装程序是什 么样的。 当然,我不可能详细到怎样建立一个 项目之类的问题,有 关这方面的内容还请看 InstallShield 的入 门教材。 第二步:;InstallShield 初探 首先,用 Project Wizard 建立

4、一个新的项目,取名 Demo,同时在对话框中选择所有的选项,并且在 语言选择中选择 Chinese(PRC)和 English,即 简体中文和英文支持。当然你也可以 选择其它语言, 为了 便于讨论我只选择了 Chinese(PRC)和 English。 运行一下试一试,一切都正常,只是一个空壳罢了,没有任何 东西。 好了,战斗的号角已经吹响了, 让我们集中精力个个歼灭。 一、 语言选择由于我们在生成项目的同时在语言选择中选择了 Chinese(PRC)和 English,因此,在图 01 中的下拉 列表框中会自动出现中文,英文的 选项。 这一步由模板自动完成,我 们不要做任何事情。 二、 设置

5、启动画面 在我们生成项目的同时,InstallShield 会为我们缺省的放上一 张启动画面。 见图 16。从该图片上我们可以看出,一般情况下是放置一张能很好的代表你公司的 图片,同 时上面很清楚地 标明你的应用程序的名称,版本,公司名称,版权归属等基本信息。毫无疑 问,我 们必须用我们自己的 图片来替换它。替换的方法是,在 Setup File 面板中,打 开 Splast Screen,找到 Language Independent, 这时我们会发现在它右边的列表中有一个文件 Setup.bmp,它就是 图 18 的那一张,我 们必须首先把它 删除,然后再插入我们想要的那一 张,在列表中任

6、何一个位置点 击鼠标右键,选择 Insert Files,用一个 BMP 文件替换它就行了。注意,我 们替换的图片的文件名必 须是 Setup.bmp。 另外,顺便提一下,在 Splash Screen 下除了 Language Independent 分支外, 还有 Chinese(PRC)和 English 分支,如果在它们中放置不同的 Setup.bmp 文件,那 么系统会根据用户在安装前选择了不同的 语言而启动不同的背景,这样可以有效地避免多国语言的 烦恼。同样,在 设置法律声明(许可协议)和自 述文件的时候也是一样的。 三、 开始安装这一步由系统自动给出,我 们不要做任何事情。但是我

7、 们可以在这里进行软件安装前的准备工作。 比如,操作系统判断,机器可用内存容量的检测等, 这些往往被忽视。 当我们用项目向导生成的新项目时,InstallShield 只为我们生成两个事件,分 别是 OnFirstUIBefore 和 OnMoving,它 们的意义是, OnFirstUIBefore:在应用程序第一次安装时为了搜集用户信息而弹出的对话框之前, 应用程序所响 应的事件。 OnMoving:该事件在当所 选择的安装组件正在安装或反安装时响应。 显然,准备工作可以在事件 OnFirstUIBefore 中完成,但 InstallShield 同时还为我们提供了事件 OnBegin,

8、该事件在是在 Setup 脚本中第一个被触发。 还记得图片 02,上面有个 进度条, 显示了“正准 备 InstallShield(R)向导.”,当 该进度条结束后就首先调用 OnBegin,然后才是 OnFirstUIBefore。因此,我 们 可以将一些前期的准备工作放到这里来完成。下面是如何具体 实现。 1、首先,如何添加 OnBegin 事件? InstallShield 将事件分成三 类:全局事件, 组件事件和杂项事件。其中,全局事件的添加最为方便, 只要将当前行光标移到 Serup 脚本的最后,然后写上 function OnBegin() begin . / 函数体 end; 就

9、行了。 2、实现操作系统的识别 像其它编程工具一样,InstallShield 也为我们提供了一些系 统变量,利用 这些变量我们可以轻而易举的得到一些像系统目录, 语言代码,CUP 类型等实用数据。 具体实现代码如下: /*程序代码*/ Function OnBegin() Begin if ( !SYSINFO.bIntel) then szMsg = “提示:该软件只能运行在 Intel 系列的处理器上!nn 安装程序将终止“; MessageBox(szMsg, SEVERE); abort; endif; if (SYSINFO.WIN9X.bWinMe | SYSINFO.WINNT

10、.bWinNT | SYSINFO.WINNT.bWinNT4 | SYSINFO.WINNT.bWin2000) then szMsg = “提示:该软件只能运行在 WIN9X 系统上才能确保程序的正常工作!nn 是否继续安装? “; if ( !AskYesNo (szMsg, NO) then abort; endif; endif; end /*结束*/ 相关变量:SYSINFO 存放本机的一些系统变量,如操作系 统,CUP 类型等。有 关系统变量的具体使用请参阅编程手册。 相关函数:AskYesNo 该函数弹出一消息窗口,用户通过按是或非来回答该窗口 显示的问题。 3、实现内存容量的

11、检测 在查阅了 InstallShield 系统变量后并没有找到有关内存容量方面的变量,因此只有通 过调用函数来 实现。 相关函数:GetSystemInfo() 该函数返回有关目标系统的诸如 CUP 类型,磁 盘容量,当前日期,当前操作系 统,内存容量等信息, 返回的内存容量是以千字节为单位。有 关函数的具体使用 请参阅函数手册。具体实现代码如下: /*程序代码*/ if (GetSystemInfo (EXTENDEDMEMORY, nvFreeMem, svResult) 0) then MessageBox (“内存检测失败,安装程序将 终止!.“, SEVERE); abort; e

12、ndif; if ( nvFreeMem 16384 ) then szMsg = “该软件只能安装在 16M 以上内存的机器中。n 很遗憾,本机器可用内存不足 16M!nn 安装程序将终止!“; MessageBox (szMsg, SEVERE); abort; endif; / end. /*结束*/ 四、 许可协议 选择 Setup File 面板,打 开 Language Independent, 选择 Operating System Independent ,在右 边列 表中找到 License.txt 文件,双击它 输入自己的许可协议就行了。 五、 Readme 文件同上,找到

13、 Infolist.txt 文件,双 击它输入需要说明的自述文件。 六、客户信息 看一看图片,不难发现当安装程序运行 这一步时上面已经填上了缺省的用户名和客户名称,甚至 连 序列号都有。这是怎么回事呢?原来在前面我 们介绍的事件 OnFirstUIBefore 的开始有一段代码,如下: nSetupType = TYPICAL; TARGETDIR = PROGRAMFILES COMPANY_NAME PRODUCT_NAME; szDir = TARGETDIR;SHELL_OBJECT_FOLDER = FOLDER_NAME; svName = “; svCompany = “; sv

14、Serial = “; 如果我们没有给 svName 和 svCompany 赋新值的话缺省的用户名和客户名称就是我们在安装 Windows 时注册的用户和单位。当然,如果没有 给 svSerial 赋值的话, 图片上的序列号就为空。 相关系统变量: PROGRAMFILES:存放 Windows 程序文件夹(Program files)的完整路径。不能更改。 七、 序列号判断 用 InstallShield 安装模板制作出的安装程序在运行过程如果没有序列号是无法再继续下去的。但如果我 们在序列号上不加任何检验的话,InstallShield 会默认为任何字符都是有效的而不管它是什 么,此 时

15、序列号 也就毫无意义,除非你想让你的 应用程序无限制的发布。因此, 还是建议你在安装过程中对序列号进行一下 有效性检验。方法很简单,在事件 OnFirstUIBefore 中找到 Dlg_SdRegisterUserEx 分支, 见下列代码: Dlg_SdRegisterUserEx: szMsg = “; szTitle = “; nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial ); if (nResult = BACK) goto Dlg_SdShowInfoList; 在语句 if (nRes

16、ult = BACK) goto Dlg_SdShowInfoList; 前添上相应的序列号校验程序/*增加序列号的检验 if ( svSerial != 199721) then MessageBox(“警告:输入序列号错误, 请确认后重输!“,SEVERE); goto Dlg_SdRegisterUserEx; endif; /end. 就这么简单。声明一下,这里我只是给出的最简单的判别模式, 较为安全的模式是在判别时对序列 号进行必要的加解密转换,有 兴趣的朋友可以自己去实现。 八、 安装文件夹 在一般情况下,InstallShield 默 认的安装文件夹是存放 Windows 程序文件夹

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号