杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1945|回复: 0

InstallShield脚本编程基本语法

[复制链接]
发表于 2017-1-7 19:28:34 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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();  
//检查安装需求(包括硬盘空间,<a href="http://lib.csdn.net/base/operatingsystem" class='replace_word' title="操作系统知识库" target='_blank' style='color:#df3434; font-weight:bold;'>操作系统</a>平台等)  
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;  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 19:05 , Processed in 0.106111 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表