?
一.基本語(yǔ)法規(guī)則
??? 1.變量
??? BOOL 布爾型 值為TRUE(1)或FALSE(0)
??? CHAR 字符型 一字節(jié)長(zhǎng)的(8bit)的字符
??? HWND 窗口句柄 用來(lái)存放窗口句柄
??? INT 整型 兩字節(jié)長(zhǎng)的整數(shù)
??? LIST 列表型 指向InstallShield列表,用ListCreate和ListDestroy
??? LONG 擴(kuò)展數(shù)值型
??? LPSTR 擴(kuò)展指針
??? NUMBER 數(shù)值型 存放四字節(jié)長(zhǎng)的數(shù)值,范圍從-2147483648到+2147483647
??? POINTER 指針型
??? SHORT 短數(shù)值型
??? STRING 字符串型 十分類似VC中的LPCTSTR
變量如同標(biāo)準(zhǔn)的C語(yǔ)言,在使用前需要事先聲名。變量通常在兩個(gè)位置進(jìn)行聲名,一是主程序外部,這樣的變量為全局變量,二是各函數(shù)的變量聲名區(qū),這樣的變量是局部變量。
???
???
??? 2. 操作 符
一般的與C語(yǔ)言相同操作符,在這里不做詳解,以下主要介紹比較特殊的操作符,
??? (1) + , - , * , /
??? 以上四個(gè)操作符與C語(yǔ)言中意義和用法都相同。
???
??? (2) &&
??? 與操作,與C語(yǔ)言中用法相同,例:x1 && x2
???
??? (3) ||
??? 或操作,與C語(yǔ)言中用法相同,例:x1 || x2
???
??? (4) !
??? 非操作,與C語(yǔ)言中用法相同,例:!x1
???
??? (5) *
??? 指針操作,類似C語(yǔ)言中的*
???
??? (6) & , | , ^ , ~ , << , >>
??? 分別為位與,位或,按位異或,按位取反,左移和右移,其意義和用法都與C語(yǔ)言中基本相同。
???
??? (7) .
??? 該操作符用于結(jié)構(gòu),用來(lái)得到結(jié)構(gòu)的子項(xiàng),與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) =
??? 既可作為賦值號(hào),同時(shí)也做等于符,例如:
??? str1 = "String";
??? if str1="String" then
??? endif;
???
??? (9) &
??? 取 地址 符,與C語(yǔ)言用法類似。
???
??? (10) < , > , = , <= , >= , !=
??? 分別表示小于,大于,等于,小于等于,大于等于,不等于
???
??? (11) + , ^ , %
??? 用于字符串的操作。
???
??? (12) ->
??? 結(jié)構(gòu)指針,與C語(yǔ)言中用法類似。
???
??? (13) @
??? 用于得到Resource窗口中 定義 的字符串,例:
??? szReferenceFile = svDir ^ @PRODUCT_KEY;
???
???
??? 3.函數(shù)
??? InstallShield的函數(shù)使用前同樣需要聲名,函數(shù)的 參數(shù) 傳遞方式十分類似C語(yǔ)言,例如下面的函數(shù)聲名:
??? prototype HandleMoveDataError( NUMBER );
???
該聲名中函數(shù)名為HandleMoveDataError,傳遞一個(gè)NUMBER類型的參數(shù)。調(diào)用該函數(shù)時(shí)也基本與C語(yǔ)言中相同。
函數(shù)體的標(biāo)準(zhǔn)格式為:
function function name(nResult)
// 函數(shù)變量聲名區(qū)
begin
// 程序區(qū)
end;
通常的函數(shù)返回一個(gè)NUMBER型的數(shù)。
4.主程序結(jié)構(gòu)
主程序以program開(kāi)始,以endprogram結(jié)尾,
二.框架程序的基本結(jié)構(gòu)
程序開(kāi)始為函數(shù)與變量的聲明區(qū)
通過(guò)向?qū)Ы⒌目蚣艹绦虬韵乱恍┲骱瘮?shù):
??? prototype ShowDialogs();
??? // 顯示 安裝 向?qū)? 對(duì)話框
???
??? prototype MoveFileData();
??? // 移動(dòng) 文件 數(shù)據(jù)
???
??? prototype HandleMoveDataError( NUMBER );
??? // 移動(dòng)數(shù)據(jù)出錯(cuò)處理
???
??? prototype ProcessBeforeDataMove();
??? // 移動(dòng)文件數(shù)據(jù)前的處理
???
??? prototype ProcessAfterDataMove();
??? // 移動(dòng)文件數(shù)據(jù)后的處理
???
??? prototype Setup Registry();
??? // 安裝注冊(cè),用戶可在此加入一些代碼,通常用于對(duì) 注冊(cè)表 的操作
???
??? prototype SetupFolders();
??? // 安裝生成快捷方式,通常用戶可在此加入生成快捷方式的代碼
???
??? prototype CleanUpInstall();
??? // 安裝完成后清除臨時(shí)文件
???
??? prototype SetupInstall();
??? // 安裝的實(shí)際過(guò)程
???
??? prototype SetupScreen();
??? // 設(shè)置安裝過(guò)程的屏幕顯示(包括背景顏色,字體等)
???
??? prototype CheckRequirements();
??? // 檢查安裝需求(包括硬盤(pán)空間, 操作 系統(tǒng) 平臺(tái)等)
???
??? prototype DialogShowSdWelcome();
??? // 顯示“歡迎”對(duì)話框窗口
???
??? prototype DialogShowSdLicense();
??? // 顯示許可信息的對(duì)話框
???
??? prototype DialogShowSdRegisterUserEx();
??? // 顯示用戶安裝注冊(cè)的對(duì)話框
???
??? prototype DialogShowSdAskDestPath();
??? // 顯示“安裝路徑選擇”對(duì)話框
???
??? prototype DialogShowSdSetupType();
??? // 顯示“安裝類型選擇”對(duì)話框
???
??? prototype DialogShowSdComponentDialog2();
??? // 當(dāng)用戶選擇“定制”安裝時(shí),用于顯示供用戶選擇的組件的對(duì)話框
???
??? prototype DialogShowSdSelectFolder();
??? // 顯示快捷方式文件夾選擇的對(duì)話框
???
??? prototype DialogShowSdF ini shReboot();
??? // 顯示“安裝完成重啟動(dòng)”對(duì)話框
編程實(shí)例:
1.怎樣在進(jìn)度條左上角顯示當(dāng)前安裝的文件
在function SetupScreen()中加入以下語(yǔ)句
??? Enable( INDVFILESTATUS );
???
2.怎樣改變窗口背景色
??? SetColor( BACKGROUND, **** )函數(shù)可以改變窗口背景色,在適當(dāng)?shù)奈恢眉由纤纯桑渲械诙€(gè)變量可以為以下值:
??? 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
??? 同時(shí)第二個(gè)參數(shù)也可以用RGB來(lái)描述,如SetColor( BACKGROUND, RGB(0,0,255) )
???
3.怎樣在InstallShield5.0以下版本建立快捷方式
在InstallShield5.1以上版本可以可以在Resource窗口中建立,而在以前的版本必須用程序解決該問(wèn)題, 如果現(xiàn)在有一文件RegPad. exe (安裝路徑為用戶選定的),給該程序在“開(kāi)始”->“程序”中加一個(gè)快捷方式,具體實(shí)現(xiàn)程序如下:
??? 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.怎樣控制用戶序列號(hào)
在向?qū)傻目蚣艹绦蛑校x了一個(gè)STRING型的全局變量svSerial,在SdRegisterUserEx()結(jié)束時(shí)將給 該值賦上用戶輸入的序列號(hào),你對(duì)該變量進(jìn)行判斷即可。
???
5.怎樣控制重新啟動(dòng) 計(jì)算機(jī)
只需加入以下語(yǔ)句
??? System ( SYS_BOOTWIN );
???
6.怎樣給Autoexec.bat或Config.sys加入語(yǔ)句
以下程序給Autoexec.bat加入一行語(yǔ)句
??? OpenFileMode ( FILE_MODE_APPEND );
??? OpenFile (nvFileHandle, "C://","Autoexec.bat");
??? WriteLine ( nvFileHandle , "SETPATH=%PATH%;C://ORAWIN95//BIN" );
???
7.怎樣在安裝結(jié)束時(shí)允許用戶選擇是否打開(kāi)Readme文件
假定Readme. txt 文件已經(jīng)復(fù)制到目標(biāo)路徑,以下程序?qū)@示一個(gè)復(fù)選框,如果用戶選擇了,則用記事本打開(kāi)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.如何指定默認(rèn)路徑
在function SetupInstall()中修改以下代碼,如默認(rèn)目錄改為C:/JttMis,見(jiàn)以下修改的代碼
??? if (bIs32BitSetup) then
??? svDir = WINDISK ^ "Jttmis";
??? else
??? svDir = WINDISK ^ "Jttmis"; // use shortnames
??? endif;
???
??? TARGETDIR = svDir;
轉(zhuǎn)自http://www.bangchui.net/viewthread.php?tid=75&extra=page%3D2
Install Shield 腳本語(yǔ)言是類似C語(yǔ)言,利用InstallShield的 向?qū)? 或模板都可以生成基本的腳本 程序 框架,可以在此基礎(chǔ)上按自己的意愿進(jìn)行修改和添加。一.基本語(yǔ)法規(guī)則
??? 1.變量
??? BOOL 布爾型 值為TRUE(1)或FALSE(0)
??? CHAR 字符型 一字節(jié)長(zhǎng)的(8bit)的字符
??? HWND 窗口句柄 用來(lái)存放窗口句柄
??? INT 整型 兩字節(jié)長(zhǎng)的整數(shù)
??? LIST 列表型 指向InstallShield列表,用ListCreate和ListDestroy
??? LONG 擴(kuò)展數(shù)值型
??? LPSTR 擴(kuò)展指針
??? NUMBER 數(shù)值型 存放四字節(jié)長(zhǎng)的數(shù)值,范圍從-2147483648到+2147483647
??? POINTER 指針型
??? SHORT 短數(shù)值型
??? STRING 字符串型 十分類似VC中的LPCTSTR
變量如同標(biāo)準(zhǔn)的C語(yǔ)言,在使用前需要事先聲名。變量通常在兩個(gè)位置進(jìn)行聲名,一是主程序外部,這樣的變量為全局變量,二是各函數(shù)的變量聲名區(qū),這樣的變量是局部變量。
???
???
??? 2. 操作 符
一般的與C語(yǔ)言相同操作符,在這里不做詳解,以下主要介紹比較特殊的操作符,
??? (1) + , - , * , /
??? 以上四個(gè)操作符與C語(yǔ)言中意義和用法都相同。
???
??? (2) &&
??? 與操作,與C語(yǔ)言中用法相同,例:x1 && x2
???
??? (3) ||
??? 或操作,與C語(yǔ)言中用法相同,例:x1 || x2
???
??? (4) !
??? 非操作,與C語(yǔ)言中用法相同,例:!x1
???
??? (5) *
??? 指針操作,類似C語(yǔ)言中的*
???
??? (6) & , | , ^ , ~ , << , >>
??? 分別為位與,位或,按位異或,按位取反,左移和右移,其意義和用法都與C語(yǔ)言中基本相同。
???
??? (7) .
??? 該操作符用于結(jié)構(gòu),用來(lái)得到結(jié)構(gòu)的子項(xiàng),與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) =
??? 既可作為賦值號(hào),同時(shí)也做等于符,例如:
??? str1 = "String";
??? if str1="String" then
??? endif;
???
??? (9) &
??? 取 地址 符,與C語(yǔ)言用法類似。
???
??? (10) < , > , = , <= , >= , !=
??? 分別表示小于,大于,等于,小于等于,大于等于,不等于
???
??? (11) + , ^ , %
??? 用于字符串的操作。
???
??? (12) ->
??? 結(jié)構(gòu)指針,與C語(yǔ)言中用法類似。
???
??? (13) @
??? 用于得到Resource窗口中 定義 的字符串,例:
??? szReferenceFile = svDir ^ @PRODUCT_KEY;
???
???
??? 3.函數(shù)
??? InstallShield的函數(shù)使用前同樣需要聲名,函數(shù)的 參數(shù) 傳遞方式十分類似C語(yǔ)言,例如下面的函數(shù)聲名:
??? prototype HandleMoveDataError( NUMBER );
???
該聲名中函數(shù)名為HandleMoveDataError,傳遞一個(gè)NUMBER類型的參數(shù)。調(diào)用該函數(shù)時(shí)也基本與C語(yǔ)言中相同。
函數(shù)體的標(biāo)準(zhǔn)格式為:
function function name(nResult)
// 函數(shù)變量聲名區(qū)
begin
// 程序區(qū)
end;
通常的函數(shù)返回一個(gè)NUMBER型的數(shù)。
4.主程序結(jié)構(gòu)
主程序以program開(kāi)始,以endprogram結(jié)尾,
二.框架程序的基本結(jié)構(gòu)
程序開(kāi)始為函數(shù)與變量的聲明區(qū)
通過(guò)向?qū)Ы⒌目蚣艹绦虬韵乱恍┲骱瘮?shù):
??? prototype ShowDialogs();
??? // 顯示 安裝 向?qū)? 對(duì)話框
???
??? prototype MoveFileData();
??? // 移動(dòng) 文件 數(shù)據(jù)
???
??? prototype HandleMoveDataError( NUMBER );
??? // 移動(dòng)數(shù)據(jù)出錯(cuò)處理
???
??? prototype ProcessBeforeDataMove();
??? // 移動(dòng)文件數(shù)據(jù)前的處理
???
??? prototype ProcessAfterDataMove();
??? // 移動(dòng)文件數(shù)據(jù)后的處理
???
??? prototype Setup Registry();
??? // 安裝注冊(cè),用戶可在此加入一些代碼,通常用于對(duì) 注冊(cè)表 的操作
???
??? prototype SetupFolders();
??? // 安裝生成快捷方式,通常用戶可在此加入生成快捷方式的代碼
???
??? prototype CleanUpInstall();
??? // 安裝完成后清除臨時(shí)文件
???
??? prototype SetupInstall();
??? // 安裝的實(shí)際過(guò)程
???
??? prototype SetupScreen();
??? // 設(shè)置安裝過(guò)程的屏幕顯示(包括背景顏色,字體等)
???
??? prototype CheckRequirements();
??? // 檢查安裝需求(包括硬盤(pán)空間, 操作 系統(tǒng) 平臺(tái)等)
???
??? prototype DialogShowSdWelcome();
??? // 顯示“歡迎”對(duì)話框窗口
???
??? prototype DialogShowSdLicense();
??? // 顯示許可信息的對(duì)話框
???
??? prototype DialogShowSdRegisterUserEx();
??? // 顯示用戶安裝注冊(cè)的對(duì)話框
???
??? prototype DialogShowSdAskDestPath();
??? // 顯示“安裝路徑選擇”對(duì)話框
???
??? prototype DialogShowSdSetupType();
??? // 顯示“安裝類型選擇”對(duì)話框
???
??? prototype DialogShowSdComponentDialog2();
??? // 當(dāng)用戶選擇“定制”安裝時(shí),用于顯示供用戶選擇的組件的對(duì)話框
???
??? prototype DialogShowSdSelectFolder();
??? // 顯示快捷方式文件夾選擇的對(duì)話框
???
??? prototype DialogShowSdF ini shReboot();
??? // 顯示“安裝完成重啟動(dòng)”對(duì)話框
編程實(shí)例:
1.怎樣在進(jìn)度條左上角顯示當(dāng)前安裝的文件
在function SetupScreen()中加入以下語(yǔ)句
??? Enable( INDVFILESTATUS );
???
2.怎樣改變窗口背景色
??? SetColor( BACKGROUND, **** )函數(shù)可以改變窗口背景色,在適當(dāng)?shù)奈恢眉由纤纯桑渲械诙€(gè)變量可以為以下值:
??? 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
??? 同時(shí)第二個(gè)參數(shù)也可以用RGB來(lái)描述,如SetColor( BACKGROUND, RGB(0,0,255) )
???
3.怎樣在InstallShield5.0以下版本建立快捷方式
在InstallShield5.1以上版本可以可以在Resource窗口中建立,而在以前的版本必須用程序解決該問(wèn)題, 如果現(xiàn)在有一文件RegPad. exe (安裝路徑為用戶選定的),給該程序在“開(kāi)始”->“程序”中加一個(gè)快捷方式,具體實(shí)現(xiàn)程序如下:
??? 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.怎樣控制用戶序列號(hào)
在向?qū)傻目蚣艹绦蛑校x了一個(gè)STRING型的全局變量svSerial,在SdRegisterUserEx()結(jié)束時(shí)將給 該值賦上用戶輸入的序列號(hào),你對(duì)該變量進(jìn)行判斷即可。
???
5.怎樣控制重新啟動(dòng) 計(jì)算機(jī)
只需加入以下語(yǔ)句
??? System ( SYS_BOOTWIN );
???
6.怎樣給Autoexec.bat或Config.sys加入語(yǔ)句
以下程序給Autoexec.bat加入一行語(yǔ)句
??? OpenFileMode ( FILE_MODE_APPEND );
??? OpenFile (nvFileHandle, "C://","Autoexec.bat");
??? WriteLine ( nvFileHandle , "SETPATH=%PATH%;C://ORAWIN95//BIN" );
???
7.怎樣在安裝結(jié)束時(shí)允許用戶選擇是否打開(kāi)Readme文件
假定Readme. txt 文件已經(jīng)復(fù)制到目標(biāo)路徑,以下程序?qū)@示一個(gè)復(fù)選框,如果用戶選擇了,則用記事本打開(kāi)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.如何指定默認(rèn)路徑
在function SetupInstall()中修改以下代碼,如默認(rèn)目錄改為C:/JttMis,見(jiàn)以下修改的代碼
??? if (bIs32BitSetup) then
??? svDir = WINDISK ^ "Jttmis";
??? else
??? svDir = WINDISK ^ "Jttmis"; // use shortnames
??? endif;
???
??? TARGETDIR = svDir;
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
