Inno Setup進階之事件函數(二)


安裝程序事件函數

安裝程序支持下列事件函數:

  • function InitializeSetup(): Boolean;
    在安裝程序初始化期間調用。返回 False 以中止 Setup,否則返回 True。

  • procedure InitializeWizard();
    在啟動時使用該事件函數來改變向導或向導頁面。你不能在它被觸發時使用 InitializeSetup 事件函數,因為向導窗體尚不存在。

  • procedure DeinitializeSetup();
    僅在安裝程序終止前調用。注意這個函數在即使用戶在任何內容安裝之前退出安裝程序時也會調用。

  • procedure CurStepChanged(CurStep: TSetupStep);
    你可以用這個事件函數執行你自己的預安裝和安裝后任務。
    在實際安裝開始之前用 CurStep=ssInstall 調用,或在實際安裝完成之后用 CurStep=ssPostInstall 調用,或在安裝程序終止之前和安裝完成之后用 CurStep=ssDone 調用。

  • procedure CurInstallProgressChanged(CurProgress, MaxProgress: Integer);
    在安裝程序提取文件、創建快捷方式、創建 INI 條目和創建注冊表項時,你可以使用該事件函數來監測進程。

  • function NextButtonClick(CurPageID: Integer): Boolean;
    當用戶單擊下一步按鈕時調用。如果你返回 True,向導將移到下一頁面;如果返回 False,它仍保留在當前頁面(用 CurPageID 指定)。
    注意,該函數在靜默安裝時也會調用,即使沒有下一步按鈕讓用戶單擊。安裝程序會模擬單擊下一步按鈕。在靜默安裝中,如果你的 NextButtonClick 函數在安裝之前返回 False,安裝程序將自動退出。

  • function BackButtonClick(CurPageID: Integer): Boolean;
    當用戶單擊上一步按鈕時調用。如果你返回 True,向導將移到上一頁面;如果返回 False,它仍保留在當前頁面(用 CurPageID 指定)。

  • procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
    當用戶單擊取消按鈕或單擊窗口中的關閉按鈕時調用。Cancel 參數指定是否是一般的取消進程;默認為 True。Confirm 參數指定是否顯示“退出安裝程序嗎?”的消息框;一般它默認為 True。如果 Cancel 設為 False,那么 Confirm 值被忽略。

  • function ShouldSkipPage(PageID: Integer): Boolean;
    向導調用這個事件函數確定是否在所有頁面或不在一個特殊頁面(用 PageID 指定)顯示。如果返回 True,將跳過該頁面;如果你返回 False,該頁面被顯示。
    注意:這個事件函數不被 wpWelcome、wpPreparing 和 wpInstalling 頁面調用,還有安裝程序已經確定要跳過的頁面也不會調用(例如,沒有包含組件安裝程序的 wpSelectComponents)。

  • procedure CurPageChanged(CurPageID: Integer);
    在新向導頁面(用 CurPageID 指定)顯示后調用。

  • function CheckPassword(Password: String): Boolean;
    如果安裝程序在 Pascal 腳本中發現 CheckPassword 事件函數,它自動顯示密碼頁面並調用 CheckPassword 檢查密碼。返回 True 表示接受密碼,返回 False 拒絕。
    要避免在編譯的安裝程序的 [Code] 區段內部貯存真實的密碼,你應該用其它無用的信息進行比較: 計算你自己密碼的 SHA1 的無用信息,然后編譯到 GetSHA1OfString(Password)。通過這種方法保護實際密碼值。
    注意:如果安裝程序帶一個 /PASSWORD= 命令行參數運行,則你的 CheckPassword 函數將在任何其他事件函數之前被調用,包括 InitializeSetup。

  • function NeedRestart(): Boolean;
    返回 True 告訴安裝程序提示用戶在安裝結束時重新啟動系統,False 則反之。

  • function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
    如果安裝程序在 Pascal 腳本中發現 UpdateReadyMemo 事件函數,當准備安裝向導頁面變為活動頁面時自動調用。它返回的文字顯示在准備安裝向導頁面的設置備注中,作為由 NewLine 參數分隔行的單個字串。參數 Space 包含一個帶空格的字串。安裝程序使用該字串來進行縮進設置。其它參數將包含安裝程序用於設置區段的字串(可能是空的)。例如 MemoDirInfo 參數包含象選擇目錄區段的字串。

  • procedure RegisterPreviousData(PreviousDataKey: Integer);
    要在自定義向導頁面中貯存用戶輸入的設置,在 Pascal 腳本中放入一個 RegisterPreviousData 事件函數,並調用 SetPreviousData(PreviousDataKey, ...) 替換它,每個設置一次。

  • function CheckSerial(Serial: String): Boolean;
    如果安裝程序在 Pascal 腳本中發現 CheckSerial 事件函數,將在用戶信息向導頁面中自動出現一個序列號對象(必須在你的 [Setup] 區段中使用 UserInfoPage=yes !)。返回 True 表示接受序列號,返回 False 拒絕。當使用序列號時,請一定要記住,這個軟件無加密可言,況且 Inno Setup 源代碼是免費獲取的,它對於有經驗的人從安裝程序中刪除序列號保護並不是很困難的事。使用這個只是方便用戶在你的應用程序中仔細檢查輸入的序列號(貯存在 {userinfoserial} 常量)。

  • function GetCustomSetupExitCode: Integer;
    返回一個非零值命令安裝程序返回一個自定義退出代碼。這個函數只在安裝程序運行完成並且退出代碼已是零時調用。同時請參見安裝退出代碼。

  • function PrepareToInstall(var NeedsRestart: Boolean): String;
    你可以使用該事件函數來監測並安裝丟失的先決條件和/或關閉任何有關被更新的應用程序。
    返回非空字串以指示安裝程序停止在准備安裝向導頁面,將返回的字串顯示為錯誤消息。如果需要重新啟動,請將 NeedsRestart 設置為 True(並返回非空字串)。如果以這種方式停止安裝程序,它將使用安裝程序退出代碼中所述的專用退出代碼退出。在這種情況下,不會使用由 /RESTARTEXITCODE= 命令行參數設置的任何自定義退出代碼。
    如果 CloseApplications 設置為 yes,則在安裝程序對正在使用的文件檢查前,該事件函數被調用。
    僅當安裝程序尚未確定無法繼續時才會調用此函數,因為 [Files] 和 [InstallDelete] 區段中指定的一個或多個文件已隊列(通過某些其他安裝),以便在下次重新啟動時進行替換或刪除。

  • procedure RegisterExtraCloseApplicationsResources;
    如果 CloseApplications 被設置為 yes,則要注冊安裝程序會檢查正在使用的那個額外文件,在 Pascal 腳本中放置一個 RegisterExtraCloseApplicationsResources 事件函數,並在其內部調用 RegisterExtraCloseApplicationsResource,每次一個文件。

卸載事件函數

卸載支持下列函數:

  • function InitializeUninstall(): Boolean;
    返回 False 中止卸載,True 則反之。

  • procedure InitializeUninstallProgressForm();
    使用該事件函數對進度窗體在啟動時進行更改。你不能使用 InitializeUninstall 事件函數,因為在它被觸發時該進度窗體尚不存在。

  • procedure DeinitializeUninstall();

  • procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

  • function UninstallNeedRestart(): Boolean;
    返回 True 以指示卸載程序在成功卸載結束時,提示用戶重新啟動系統,False 則反之。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM