1. 程式人生 > >Inno Setup入門(十二)——Pascal指令碼(1)

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;

三個步驟的截圖如下:

function NextButtonClick(CurPageID: Integer): Boolean;

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

function NextButtonClick(CurPageID: Integer): Boolean;

begin

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

end;

截圖如下:

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,該頁被顯示。注意:這個事件函式不被wpWelcomewpPreparingwpInstalling 頁呼叫,還有安裝程式已經確定要跳過的頁也不會呼叫 (例如,沒有包含元件安裝程式的wpSelectComponents)。測試程式碼如下:

function ShouldSkipPage(PageID: Integer): Boolean;

begin

if PageID=wpSelectDir then

Result:=True;

end;

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

可用的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;

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

(待續)

相關推薦

Inno Setup入門——Pascal指令碼1

事件函式(1) Inno Setup支援以下函式和過程。 function InitializeSetup(): Boolean; 該函式在安裝程式初始化時呼叫,返回False 將中斷安裝,True則繼續安裝,測試程式碼如下: function Initializ

Inno Setup入門十三——Pascal指令碼2

事件函式(2) function CheckPassword(Password: String): Boolean; 如果安裝程式在Pascal 指令碼中發現該函式,它自動顯示密碼頁並呼叫CheckPassword檢查密碼。返回True 表示接受密碼,返回False拒

Django框架:orm一對一的操作

前面的部落格已經對資料庫的基礎知識有了介紹,對資料庫資料一對多的操作有了瞭解,現在來看看資料庫的一對一操作,非常簡單 資料庫中建立兩張表,一個賬戶表,一個使用者表。一個賬戶對應一個使用者,即一對一關係, ORM資料庫的一對一關係:一個表中的一條資料對應著另外一個

Inno Setup入門——Inno Setup類參考6

儲存框 儲存框也是典型的視窗視覺化元件,同編輯框類似,可以輸入、顯示文字,但是和編輯框不同的是,編輯框只能編輯、顯示單行文字,而儲存框則可以對多行文字進行操作。儲存框的類定義如下:< xmlnamespace prefix ="o" ns ="urn:schema

Inno Setup入門——Inno Setup類參考5

單選按鈕 單選按鈕在安裝中也很常見,例如同一個程式可以選擇安裝不同的性質的功能,例如選擇32位或者64位等,兩者是排他性的,因此可以通過單選按鈕(RadioButton)來實現,在同一個容器中放置的單選按鈕是自動帶有排他性的,Pascal指令碼中單選按鈕的定義如下: T

Inno Setup入門——Inno Setup類參考4

編輯框 編輯框也叫文字框,是典型的視窗視覺化元件,既可以用來輸入文字,也可以用來顯示文字,是程式設計中最常用的元件之一,可以獲取使用者輸入的許多資訊。Pascal中的編輯框由類Tedit實現,該類的定義如下: TEdit = class(TCustomEdit) pro

Inno Setup入門十三——Inno Setup類參考9

bar per win rst gre mar posit osi code 今天就簡單說一下ProgressBar。 TNewProgressBar = class(TWinControl) property Min: Longint; read write;

linux從入門到精通關機和重啟

配置 init 安全 window 入門到 win com alt 服務 1. 關機重啟命令: shutdown -h now :馬上關機shutdown -r now :馬上重啟shutdown -c :取消關機命令 2. 其他關機重啟命令: 3. 系統運行級別 4

大數據入門第二天——spark自定義分區、排序與查找

get buffer arr clas ron arm scala mut all 一、自定義分區   1.概述     默認的是Hash的分區策略,這點和Hadoop是類似的,具體的分區介紹,參見:https://blog.csdn.net/high2011/arti

Redis入門到高可用—— pipeline

pipeline info edi 建議 mage PE bubuko 圖片 set等 一、回憶通信模型 二、流水線 1.什麽是流水線 2.pipeline-Jedis實現 3.與原生M(mget,mset等)操作對比 M操作是原子操作

DAY66-前端入門-javascript vue02

選中 log 條件 p2p bin true day6 eth spl 一.文本操作指令 采用文本指令後,頁面標簽的內容由vue實例來控制。 1.v-text <!-- 原文本會被msg替換 --> <p v-text=‘msg‘></p>

斯坦福大學-自然語言處理入門 筆記 第課 詞性標註Part-of-speech tagging

一、詞性(part-of-speech)介紹 詞性:名詞(Nouns),動詞(Verbs),形容詞(Adjectives), 副詞(Adverbs)等等就是我們想要研究的詞性 我們可以把詞性分為開放類(open class)和閉合類(closed class)。

java多執行緒快速入門

在靜態方法上面加synchonizd用的是位元組碼檔案鎖 package com.cppdy; class MyThread8 implements Runnable { private static Integer ticketCount = 100; public boolea

Python入門異常處理

Python 異常處理 python提供了兩個非常重要的功能來處理python程式在執行中出現的異常和錯誤。你可以使用該功能來除錯python程式。 異常處理: 本站Python教程會具體介紹。 斷言(Assertions):本站Python教程會具體介紹。

【PP生產訂單】入門介紹

這一講我們主要來介紹一下生產訂單的收貨。 Goods Receipt 成品入庫: 下圖則是收貨後會產生哪些影響。 1、啟用WMS模組的話會產生一個貨倉轉移需求。 2、列印收貨單。 3、影響庫存數量及價值。 4、產生物料文件。 5、產生財務文件。 6、產

Spring Boot 初級入門教程 —— 執行、測試、打包過程中碰到的各種錯誤

錯誤一:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project test-springboot: Compilation fail

Linux小小白入門教程:移動/複製命令

以下操作在Linux終端進行。Linux因為許可權非常嚴格,所以暫時所有的命令操作全部是在/home資料夾下的/yangjw資料夾下進行。/yangjw資料夾就是登入使用者名稱所在的資料夾,出了此資料

python 入門之 – 陣列型別

關於陣列型別,有過程式設計基礎的都知道是怎麼回事兒,最為代表的其實就是 JOSN 格式的資料了,在 python 中定義陣列,其實就是和 JS 中可以說一摸一樣,如: arr = [] print(type(arr)) 我先用 type() 方法判斷一下變數

遊戲開發入門遊戲開發全總結

通過遊戲開發入門系列的學習,是不是對遊戲開發有了一個比較清晰的認識? 在最後一篇裡面,博主試著概括性的對遊戲開發做一個總結,歡迎各位提出意見來完善這篇部落格~ 遊戲模組總結: 遊戲邏輯模組系統:各種武器,狀態,技能,揹包,戰鬥等邏輯系統 動畫模組系

Scala入門到精通——第二節 高階型別

本節主要內容 this.type使用 型別投影 結構型別 複合型別 1. this.type使用 class Person{ private var name:String=null private var age:Int=0