天天看點

InstallShield腳本語言的初識

看了看過去的部落格覺得自己這一年學的真雜……這不,又開始學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 連結清單型 等
    InstallShield腳本語言的初識
  • 除了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分析、安裝導航優化)》

繼續閱讀