【轉載】Inno Setup入門(十二)——Pascal腳本(1)

事件函數(1)

Inno Setup支持以下函數和過程。

function InitializeSetup(): Boolean;

該函數在安裝程序初始化時調用,返回False 中斷安裝,True則繼續安裝,測試代碼如下:

function InitializeSetup(): Boolean;

begin

  Result := MsgBox('安裝程序正在初始化,你確定要安裝嗎?', mbConfirmation, MB_YESNO) = idYes;

  if Result = False then

    MsgBox('你放棄了安裝,程序直接退出', mbInformation, MB_OK);

end;

procedure InitializeWizard();

該過程在開始的時候改變嚮導或者嚮導頁,不要指望使用InitializeSetup函數實現改變嚮導頁的功能,因爲InitializeSetup函數觸發時嚮導窗口並不存在。

procedure DeinitializeSetup();

       該過程在安裝終止時被調用,注意及時在用戶沒有安裝任何文件之前退出也會被調用。測試代碼如下:

procedure DeinitializeSetup();

begin

    msgbox('DeinitializeSetup is called',mbInformation, MB_OK);

end;

procedure CurStepChanged(CurStep: TSetupStep);

       該過程提供用戶完成預安裝和安裝之後的任務,更多的是提供了安裝過程中的狀態。參數CurStep=ssInstall是在程序實際安裝前(所有的路徑等都配置好之後準備寫入文件錢),CurStep=ssPostInstall是實際安裝完成後,而CurStep=ssDone是在一次成功的安裝完成後、安裝程序終止前(即點擊finish按鈕後執行)。測試代碼如下:

procedure CurStepChanged(CurStep: TSetupStep);

begin

       if CurStep=ssinstall then

              MsgBox('準備寫入文件了', mbInformation, MB_OK);

       if CurStep=ssPostinstall then

              MsgBox('文件複製完成', mbInformation, MB_OK);        

       if CurStep=ssDone then

              MsgBox('軟件成功安裝', mbInformation, MB_OK);

end;

三個步驟的截圖如下:

Inno Setup入門(十二)——Pascal腳本(1) - Castor - 趁年輕,多折騰~~

 

Inno Setup入門(十二)——Pascal腳本(1) - Castor - 趁年輕,多折騰~~

 

Inno Setup入門(十二)——Pascal腳本(1) - Castor - 趁年輕,多折騰~~

 

function NextButtonClick(CurPageID: Integer): Boolean;

當用戶單擊下一步按鈕時調用。如果返回True,嚮導將移到下一頁;如果返回False,它仍保留在當前頁。測試代碼如下:

function NextButtonClick(CurPageID: Integer): Boolean;

begin

       Result := MsgBox('到下一頁去嗎?', mbConfirmation, MB_YESNO) = idYes;

end;

截圖如下:

 

Inno Setup入門(十二)——Pascal腳本(1) - Castor - 趁年輕,多折騰~~

function BackButtonClick(CurPageID: Integer): Boolean;

和前面的NextButtonClick函數相反,當用戶單擊返回按鈕時調用。如果返回True,嚮導將移到前;如果返回False,它仍保留在當前頁,測試代碼略。

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);

       當用戶單擊取消按鈕或單擊窗口中的關閉按鈕時調用。Cancel 參數指定取消進程是否該發生;默認爲TrueConfirm 參數指定是否顯示“退出安裝程序嗎?”的消息框;默認爲True。如果Cancel 設爲False,那麼Confirm 的值將被忽略。測試代碼如下:

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);

begin

       cancel:=False;

end;

和你所預料的一樣,本段代碼將會導致Cancel按鈕失效,即逼迫用戶完成安裝或者採用非正常方式終止安裝程序。

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);

begin

       Confirm:=false;

end;

而上面的這段代碼將會在用戶點擊Cancel按鈕之後直接退出,不需要做進一步的確認。

function ShouldSkipPage(PageID: Integer): Boolean;

       嚮導調用這個事件函數確定是否在所有頁或不在一個特殊頁 (PageID 指定) 顯示。如果返回True,將跳過該頁;如果你返回False,該頁被顯示。注意: 這個事件函數不被wpWelcomewpPreparing wpInstalling 頁調用,還有安裝程序已經確定要跳過的頁也不會調用 (例如,沒有包含組件安裝程序的wpSelectComponents)。測試代碼如下:

function ShouldSkipPage(PageID: Integer): Boolean;

begin

       if PageID=wpSelectDir then

       Result:=True;

end;

本段代碼將會使得安裝程序跳過選擇安裝目錄的頁面,即如下頁面是不會被顯示的:

 

Inno Setup入門(十二)——Pascal腳本(1) - Castor - 趁年輕,多折騰~~

可用的PageID有: wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpInfoAfter, wpFinished

procedure CurPageChanged(CurPageID: Integer);

       在新嚮導頁 (CurPageID 指定) 顯示後調用。測試代碼如下:

procedure CurPageChanged(CurPageID: Integer);

begin

       Msgbox('ha,new page!',mbInformation, MB_OK);

end;

       該段代碼將會導致每出現一個新的一面的時候就會彈出一個消息框。

 (待續)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章