- 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语言,例如下面的函数声名:
- prototypeHandleMoveDataError(NUMBER);
- 该声名中函数名为HandleMoveDataError,传递一个NUMBER类型的参数。调用该函数时也基本与C语言中相同。
- 函数体的标准格式为:
- function functionname(nResult)
- //函数变量声名区
- begin
- //程序区
- end;
- 通常的函数返回一个NUMBER型的数。
- 4.主程序结构
- 主程序以program开始,以endprogram结尾,
- 二.框架程序的基本结构
- 程序开始为函数与变量的声明区
- 通过向导建立的框架程序包含以下一些主函数:
- prototype ShowDialogs();
- //显示安装向导对话框
- prototype MoveFileData();
- //移动文件数据
- prototypeHandleMoveDataError(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();
- //显示“安装路径选择”对话框
- prototypeDialogShowSdSetupType();
- //显示“安装类型选择”对话框
- 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))
- SetColor(BACKGROUND,RGB(0,128,128))
- 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,"SETPATH=%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);
- ifbOpt1=TRUEthen
- CopyFile("Readme.txt","Readme.txt");
- LaunchApp(WINDIR^"Notepad.exe",TARGETDIR^"Readme.txt");
- endif;
- return0;
- endif;
- ..........
- 8.如何指定默认路径
- 在function SetupInstall()中修改以下代码,如默认目录改为C:/JttMis,见以下修改的代码
- if(bIs32BitSetup)then
- svDir=WINDISK^"Jttmis";
- else
- svDir=WINDISK^"Jttmis";//useshortnames
- endif;
- TARGETDIR=svDir;
InstallShield脚本编程基本语法
最新推荐文章于 2022-08-05 10:57:39 发布