看了看過去的部落格覺得自己這一年學的真雜……這不,又開始學InstallShield了。
先簡單介紹一下,InstallShield是一款打包軟體,作用是把已經開發完成的應用程式打包成安裝程式,實作一鍵安裝or解除安裝的功能。
這款軟體網上教程不多且千篇一律,大佬給我拷了幾個pdf教程,我邊看邊記錄成筆記,供自己日後查閱,也供同樣學習小夥伴參考。
基本組成
InstallShield腳本語言類C,寫慣了面向對象稍微有點看不慣,但它畢竟隻是個腳本語言,比C還是好了解多了。
1、預處理指令
- 程式的頭部含有”#”開始的指令,根據不同類型預先加載進來。
#include "ifx.h"
#include "ShutDownApp.rul"
2、函數
- InstallShield内置了250多個函數,一般都直接調用使用。
- 使用者也可以自定義函數,必須在program關鍵字前聲明,在endprogram後定義。
- 還可以使用DLL函數。不過我暫時用不到,忽略。
函數的聲明和調用
//自定義函數的聲明
prototype 函數名(形參,形參,...);
program
//自定義函數的調用
函數名( 實際參數表 );
endprogram;
//函數體
function 函數名(形參,形參,...)
定義函數内部使用的變量;
begin
語句
end;
3、語句
if語句
- InstallScript提供了如下形式的if語句
//if-then 結構
if(條件表達式) then
語句
endif;
//if-then-else 結構
if(條件表達式) then
語句
else
語句
endif;
//elseif 結構
if(條件表達式) then
語句
elseif(條件表達式) then
語句
elseif(條件表達式) then
語句
...
endif;
//if和goto結構
//一旦szSrc為空字元串時,反複執行Name标号所在位置的語句。
Name:
AskText("Company name:","",szSrc);
...
if(szSrc = "") goto Name;
switch語句
- 比較高能的來了,InstallShield中的switch語句不需要break,自帶break效果。
switch(表達式)
case 常量:語句
case 常量:語句
...
case 常量n:語句n
default:語句n+
endswitch;
while語句
while(表達式)
語句
endwhile;
repeat-until語句
repeat
語句
until(表達式);
for語句
- 最常用的for循環,和别的語言中寫法差别比較大。
- 下面例子中,X是循環變量,A是循環變量初值,B是循環變量終值,C是循環變量的增量,如果省略step C,預設C=1
for X=A to B step C
語句
endfor;
- to也可以改為downto,如下。C就變成減去的值。
for X=A dowmto B step C
語句
endfor;
abort和exit
- abort(異常中斷): 在安裝過程中使用者點選Cancel等方式結束安裝,系統則執行abort,将已安裝的内容從計算機系統中清除掉。
- exit(退出):中斷安裝程式的執行。
- 上面兩個是教程寫的,我看着也沒不清它倆有啥差別。
4、基本資料類型
- 基本資料類型有:NUMBER 數值型、STRING 字元串型、LIST 連結清單型 等
- 除了BOOL、HWND、LIST之外,其餘的資料類型可以寫成小寫形式;
- 注意沒有無符号數值類型、浮點數值類型。
// 以下這些寫法都是正确的
BOOL bLicenseAccepted;
number nResult, nLevel, nSize, nSetupType;
string szTitle, szMsg, szOpt1, szOpt2, szLicenseFile;
string szQuestion;
STRING szKey;
number nvDisk;
NUMBER nType;
常量 變量
- 使用變量前必須提前聲明。
- 不能在主程式體(program…endprogram 之間)或函數體内部(begin…end 之間)定義變量,變量必須在程式體外或者函數名與begin關鍵字之間。
function Demo(nNum1,nNum2,nNum3,bvalidEntry)
NUMBER nNum1;
NUMBER nNum2;
NUMBER nNum3;
BOOL bvalidEntry;
begin
...
end;
5、注釋
/*
* 段注釋
*/
// 行注釋
想要繼續學習InstallShield,請檢視我的後續部落格《InstallShield執行個體(OnFirstUIBefore分析、安裝導航優化)》