每一個 NSIS 安裝程式包含一個或多個區段。所有的這些區段都使用下面的這些命令來建立、修改和結束。
大小_KB
告訴安裝程式目前的區段需要一個額外的 「大小_KB」 KB 磁碟空間。僅在一個區段裡有效(在區段外或函數里無效)。
Section AddSize 500 SectionEnd
[/o] [([!]|[-])區段名] [區段索引輸出]
開始並且開啟一個新的區段。如果區段名為空、遺漏或者以一個 - 開頭,那麼它將是一個隱藏的區段,用戶也不能選擇禁止它。如果一個區段名為「Uninstall」 或以 「un.」 為前綴,那麼它就是一個卸載程式區段。如果指定了區段索引輸出,該參數將被定義 (!defined) 為區段索引(然後可以對它使用 SectionSetText 等)。如果區段名以一個 ! 開頭,那麼該區段的顯示名稱將以粗體字顯示。如果指定了 /o 開關,則該區段預設為不選。
Section "-隱藏區段" SectionEnd Section # 隱藏區段 SectionEnd Section "!描黑區段" SectionEnd Section /o "可選區段" SectionEnd Section "某些安裝" SEC_IDX SectionEnd
該命令關閉目前開啟的區段。
安裝類型索引 [安裝類型索引] [RO]
該命令指定目前區段預設為哪一種安裝類型(詳細訊息看 InstType)允許的狀態入口。可以指定多個 SectionIn 命令(它們會被組合起來)。如果指定 RO 作為一個參數,則該區段將被設為只讀區段,意味著用戶不能去改變它的狀態。
InstType "完全" InstType "最小化" Section "區段 1" SectionIn 1 2 SectionEnd Section "區段 2" SectionIn 1 SectionEnd
[/e] 標題 [區段組名索引輸出]
該命令插入一個區段組。區段組必須以 SectionGroupEnd 來關閉,並且可以包含一個或多個區段。如果區段組名稱以一個 ! 開頭,則區段組名稱以粗體字顯示。如果指定了 /e,該區段組的所有區段預設將被展開。如果指定區段組索引輸出,該參數將被定義(!defined)為區段索引(然後可以對它使用 SectionSetText 等)。如果名字以「un.」為前綴,則該區段組為卸載程式區段組。
SectionGroup "區段組" Section "區段 1" SectionEnd Section "區段 2" SectionEnd SectionGroupEnd
關閉一個以 SectionGroup 開啟的區段組。
一個特別的名為 「Uninstall」 的區段只能是被建立用於產生一個卸載程式。該區段應該用來從系統裡移除由安裝程式安裝的所有檔案、註冊表健等等。這裡有一個簡單的卸載區段例子:
Section "Uninstall" Delete $INSTDIR\Uninst.exe ; 刪除自己(看下面的解釋為什麼可以這樣) Delete $INSTDIR\myApp.exe RMDir $INSTDIR DeleteRegKey HKLM SOFTWARE\myApp SectionEnd
第一個 Delete 指令是可以正常執行的(刪除卸載程式本身),因為執行卸載程式的時候它會複製一個副本到系統臨時目錄並執行副本來完成卸載。
需要注意的是在卸載程式的代碼裡,$INSTDIR 包含了卸載程式所在的位置。你不需要在安裝程式裡給該變量重複賦值。