日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

InstallShield腳本語(yǔ)言的編寫(xiě)參考

系統(tǒng) 2099 0
?

轉(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;

InstallShield腳本語(yǔ)言的編寫(xiě)參考


更多文章、技術(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ì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 东乡族自治县| 阿拉善右旗| 弥勒县| 东平县| 大城县| 涿鹿县| 洛隆县| 揭西县| 德兴市| 苍南县| 英吉沙县| 建水县| 兴国县| 抚松县| 昌平区| 沙洋县| 江都市| 柳江县| 皮山县| 武夷山市| 灵丘县| 永顺县| 九龙城区| 仁寿县| 原平市| 贵州省| 宿松县| 长泰县| 宁津县| 慈利县| 乐山市| 德阳市| 加查县| 江门市| 玉溪市| 淮滨县| 廉江市| 抚远县| 连南| 临高县| 宿迁市|