当前位置:文档之家› InstallShield脚本语言的编写

InstallShield脚本语言的编写

InstallShield脚本语言的编写
InstallShield脚本语言的编写

InstallShield脚本语言的编写

编号:QA001188

建立日期: 1999年6月16日最后修改日期:1999年6月16日

InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加。

一.基本语法规则

1.变量

BOOL 布尔型值为TRUE(1)或FALSE(0)

CHAR 字符型一字节长的(8bit)的字符

HWND 窗口句柄用来存放窗口句柄

INT 整型两字节长的整数

LIST 列表型指向InstallShield列表,用ListCreate和ListDestroy

LONG 扩展数值型

LPSTR 扩展指针

NUMBER 数值型存放四字节长的数值,范围从-2147483648到+2147483647

POINTER 指针型

SHORT 短数值型

STRING 字符串型十分类似VC中的LPCTSTR

变量如同标准的C语言,在使用前需要事先声名。变量通常在两个位置进行声名,一是主程序外部,这样的变量为全局变量,二是各函数的变量声名区,这样的变量是局部变量。

2.操作符

一般的与C语言相同操作符,在这里不做详解,以下主要介绍比较特殊的操作符,

(1) + , - , * , /

以上四个操作符与C语言中意义和用法都相同。

(2) &&

与操作,与C语言中用法相同,例:x1 && x2

(3) ||

或操作,与C语言中用法相同,例:x1 || x2

(4) !

非操作,与C语言中用法相同,例:!x1

(5) *

指针操作,类似C语言中的*

(6) & , | , ^ , ~ , << , >>

分别为位与,位或,按位异或,按位取反,左移和右移,其意义和用法都与C语言中基本相同。

(7) .

该操作符用于结构,用来得到结构的子项,与Delphi的 . 用法类似,例如:

typedef SETTINGSREC

begin

BOOL bSwitchOn;

STRING szMssg[255];

INT nVal;

end;

SETTINGSREC settings;

program

settings.bSwitchOn = FALSE;

settings.szMssg = "Off";

settings.nVal = 0;

(8) =

既可作为赋值号,同时也做等于符,例如:

str1 = "String";

if str1="String" then

endif;

(9) &

取地址符,与C语言用法类似。

(10) < , > , = , <= , >= , !=

分别表示小于,大于,等于,小于等于,大于等于,不等于

(11) + , ^ , %

用于字符串的操作。

(12) ->

结构指针,与C语言中用法类似。

(13) @

用于得到Resource窗口中定义的字符串,例:

szReferenceFile = svDir ^ @PRODUCT_KEY;

3.函数

InstallShield的函数使用前同样需要声名,函数的参数传递方式十分类似C语言,例如

下面的函数声名:

prototype HandleMoveDataError( NUMBER );

该声名中函数名为HandleMoveDataError,传递一个NUMBER类型的参数。调用该函数时也基本与C语言中相同。

函数体的标准格式为:

function functionname(nResult)

// 函数变量声名区

begin

// 程序区

end;

通常的函数返回一个NUMBER型的数。

4.主程序结构

主程序以program开始,以endprogram结尾,

二.框架程序的基本结构

程序开始为函数与变量的声明区

通过向导建立的框架程序包含以下一些主函数:

prototype ShowDialogs();

// 显示安装向导对话框

prototype MoveFileData();

// 移动文件数据

prototype HandleMoveDataError( NUMBER );

// 移动数据出错处理

prototype ProcessBeforeDataMove();

// 移动文件数据前的处理

prototype ProcessAfterDataMove();

// 移动文件数据后的处理

prototype SetupRegistry();

// 安装注册,用户可在此加入一些代码,通常用于对注册表的操作

prototype SetupFolders();

// 安装生成快捷方式,通常用户可在此加入生成快捷方式的代码

prototype CleanUpInstall();

// 安装完成后清除临时文件

prototype SetupInstall();

// 安装的实际过程

prototype SetupScreen();

// 设置安装过程的屏幕显示(包括背景颜色,字体等)

prototype CheckRequirements();

// 检查安装需求(包括硬盘空间,操作系统平台等)

prototype DialogShowSdWelcome();

// 显示“欢迎”对话框窗口

prototype DialogShowSdLicense();

// 显示许可信息的对话框

prototype DialogShowSdRegisterUserEx();

// 显示用户安装注册的对话框

prototype DialogShowSdAskDestPath();

// 显示“安装路径选择”对话框

prototype DialogShowSdSetupType();

// 显示“安装类型选择”对话框

prototype DialogShowSdComponentDialog2();

// 当用户选择“定制”安装时,用于显示供用户选择的组件的对话框

prototype DialogShowSdSelectFolder();

// 显示快捷方式文件夹选择的对话框

prototype DialogShowSdFinishReboot();

// 显示“安装完成重启动”对话框

编程实例:

1.怎样在进度条左上角显示当前安装的文件

在function SetupScreen()中加入以下语句

Enable( INDVFILESTATUS );

2.怎样改变窗口背景色

SetColor( BACKGROUND, **** )函数可以改变窗口背景色,在适当的位置加上它即可,其中第二个变量可以为以下值:

BK_BLUE BK_MAGENTA BK_PINK BK_YELLOW

BK_GREEN BK_ORANGE BK_RED

以上几种为渐变色

BK_SOLIDBLACK BK_SOLIDMAGENTA BK_SOLIDRED

BK_SOLIDBLUE BK_SOLIDORANGE BK_SOLIDWHITE

BK_SOLIDGREEN BK_SOLIDPINK BK_SOLIDYELLOW

同时第二个参数也可以用RGB来描述,如SetColor( BACKGROUND, RGB(0,0,255) )

3.怎样在InstallShield5.0以下版本建立快捷方式

在InstallShield5.1以上版本可以可以在Resource窗口中建立,而在以前的版本必须用程序解决该问题,如果现在有一文件RegPad.exe(安装路径为用户选定的),给该程序在“开始”->“程序”中加一个快捷方式,具体实现程序如下:

function SetupFolders()

NUMBER nResult;

STRING svResult,szCommand;

STRING szName;

begin

szName = "RegPad.exe";

szCommand = TARGETDIR ^ szName ;

LongPathToQuote ( szCommand , TRUE );

AddFolderIcon ( FOLDER_PROGRAMS ^"RegPad1.0Beta","RegPad" ,

szCommand , TARGETDIR , "" , 0 , "" , REPLACE );

4.怎样控制用户序列号

在向导生成的框架程序中,定义了一个STRING型的全局变量svSerial,在SdRegisterUserEx()结束时将给该值赋上用户输入的序列号,你对该变量进行判断即可。

5.怎样控制重新启动计算机

只需加入以下语句

System ( SYS_BOOTWIN );

6.怎样给Autoexec.bat或Config.sys加入语句

以下程序给Autoexec.bat加入一行语句

OpenFileMode ( FILE_MODE_APPEND );

OpenFile (nvFileHandle, "C:\\", "Autoexec.bat");

WriteLine ( nvFileHandle , "SET PATH=%PATH%;C:\\ORAWIN95\\BIN" );

7.怎样在安装结束时允许用户选择是否打开Readme文件

假定Readme.txt文件已经复制到目标路径,以下程序将显示一个复选框,如果用户选择了,则用记事本打开Readme.txt。

function DialogShowSdFinishReboot()

NUMBER nResult, nDefOptions;

STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,szPathls;

NUMBER bOpt1, bOpt2;

begin

if (!BATCH_INSTALL) then

bOpt1 = TRUE;

bOpt2 = FALSE;

szMsg1 = "";

szMsg2 = "";

szOption1 = "阅读Readme文件";

szOption2 = "";

nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 );

if bOpt1 = TRUE then

CopyFile ( "Readme.txt" , "Readme.txt" );

LaunchApp ( WINDIR^"Notepad.exe" , TARGETDIR^"Readme.txt" );

endif;

return 0;

endif;

..........

8.如何指定默认路径

在function SetupInstall()中修改以下代码,如默认目录改为C:\JttMis,见以下修改的代码

if (bIs32BitSetup) then

svDir = WINDISK ^ "Jttmis";

else

svDir = WINDISK ^ "Jttmis"; // use short names

endif;

TARGETDIR = svDir;

脚本语言和互动网页设计课程网上作业单选题答案

1: 下述选项中不属于JDBC基本功能的是:() 1.与数据库建立连接 2.提交SQL语句 3.处理查询结果 4.数据库维护管理 2:在page指令中,()属性是可以在页面中重复的的属性。 https://www.doczj.com/doc/5a10433084.html,nguage 2.buffer 3.import 4.autoFlush 3:下面哪种数据类型是基本数据类型()。 1.class 2.interface 3.数组 4.char 4:下列哪种数据类型是引用类型()。 1.boolean 2.int 3.interface 4.long

5: 在JSP中使用标记时,不会出现的属性是:() https://www.doczj.com/doc/5a10433084.html, 2.property 3.value 4.以上皆不会出现 6: 不能在不同用户之间共享数据的方法是() 1.通过cookie 2.利用文件系统 3.利用数据库 4.通过ServletContext对象 7:能够获取当前页信息并调用页面方法的对象是()。 1.request 2.page 3.pageContext 4.session 8: 可以取得用交提交的参数的所有记录值的方法是( ) 1.getParameter() 2.getAttribute()

3.getParameterValues() 4.getSession() 9:下面哪一个运算符有3个操作数()。 1.* 2.++ 3.&& 4.?: 10:以下文件名后缀中,只有()不是静态网页的后缀。 1..html 2..htm 3..jsp 4..shtml 11:以下选项中,哪一项不是JSP指令()。 1.page 2.import 3.include 4.taglib 12:实际开发中使用Session可以设置访问的安全性,请选择Session所设置的属性的数据类型( ) 1.String

基于JavaScript(网页脚本语言)编写的万年历(含源文件)

《软件系列课程设计——基于JavaScript (网页脚本语言)编写的万年历》 班级 学号 姓名 指导教师 成绩______________________________ 2010年06 月18 日

目录 摘要………………………………………………………………………一、引言………………………………………………………………… 1.应用背景……………………………………………………… 2.可行性分析…………………………………………………… 3.研究路线及内容……………………………………………… 二、系统开发工具……………………………………………………… 三、系统设计(详细设计)……………………………………………… 四、结束语 1.总结………………………………………………………………… 2.参考文献…………………………………………………………… 摘要 极品万年历,带有带有电子时钟,可看不同时区时间,阳历、农历同步显示,鼠标指出,

天干地支计时即出。 一、引言 1,、应用背景 随着科技的发展,人们渴望着把现实生活中的林林总总都搬到电脑上,大到工程设计,小到极品万年历。 2、可行性分析 方便查看农历重要的日子,方便外出办公校正不同区时…… 3、研究路线及内容 通过用JavaScript语言编写代码,并利用文本保存为HTTP或HTML格式。并试图实现一下内容: 1、可看阳历; 2、可看农历; 3、可看时间; 4、可看天干地支计时; 5、可划分区时。 二、系统开发工具 JavaScript网页脚本语言,IE、360安全浏览器或其他浏览器。 三、系统设计 1、程序源码 cc万年历