设为首页 加入收藏

TOP

Install Shield安装程序制作图解(五)
2012-11-04 15:07:34 来源: 作者: 【 】 浏览:2382
Tags:Install Shield 安装 程序 制作 图解
  4、脚本代码分析

  下面对向导生成的脚本代码进行分析,在Scripts页中双击Setup.rul项即可在右侧编辑视图察看如下结构的脚本代码:

#include "sdlang.h"
#include "sddialog.h"
……
// 函数声明
prototype ShowDialogs();
……
// 全局变量声明
BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup;
……
// 主程序
program
……
endprogram
// 调用函数
……
#include "sddialog.rul"

  代码开始的这两个包含语句引入了预定义语言标识的头文件和Sd对话框的头文件。其中Sd对话框是一种脚本对话框(Script Dialog),是按InstallScript特定的机制来创建的,调用Sd对话框的函数均以Sd开头。除了在开始添加上述包含语句外,还要在endprogram语句后添加#include "sddialog.rul"语句,以将Sd对话框的实现脚本文件包含进来。随后由prototype关键字在program之前定义了函数的原型声明,其函数实现则要在endprogram之后才能给出。按照InstallScript的规定,在函数体内不允许声明变量,只能在全局声明变量或是在函数名后、函数体前声明局部变量,而且在声明变量时不允许同时为变量设置初始值。program和endprogram这两个关键字定义了主程序的开始与结束,其内代码即是对全部安装过程的描述:

program
Disable( BACKGROUND );
CheckRequirements();
SetupInstall();
SetupScreen();
if (ShowDialogs()<0) goto end_install;
if (ProcessBeforeDataMove()<0) goto end_install;
if (MoveFileData()<0) goto end_install;
if (ProcessAfterDataMove()<0) goto end_install;
if (SetupRegistry()<0) goto end_install;
if (SetupFolders()<0) goto end_install;
end_install:
CleanUpInstall();
// If an unrecoverable error occurred, clean up the partial installation.
// Otherwise, exit normally.
if (bInstallAborted) then
abort;
endif;
endprogram

  上述代码首先通过Disable()函数指定安装过程不使用背景色,然后调用CheckRequirements()检查当前系统是否能够满足被安装程序正常运行所需要的最低要求,并通过SetupInstall()和SetupScreen()来建立安装界面的初始化。随后的这一系列if条件判断语句即是开始执行各个安装步骤,如果某一安装步骤出现错误,则通过goto语句跳转到end_install标签处,在通过CleanUpInstall()清除已经安装的文件后退出安装。其中,ShowDialogs()函数负责显示诸如用户信息、选择安装路径等对话框,由ProcessBeforeDataMove()、MoveFileData()和ProcessAfterDataMove()负责处理数据的复制事宜。最后通过SetupRegistry()完成注册,通过SetupFolders()在桌面或开始菜单创建相应的快捷方式。这些函数的具体实现过程可以在endprogram后面的函数体实现中找到,并可按自己的需要对向导生成的缺省代码进行修改。

  对于此向导创建的程序框架,可通过Build菜单下的Compile和Run Setup菜单项来编译和运行。由于这时创建的只是一个空的程序框架,因此整个安装过程将不进行任何实质性工作,即不进行数据文件的复制和对安装的注册。

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/14/14
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇STL实践指南之STL的烦恼 下一篇MFC程序员的WTL指南之WTL 界面基类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: