制作应用程序安装包完整流程

本文详细介绍了使用InstallShield制作安装程序的全过程,包括语言选择、启动画面定制、安装前准备、许可协议设置、Readme文件、客户信息处理、序列号验证、安装路径智能判断、安装类型选择、程序文件夹配置、最后确认环节,以及安装后的系统配置和注册表操作。通过这些步骤,可以创建出专业且用户友好的安装程序。
摘要由CSDN通过智能技术生成

第一步:快速体验
首先,我们可以来快速体验一下用InstallShield制作的安装程序是什么样的。
当然,我不可能详细到怎样建立一个项目之类的问题,有关这方面的内容还请看InstallShield的入门教材。
第二步:;InstallShield初探
首先,用Project Wizard建立一个新的项目,取名Demo,同时在对话框中选择所有的选项,并且在语言选择中选择Chinese(PRC)和English,即简体中文和英文支持。当然你也可以选择其它语言,为了便于讨论我只选择了Chinese(PRC)和English。
运行一下试一试,一切都正常,只是一个空壳罢了,没有任何东西。
好了,战斗的号角已经吹响了,让我们集中精力个个歼灭。
一、 语言选择

 
由于我们在生成项目的同时在语言选择中选择了Chinese(PRC)和English,因此,在图01中的下拉列表框中会自动出现中文,英文的选项。这一步由模板自动完成,我们不要做任何事情。
二、 设置启动画面

 
在我们生成项目的同时,InstallShield会为我们缺省的放上一张启动画面。见图16。

 
从该图片上我们可以看出,一般情况下是放置一张能很好的代表你公司的图片,同时上面很清楚地标明你的应用程序的名称,版本,公司名称,版权归属等基本信息。毫无疑问,我们必须用我们自己的图片来替换它。替换的方法是,在Setup File面板中,打开Splast Screen,找到Language Independent,这时我们会发现在它右边的列表中有一个文件Setup.bmp,它就是图18的那一张,我们必须首先把它删除,然后再插入我们想要的那一张,在列表中任何一个位置点击鼠标右键,选择Insert Files,用一个BMP文件替换它就行了。注意,我们替换的图片的文件名必须是Setup.bmp。
另外,顺便提一下,在Splash Screen下除了Language Independent分支外,还有Chinese(PRC)和English分支,如果在它们中放置不同的Setup.bmp文件,那么系统会根据用户在安装前选择了不同的语言而启动不同的背景,这样可以有效地避免多国语言的烦恼。同样,在设置法律声明(许可协议)和自述文件的时候也是一样的。
三、 开始安装

 
这一步由系统自动给出,我们不要做任何事情。但是我们可以在这里进行软件安装前的准备工作。比如,操作系统判断,机器可用内存容量的检测等,这些往往被忽视。
当我们用项目向导生成的新项目时,InstallShield只为我们生成两个事件,分别是OnFirstUIBefore和OnMoving,它们的意义是,
OnFirstUIBefore:在应用程序第一次安装时为了搜集用户信息而弹出的对话框之前,应用程序所响应的事件。
OnMoving:该事件在当所选择的安装组件正在安装或反安装时响应。
显然,准备工作可以在事件OnFirstUIBefore中完成,但InstallShield同时还为我们提供了事件OnBegin,该事件在是在Setup脚本中第一个被触发。还记得图片02,上面有个进度条,显示了“正准备InstallShield(R)向导...”,当该进度条结束后就首先调用OnBegin,然后才是OnFirstUIBefore。因此,我们可以将一些前期的准备工作放到这里来完成。下面是如何具体实现。
1、首先,如何添加OnBegin事件?
InstallShield将事件分成三类:全局事件,组件事件和杂项事件。其中,全局事件的添加最为方便,只要将当前行光标移到Serup脚本的最后,然后写上
function OnBegin()
begin
... // 函数体
end;
就行了。
 
2、实现操作系统的识别
像其它编程工具一样,InstallShield也为我们提供了一些系统变量,利用这些变量我们可以轻而易举的得到一些像系统目录,语言代码,CUP类型等实用数据。
具体实现代码如下:
/*****************程序代码*******************/
Function OnBegin()
Begin
if ( !SYSINFO.bIntel) then
szMsg = "提示:该软件只能运行在Intel系列的处理器上!\n\n安装程序将终止";
MessageBox(szMsg, SEVERE);
abort;
endif;
if (SYSINFO.WIN9X.bWinMe || 
SYSINFO.WINNT.bWinNT || 
SYSINFO.WINNT.bWinNT4 || 
SYSINFO.WINNT.bWin2000) then
szMsg = "提示:该软件只能运行在WIN9X系统上才能确保程序的正常工作!\n\n是否继续安装?";
if ( !AskYesNo (szMsg, NO)) then 
abort;
endif;
endif;
end
/******************结束*********************/
相关变量:SYSINFO
存放本机的一些系统变量,如操作系统,CUP类型等。有关系统变量的具体使用请参阅编程手册。
相关函数:AskYesNo
该函数弹出一消息窗口,用户通过按是或非来回答该窗口显示的问题。
 
3、实现内存容量的检测
在查阅了InstallShield系统变量后并没有找到有关内存容量方面的变量,因此只有通过调用函数来实现。
相关函数:GetSystemInfo()
该函数返回有关目标系统的诸如CUP类型,磁盘容量,当前日期,当前操作系统,内存容量等信息,返回的内存容量是以千字节为单位。有关函数的具体使用请参阅函数手册。
具体实现代码如下:
/*****************程序代码*******************/
if (GetSystemInfo (EXTENDEDMEMORY, nvFreeMem, svResult) < 0) then
MessageBox ("内存检测失败,安装程序将终止!.", SEVERE);
abort;
endif;
 
if ( nvFreeMem < 16384 ) then 
szMsg = "该软件只能安装在16M以上内存的机器中。\n很遗憾,本机器可用内存不足16M!\n\n安装程序将终止!";
MessageBox (szMsg, SEVERE);
abort;
endif;
// end.
/******************结束*********************/
四、 许可协议
 
 
选择Setup File面板,打开Language Independent,选择Operating System Independent ,在右边列表中找到License.txt文件,双击它输入自己的许可协议就行了。
五、 Readme文件
 
 
同上,找到Infolist.txt文件,双击它输入需要说明的自述文件。
六、客户信息
 
 
看一看图片,不难发现当安装程序运行这一步时上面已经填上了缺省的用户名和客户名称,甚至连序列号都有。这是怎么回事呢?原来在前面我们介绍的事件OnFirstUIBefore的开始有一段代码,如下:
nSetupType = TYPICAL; 
TARGETDIR = PROGRAMFILES ^@COMPANY_NAME ^@PRODUCT_NAME
szDir = TARGETDIR;
SHELL_OBJECT_FOLDER = @FOLDER_NAME;
svName = "";
svCompany = "";
svSerial = "";
如果我们没有给svName和svCompany赋新值的话缺省的用户名和客户名称就是我们在安装Windows时注册的用户和单位。当然,如果没有给svSerial赋值的话,图片上的序列号就为空。
相关系统变量:
PROGRAMFILES:存放Windows程序文件夹(Program files)的完整路径。不能更改。
七、 序列号判断
 
 
用InstallShield安装模板制作出的安装程序在运行过程如果没有序列号是无法再继续下去的。但如果我们在序列号上不加任何检验的话,InstallShield会默认为任何字符都是有效的而不管它是什么,此时序列号也就毫无意义,除非你想让你的应用程序无限制的发布。因此,还是建议你在安装过程中对序列号进行一下有效性检验。方法很简单,在事件OnFirstUIBefore中找到Dlg_SdRegisterUserEx分支,见下列代码:
Dlg_SdRegisterUserEx::
szMsg = ""; 
szTitle = ""; 
nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial );
if (nResult = BACK) goto Dlg_SdShowInfoList;
在语句
if (nResult = BACK) goto Dlg_SdShowInfoList;
前添上相应的序列号校验程序
//*******增加序列号的检验
if ( svSerial != '199721') then
MessageBox("警告:输入序列号错误,请确认后重输!",SEVERE);
goto Dlg_SdRegisterUserEx;
endif;
//end.
就这么简单。声明一下,这里我只是给出的最简单的判别模式,较为安全的模式是在判别时对序列号进行必要的加解密转换,有兴趣的朋友可以自己去实现。
八、 安装文件夹
 
 
在一般情况下,InstallShield默认的安装文件夹是存放Windows程序文件夹(Program files)的完整路径,即C:\ Program files(如果Windows安装在C盘的话)。但是,在绝大多数情况下我们都希望客户将应用程序安装在单独的数据盘上,即不与操作系统安装在同一个硬盘分区里。一方面便于管理,另一方面也为了防止我们的程序因为系统盘格式化而受到连累。因此,我们常常会建议用户在安装应用程序的时候选择另一个硬盘,如D盘。
另外,我们有时希望我们所开发出来的应用程序安装在一个带有自己公司名称和应用程序名称的目录下。InstallShield默认的目录就做的非常好,她会建立一个诸如“C:\Program Files\ABCD软件工作室\Demo”的目录(在这里我虚构了一个公司“ABCD软件工作室”)。但,问题是,一旦让用户选择了其它的路径,或者硬盘,他们几乎都不会在目录上加上开发商和应用程序目录,“\ABCD软件工作室\Demo”。如果用户仅仅选择了磁盘而忘了选择任何目录的话,InstallShield就会将所有的程序和数据文件复制到磁盘根目录下,用户和我们当然都不希望这样。因此,为了避免这一切的发生我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值