上一頁 | 目錄 | 下一頁

4.5 頁面

每個(非靜默安裝) NSIS 安裝程式都有一個頁面設定。每個頁面可以是一個 NSIS 內建頁面或者一個由用戶函數(看 InstallOptions 例子)建立的自定義頁面。

使用這些腳本你可以控制這些頁面的次序、外觀、作用。你可以略過頁面、顏色繪為白色、強制用戶停留在某個頁面直到特定條件成立、顯示一個說明文件頁面、給輸入顯示一個自定義頁面或者更多的功能。在這部分你將學到如何控制上面提到的功能。

關於頁面有兩個基本的命令,PageUninstPage。前一個為新增一個頁面到安裝程式,後一個為新增一個頁面到卸載程式。在他們兩個命令的前面你可以用 PageEx 命令給他們新增一個頁面且包括一些選項。PageEx 可以使你給新增的指定頁面設定選項而不是使用 PageEx 之外設定的預設設定。

4.5.1 次序

頁面的次序由 PageUninstPagePageEx 出現在腳本裡的次序決定。例如:

 Page license
 Page components
 Page directory
 Page instfiles
 UninstPage uninstConfirm
 UninstPage instfiles

該代碼告訴 NSIS 第一個顯示的是許可頁面,然後是組件選擇頁面,然後是目錄選擇頁面,最後是區段被執行的安裝記錄頁面,就像老式的安裝程式那樣。卸載程式將首先顯示卸載確認頁面然後是卸載執行記錄。

你可以把同一個頁面類型多次指定。

由於需要向後兼容老的 NSIS 腳本,如果沒有使用到安裝程式頁面命令,那麼隨後的這些安裝程式頁面將會被新增: 許可(如果指定了 LicenseTextLicenseData)、組件選擇(如果指定了 ComponentText 並且有一個以上非隱藏的區段)、目錄選擇(如果指定了 DirText)和安裝記錄。當沒有使用到卸載程式頁面命令,那麼隨後的卸載程式頁面將會被新增: 卸載確認頁面(如果指定了 UninstallText)和卸載記錄。不過這個方法是不贊成的,強烈推薦的是把腳本轉換為使用頁面命令,因為你可以使用新的標準語言字串。

4.5.2 頁面選項

每個頁面都有它自己唯一的資料設定來定義外觀和作用。這一段敘述了每種頁面使用的資料和怎麼樣來設定。回調函數將在下一部分說明而不在本段處理。

下面的這個列表列出了某個頁面類型受什麼樣的命令影響。除非特別提及,否則這些命令都可以在 PageEx 區塊內外使用。如果在一個 PageEx 區塊內部使用那麼他們僅僅對由 PageEx 設定的目前頁面產生影響,否則他們將被設為其他所有頁面的預設值。

許可頁面

組件選擇頁面

目錄選擇頁面

卸載、安裝記錄頁面

卸載確認頁面

要設定頁面標題請使用 Caption

4.5.3 回調

每個內建的頁面都有三個回調函數。一個預置函數、一個顯示建立函數和一個離開函數。預置函數在頁面被建立之前被直接的調用,顯示函數在頁面被建立後且在顯示之前被直接調用,離開函數在用戶按下下一頁按鈕之後並且在頁面離開之前被直接調用。

一個自定義的頁面僅有兩個回調函數,一個是必須的建立頁面,另一個離開函數的作用就和內建頁面的離開函數一樣。

舉例:

 Page license skipLicense "" stayInLicense
 Page custom customPage "" ": 自定義頁面"
 Page instfiles

 Function skipLicense
   MessageBox MB_YESNO "你想略過許可頁面嗎?" IDNO no
     Abort
   no:
 FunctionEnd

 Function stayInLicense
   MessageBox MB_YESNO "你想停留在許可頁面嗎?" IDNO no
     Abort
   no:
 FunctionEnd

 Function customPage
   GetTempFileName $R0
   File /oname=$R0 customPage.ini
   InstallOptions::dialog $R0
   Pop $R1
   StrCmp $R1 "cancel" done
   StrCmp $R1 "back" done
   StrCmp $R1 "success" done
   error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$\n$R1"
   done:
 FunctionEnd

4.5.4 Page

custom [建立函數] [離開函數] [標題]
  或
(license|components|directory|instfiles|uninstConfirm) [預置函數] [顯示函數] [離開函數]

要新增一個安裝程式頁面,請看上面關於相對於自定義頁面的內建頁面和關於回調函數的段。

4.5.5 UninstPage

custom [建立函數] [離開函數] [標題]
  或
(license|components|directory|instfiles|uninstConfirm) [預置函數] [顯示函數] [離開函數]

要新增一個卸載程式頁面,請看上面關於相對於自定義頁面的內建頁面和關於回調函數的段。

4.5.6 PageEx

[un.](custom|uninstConfirm|license|components|directory|instfiles)

新增一個安裝程式頁面或一個卸載程式頁面(如果使用了 un. 前綴)。每一個 PageEx 必須和 PageExEnd 配合使用。在一個 PageEx 區塊你可以對這個頁面進行特殊的設定,這些設定不會被其他頁面使用。沒有被設定的選項將使用 PageEx 外部區塊的的設定或者當什麼都沒有指定時使用預設設定。要對頁面設定子標題使用 CaptionSubCaption。要對一個使用 PageEx 的頁面設定回調函數請使用 PageCallbacks。請看上面關於相對於自定義頁面的內建頁面的段。

使用舉例:

 PageEx license
   LicenseText "說明"
   LicenseData readme.rtf
 PageExEnd

 PageEx license
   LicenseData license.txt
   LicenseForceSelection checkbox
 PageExEnd

4.5.7 PageExEnd

結束一個 PageEx 區塊。

4.5.8 PageCallbacks

([建立函數] [離開函數]) | ([預置函數] [顯示函數] [離開函數])

對一個使用 PageEx 定義的頁面設定回調函數。僅能在 PageEx 區塊裡使用。請看上面關於回調函數的段。

PageEx license
  PageCallbacks licensePre licenseShow licenseLeave
PageExEnd

上一頁 | 目錄 | 下一頁