InstallShield 语法
变量: 可以由 数字,字母 ,_ 组成,首位不能是数字
变量类型总的来讲,只有BOOL,NUMBER ,STRING , CHAR,LIST,POINT(SPSTR)五种类型及BYREF类型
变量不能在函数体内声明,但可以在函数名后,begin 之前声明(这是局部变量只能此函数使用)
变量声明时不能初始化 , STRING szStr[127] 这里的127很奇怪,类似VB VC结合体,表示字符串长度
常量可以用符号代替:#define FILE "C:\windows\system32\cmde.exe"
函数: 有且只有 一个主函数 program --- endprogram 后面没有分号
非主函数要先声明才能使用!声明: “prototype MyFunction(tyte,type); ” 使用 “MyFuncion(val,val); ” 定义: “function MyFunction 变量定义 begin ---- end; ” 注意分号
不允许在一个函数体中再定义函数
自定义函数的声明,必须在 program 前面
可以声明不带参数的 prototype CopyBitmapExample (); // 声明一个没有形参的函数
DLL 中函数的使用(和ams 及按键精灵类似,不过后二者中有专门的加载函数,类似于vb的声明功能):
(1) 首先使用下列形式在主程序体program前声明所要使用的DLL函数:
prototype
(2) 然后,使用UseDLL函数将DLL文件调入内存;
(3) 接着,用下列形式调用已声明过的DLL函数;
函数名 ( 实参 );
(4) 最后,使用 UnUseDLL将DLL文件从内存中释放出来。
运算:
算术运算符 ( +, -, *, /)
关系运算符 ( <, >, =, <=, >=, != )
逻辑运算符 ( &&, ||, ! )
位运算符 ( &, |, ~, ^, <<, >> )
赋值运算符 ( = )
指针运算符 ( *, & )
分量运算符 ( ., -> )
下标运算符 ( [ ] )
字符串运算符 ( ^, +, % )
其它 ( 如BYREF运算符 )
InstallScript不支持浮点运算。
循环:(1) 用goto语句和if语句构成循环
(2) 用while () ..endwhile; 语句
(3) 用repeat..until(); 语句
(4) 用for X=A to B step C ..... endfor语句
abort和exit
abort(异常中断)和exit(退出)是InstallScript的两个关键字。在安装程序执行过程中,当用户按下Esc键、F3键或单击安装对话框中的[Cancel]按钮时,系统将自动执行abort,其目的是将已安装的内容从计算机系统中清除掉。任何时候,只要安装程序遇到abort,都会进行上述的处理。而exit只是中断安装程序的执行,因此若用户在未安装完之前需要程序中断,则应在主程序体中使用abort来代替exit。但也应注意,虽然exit还可代替程序中的endprogram,与program一起构成一个主程序体,但最好不要这样。
2.5.3 BYREF参数和函数的返回值
在InstallScript的大多数函数中,函数的参数传递方式是"按值传递"的。一个函数能使用引用传递的方式是在函数声明时将形参类型前加上引用关键字"BYREF"。例如:
prototype StrInvert(BYREF STRING ); 每个需要引用的,都要用BYREF关键字
return nVal;
字符和字符串
虽然InstallScript支持数组类型,但它只支持一维数组。且这里的字符数组和字符串的概念很不一样。例如:
CHAR str[10];
program
str="ABCDE"; // 产生编译错误
endprogram
但是,STRING类型的字符串概念与C语言一样。它是一个以'\0'为终止符的一维字符数组,使用数组下标可以获得相应的字符(字符数组的下标从0开始)声明时候用[] 是指定长度
^ (在一个路径或文件名后添加另一个路径) 这个可会自动加路径分隔符的哦"\"
+ (在一个字符串后添加另一个字符串)
% (在一个字符串中查找一个子串) 类似StrFindStrFind还返回被查找的字符串首字符在字符串中的位置。
上面三个符号都不能用()