当前位置:文档之家› 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和ListDestroyLONG 扩展数值型LPSTR 扩展指针NUMBER 数值型存放四字节长的数值,范围从-2147483648到+2147483647POINTER 指针型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 SETTINGSRECbeginBOOL bSwitchOn;STRING szMssg[255];INT nVal;end;SETTINGSREC settings;programsettings.bSwitchOn = FALSE;settings.szMssg = "Off";settings.nVal = 0;(8) =既可作为赋值号,同时也做等于符,例如:str1 = "String";if str1="String" thenendif;(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_YELLOWBK_GREEN BK_ORANGE BK_RED以上几种为渐变色BK_SOLIDBLACK BK_SOLIDMAGENTA BK_SOLIDREDBK_SOLIDBLUE BK_SOLIDORANGE BK_SOLIDWHITEBK_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;beginszName = "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;beginif (!BATCH_INSTALL) thenbOpt1 = TRUE;bOpt2 = FALSE;szMsg1 = "";szMsg2 = "";szOption1 = "阅读Readme文件";szOption2 = "";nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 );if bOpt1 = TRUE thenCopyFile ( "Readme.txt" , "Readme.txt" );LaunchApp ( WINDIR^"Notepad.exe" , TARGETDIR^"Readme.txt" );endif;return 0;endif;..........8.如何指定默认路径在function SetupInstall()中修改以下代码,如默认目录改为C:\JttMis,见以下修改的代码if (bIs32BitSetup) thensvDir = WINDISK ^ "Jttmis";elsesvDir = WINDISK ^ "Jttmis"; // use short namesendif;TARGETDIR = svDir;。

相关主题