nsis打包


 

[全部展開]   [全部折疊]

介紹

NSIS 2 能夠使你更容易地創建自定義用戶界面的安裝程序. Modern UI (新式用戶界面) 提供的界面樣式與最近版本的 Windows 所使用的向導的界面樣式很相似.

它包括 NSIS 所有的標准頁面 (如 組件選擇頁面、安裝目錄選擇頁面) 以及一些擴展頁面。你可以在歡迎頁面上提供一些安裝相關的介紹, 在完成頁面上提供一些選項, 允許用戶選擇在安裝程序關閉時執行。(例如, 應用程序是否立即執行)。你也可以在完成頁面為用戶提供是否重啟系統的選項。

Open/Close section 屏幕截圖

Modern UI 2.0

新版讓自定義頁面變得更加容易, 因為  更改 NSIS 的標准頁面與 MUI 的擴展頁面的方法是一樣的。現在還可以用其它的 NSIS 插件來為 MUI 添加新頁面。你很快就可以看到這類例子。

歡迎和完成頁面不再需要 InstallOptions - 它已經被新的 nsDialogs 插件代替。你可以在直接腳本中用 nsDialogs 創建自定義頁面、個性化內置的頁面。

要升級 Modern UI 1.8 的腳本, 你需要這樣處理:

  • 插入 MUI2.nsh 頭文件代替 MUI.nsh。
  • 與 InstallOptions 相關的宏, 已經被分離在一個與 MUI 無關的獨立的頭文件中。如果你仍然用 InstallOptions 做自定義頁面, 你需要插入 InstallOptions.nsh, 並用 INSTALLOPTIONS_* 替代之前的 MUI_INSTALLOPTIONS_* 宏。這些宏的功用還是和原來的一樣。
  • 你需要重寫自己的個性化代碼, 用 nsDialogs 的指令代替 Modern UI 1.8 歡迎與完成頁面中所用的 InstallOptions INI 文件 。
  • 在所有的文本中, 用 NSIS 固有的方法規避一些特殊字符。例如, $\r$\n 新建一行。

腳本頭部

Modern UI 的有關設置應該在腳本文件的開頭部分插入。遵守如下的順序是很重要的, 例如, 應當在插入 "頁面宏" 之前設置 "界面設置", 頁面的界面設置將會應用於某一類型的所有頁面。看看 范例腳本 對你在實際腳本的中應該如何處理這些, 會很有幫助。

參數需要指定為這樣的格式: 必須項 (選項1 | 選項2) [可選項]

1. 頭文件

首先, 在腳本的開頭添加此行來引入 Modern UI:

!include MUI2.nsh

2. 界面設置

然后, 你可能需要通過界面設置來更改安裝程序的外觀。下面這些設置會在所有的頁面中生效。

NSIS 編譯器內部提供的界面設置 (如 LicenseText, Icon, CheckBitmap, InstallColors) , 不應該再用在 Modern UI 代碼中,因為 Modern UI 提供了這些設置的默認或擴展的版本。

范例:

!define MUI_COMPONENTSPAGE_SMALLDESC ;No value
!define MUI_UI "myUI.exe" ;Value
!define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;Two colors

Open/Close section 界面設置

Open/Close section 常規界面設置

MUI_ICON icon_file
安裝程序的圖標.
默認: ${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico

MUI_UNICON icon_file
卸載程序的圖標.
默認: ${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico

MUI_HEADERIMAGE
一張顯示於頁眉的圖像.

MUI_HEADERIMAGE_BITMAP bmp_file
顯示於安裝程序頁眉的位圖 (推薦尺寸: 150x57 象素).
默認: ${NSISDIR}\Contrib\Graphics\Header\nsis.bmp

MUI_HEADERIMAGE_BITMAP_NOSTRETCH
不拉伸安裝程序的頁眉圖像. 只有當你要使用一張不需占用整個空白區域的圖像時, 才使用這個選項. 如果你使用了一張匹配推薦尺寸的位圖, 則不需使用這個選項, 因為如果用戶使用了自定義的 DPI 設置, 那么其置放位圖的區域尺寸會有所不同.

MUI_HEADERIMAGE_BITMAP_RTL bmp_file
當使用 RTL 語言時, 將會顯示於安裝程序的頁面頁眉的位圖. (推薦尺寸: 150x57 象素).
默認: 非 RTL 位圖

MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH
當使用 RTL 語言適應區域尺寸時, 不拉伸安裝程序的頁眉圖像. 只有當你要使用一張不需占用整個空白區域的圖像時, 才使用這個選項. 如果你使用了一張匹配推薦尺寸的位圖, 則不需使用這個選項, 因為如果用戶使用了自定義的 DPI 設置, 那么其置放位圖的區域尺寸會有所不同.

MUI_HEADERIMAGE_UNBITMAP bmp_file
顯示於卸載程序頁眉的位圖 (推薦尺寸: 150x57 象素).
默認: 安裝程序頁眉位圖

MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
不拉伸卸載程序的頁眉圖像. 只有當你要使用一張不需占用整個空白區域的圖像時, 才使用這個選項. 如果你使用了一張匹配推薦尺寸的位圖, 則不需使用這個選項, 因為如果用戶使用了自定義的 DPI 設置, 那么其置放位圖的區域尺寸會有所不同.

MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
當使用 RTL 語言時, 將會顯示於卸載程序的頁面頁眉的位圖. (推薦尺寸: 150x57 象素).
默認: 安裝程序 RTL 頁眉位圖

MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH
當使用 RTL 語言適應區域尺寸時, 不拉伸卸載程序的頁眉圖像. 只有當你要使用一張不需占用整個空白區域的圖像時, 才使用這個選項. 如果你使用了一張匹配推薦尺寸的位圖, 則不需使用這個選項, 因為如果用戶使用了自定義的 DPI 設置, 那么其置放位圖的區域尺寸會有所不同.

MUI_HEADERIMAGE_RIGHT
令本應顯示於左邊的頁眉圖像顯示於右面(當使用 RTL 語言時, 它將會顯示於左邊而不顯示於右邊).

MUI_BGCOLOR (color: RRGGBBR hexadecimal)
頁眉, 歡迎頁面和完成頁面的背景顏色.
默認: FFFFFF

MUI_HEADER_TRANSPARENT_TEXT
為頁眉的 label 控件設置一個透明的背景. 在自定義頁面設置了一幅大的頁眉圖片時有用.

Open/Close section 界面資源設置

MUI_UI ui_file
對話資源的界面文件. 如果你要定制你自己的用戶界面, 請更改這里.
默認: ${NSISDIR}\Contrib\UIs\modern.exe

MUI_UI_HEADERIMAGE ui_file
包含一個位圖控件以及置放頁眉位圖空間的對話資源 IDD_INST 的界面文件.
默認: ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe

MUI_UI_HEADERIMAGE_RIGHT ui_file
包含一個位圖控件以及在右邊置放頁眉位圖空間的對話資源 IDD_INST 的界面文件.
默認: ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe

MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
包含有一個較小描述區域的自定義對話資源 IDD_SELCOM 的界面文件.
默認: ${NSISDIR}\Contrib\UIs\modern_smalldesc.exe

MUI_UI_COMPONENTSPAGE_NODESC ui_file
包含一個沒有描述區域的自定義對話資源 IDD_SELCOM 的界面文件.
默認: ${NSISDIR}\Contrib\UIs\modern_nodesc.exe

Open/Close section 歡迎/完成頁面 界面設置

MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
用於歡迎頁面和完成頁面的位圖. (推薦尺寸: 164x314 象素).
默認: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
不拉伸用於歡迎頁面和完成頁面的位圖. 只有當你要使用一張不需占用整個空白區域的圖像時, 才使用這個選項. 如果你使用了一張匹配推薦尺寸的位圖, 則不需使用這個選項, 因為如果用戶使用了自定義的 DPI 設置, 那么其置放位圖的區域尺寸會有所不同.

Open/Close section 卸載程序的歡迎/完成頁面設置

MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
用於歡迎頁面和完成頁面的位圖. (推薦尺寸: 164x314 象素).
默認: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
不拉伸用於歡迎頁面和完成頁面的位圖. 只有當你要使用一張不需占用整個空白區域的圖像時, 才使用這個選項. 如果你使用了一張匹配推薦尺寸的位圖, 則不需使用這個選項, 因為如果用戶使用了自定義的 DPI 設置, 那么其置放位圖的區域尺寸會有所不同.

Open/Close section License page

MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (color: RRGGBB hexadecimal))
許可文本框的背景顏色. /windows 用於 Windows 的文本背景顏色 (通常為白色). /grey 用於 Window 的背景顏色 (通常為灰色).
默認: /windows

Open/Close section 組件頁面 界面設置

MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
用於組件樹形視圖的構選框的位圖.
默認: ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp

MUI_COMPONENTSPAGE_SMALLDESC
較小的頁面底部的描述區域. 如果你有許多區段且不需較多的描述, 請使用這個選項.

MUI_COMPONENTSPAGE_NODESC
不需描述區域.

Open/Close section 安裝目錄選擇頁面 界面設置

MUI_DIRECTORYPAGE_BGCOLOR (color: RRGGBB hexadecimal)
目錄文本框的背景色.

Open/Close section 開始菜單文件夾頁面 界面設置

MUI_STARTMENUPAGE_BGCOLOR (color: RRGGBB hexadecimal)
開始菜單目錄列表和文本框的背景色.

Open/Close section 安裝頁面 界面設置

MUI_INSTFILESPAGE_COLORS (/windows | "(foreground color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal)")
詳細信息顯示屏的顏色. /windows 用於默認的 Windows 顏色.
默認: /windows

MUI_INSTFILESPAGE_PROGRESSBAR ("" | colored | smooth)
進度條的樣式. Colored 能令它使用 MUI_INSTALLCOLORS.
默認: smooth

Open/Close section 安裝程序完成頁面 界面設置

MUI_FINISHPAGE_NOAUTOCLOSE
不自動跳到完成頁面, 允許用戶檢查安裝記錄.

Open/Close section 卸載程序完成頁面 界面設置

MUI_UNFINISHPAGE_NOAUTOCLOSE
不自動跳到完成頁面, 允許用戶檢查卸載記錄.

Open/Close section 安裝程序終止警告 設置

MUI_ABORTWARNING
當用戶要關閉安裝程序時, 顯示一個警告消息框.

MUI_ABORTWARNING_TEXT text
顯示於終止警告消息框的文本.

MUI_ABORTWARNING_CANCEL_DEFAULT
設置"取消"按鈕為觸發該事件時的默認按鈕.

Open/Close section 卸載程序終止警告 設置

MUI_UNABORTWARNING
當用戶要關閉卸載程序時, 顯示一個警告消息框.

MUI_UNABORTWARNING_TEXT text
顯示於終止警告消息框的文本.

MUI_UNABORTWARNING_CANCEL_DEFAULT
設置"取消"按鈕為觸發該事件時的默認按鈕.

3. 頁面

插入以下宏可以設置你要使用的頁面. 這些頁面將會按你在腳本中插入的順序出現. 你也可以在這些宏之間插入自定義的頁面命令以添加自定義頁面.

你可以按特定類型添加多個頁面 (例如, 如果你想讓用戶指定多個文件夾).

范例:

!insertmacro MUI_PAGE_LICENSE "License.rtf"
!insertmacro MUI_PAGE_COMPONENTS

Var StartMenuFolder
!insertmacro MUI_PAGE_STARTMENU "應用程序" $StartMenuFolder

當你使用 "Start Menu Folder" 宏時, 你將需要 "Start Menu Folder" 頁面的頁面 ID. "Start Menu Folder" 將會被保存於指定的變量中.

安裝程序頁面
MUI_PAGE_WELCOME
MUI_PAGE_LICENSE textfile
MUI_PAGE_COMPONENTS
MUI_PAGE_DIRECTORY
MUI_PAGE_STARTMENU pageid variable
MUI_PAGE_INSTFILES
MUI_PAGE_FINISH

卸載程序頁面
MUI_UNPAGE_WELCOME
MUI_UNPAGE_CONFIRM
MUI_UNPAGE_LICENSE textfile
MUI_UNPAGE_COMPONENTS
MUI_UNPAGE_DIRECTORY
MUI_UNPAGE_INSTFILES
MUI_UNPAGE_FINISH

Open/Close section 頁面設置

頁面設置應用於單個頁面且應在插入一個宏之前設置. 如果你有一種類型的多個頁面, 並且你想要為它們全體作同一個設置, 那么請在每個頁面宏之前進行設置. 范例:

;添加一個讓用戶指定插件文件夾的目錄頁面
;將此文件夾路徑存於 $PLUGINS_FOLDER

Var PLUGINS_FOLDER
!define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
!insertmacro MUI_PAGE_DIRECTORY

 

用戶界面中所有的標准文字都是由語言文件中載入的, 它們對 NSIS 所支持的所有語言中都有效。因此如果需要進行更改,你僅需要重新定義它們就可以了。

如果某參數是文字的,並且在各語言中並不一樣,用 LangString 定義 "語言字符串",並用 $(LangStringName) 作為它的值. 至於在多語言中的許可文本,則用 LicenseLangString 。查閱 NSIS 用戶手冊可得到有關多語言安裝程序的更詳細的內容。

在所有的文本設置中,雙引號 (") 應該做這樣的處理避免錯誤: $\"

Open/Close section 常規頁面設置

MUI_PAGE_HEADER_TEXT text
顯示於頁面頁眉的文本.

MUI_PAGE_HEADER_SUBTEXT text
顯示於頁面頁眉的旁白.

Open/Close section 歡迎頁面設置

MUI_WELCOMEPAGE_TITLE title
顯示於頁面頂部的標題.

MUI_WELCOMEPAGE_TITLE_3LINES
標題區域的額外空區.

MUI_WELCOMEPAGE_TEXT text
顯示於頁面的文本. 用 \r\n 換行.

Open/Close section 許可頁面設置

MUI_LICENSEPAGE_TEXT_TOP text
顯示於頁面頂部的文本.

MUI_LICENSEPAGE_TEXT_BOTTOM text
顯示於頁面底部的文本.

MUI_LICENSEPAGE_BUTTON button_text
顯示於 '我同意' 按鈕的文本.

MUI_LICENSEPAGE_CHECKBOX
顯示一個用於用戶選中同意許可條款的復選框.

MUI_LICENSEPAGE_CHECKBOX_TEXT text
顯示在一個用於用戶選中同意許可條款的復選框旁的文本.

MUI_LICENSEPAGE_RADIOBUTTONS
顯示兩個用於用戶是否接受許可條款的單選按鈕.

MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text
顯示在用於用戶接受許可條款的單選按鈕旁的文本.

MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text
顯示在用於用戶拒絕許可條款的單選按鈕旁的文本.

Open/Close section 組件頁面設置

MUI_COMPONENTSPAGE_TEXT_TOP text
顯示於頁面頂部的文本.

MUI_COMPONENTSPAGE_TEXT_COMPLIST text
顯示在組件列表旁的文本.

MUI_COMPONENTSPAGE_TEXT_INSTTYPE text
顯示在安裝類型組合框旁的文本.

MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE text
顯示在描述框標題上的文本.

MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO text
當沒有選擇區段時, 顯示於描述框中的文本.

Open/Close section 目錄頁面設置

MUI_DIRECTORYPAGE_TEXT_TOP text
顯示於頁面頂部的文本.

MUI_DIRECTORYPAGE_TEXT_DESTINATION text
顯示於目標文件夾框架的文本.

MUI_DIRECTORYPAGE_VARIABLE variable
用於存儲所選文件夾的變量.
默認: $INSTDIR

MUI_DIRECTORYPAGE_VERIFYONLEAVE
當一個文件夾無效時, 不禁用 "下一步" 按鈕, 但是允許你使用 GetInstDirError 函數以操作一個無效的文件夾.

Open/Close section 開始菜單文件夾頁面設置

MUI_STARTMENUPAGE_TEXT_TOP text
顯示於頁面頂部的文本.

MUI_STARTMENUPAGE_TEXT_CHECKBOX text
顯示於 "禁止創建開始菜單文件夾" 復選框旁的文本.

MUI_STARTMENUPAGE_DEFAULTFOLDER folder
默認開始菜單文件夾.

MUI_STARTMENUPAGE_NODISABLE
不顯示 "禁止創建開始菜單文件夾" 復選框.

MUI_STARTMENUPAGE_REGISTRY_ROOT root
MUI_STARTMENUPAGE_REGISTRY_KEY key
MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
此注冊表項用於存放開始菜單文件夾路徑. 此頁面將會用它記住用戶的首選項. 你也可以將其用於卸載程序移除此開始菜單文件夾. 不要在卸載時忘記移除此注冊表項.

對於卸載程序, 可以用宏 MUI_STARTMENU_GETFOLDER 獲取開始菜單文件夾路徑:

!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
  Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"

Open/Close section 安裝頁面設置

MUI_INSTFILESPAGE_FINISHHEADER_TEXT text
當安裝完成后, 顯示於此安裝頁面頁眉的文本(當使用一個未用 MUI_(UN)FINISHPAGE_NOAUTOCLOSE 的完成頁面時, 將不會顯示這些文本).

MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text
當安裝完成后, 顯示於此安裝頁面頁眉的旁白(當使用一個未用 MUI_(UN)FINISHPAGE_NOAUTOCLOSE 的完成頁面時, 將不會顯示這些文本).

MUI_INSTFILESPAGE_ABORTHEADER_TEXT text
當安裝被終止后, 顯示於此安裝頁面頁眉的文本.

MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text
當安裝被終止后, 顯示於此安裝頁面頁眉的旁白.

Open/Close section 完成頁面設置

MUI_FINISHPAGE_TITLE title
顯示於頁面頂部的標題.

MUI_FINISHPAGE_TITLE_3LINES
標題區域的額外空區.

MUI_FINISHPAGE_TEXT text
顯示於此頁面的文本. 用 \r\n 換行.

MUI_FINISHPAGE_TEXT_LARGE
文本區域的額外空區 (如果使用了復選框).

MUI_FINISHPAGE_BUTTON text
顯示於 "完成" 按鈕的文本.

MUI_FINISHPAGE_CANCEL_ENABLED
啟用 "取消" 按鈕,用戶可以點擊跳過完成頁面顯示的任何選項.

MUI_FINISHPAGE_TEXT_REBOOT text
當詢問是否重啟時, 顯示於完成頁面的文本. 用 \r\n 換行.

MUI_FINISHPAGE_TEXT_REBOOTNOW text
顯示在 "現在重啟" 選擇按鈕旁的文本.

MUI_FINISHPAGE_TEXT_REBOOTLATER text
顯示在 "以后重啟" 選擇按鈕旁的文本.

MUI_FINISHPAGE_REBOOTLATER_DEFAULT
設置 "以后重啟" 作為默認選項.

MUI_FINISHPAGE_RUN exe_file
可以通過復選框決定是否運行的應用程序. 當文件名中有空格時, 你不需用引號將其括起來.

MUI_FINISHPAGE_RUN_TEXT text
顯示在 "運行程序" 復選框旁的文本.

MUI_FINISHPAGE_RUN_PARAMETERS parameters
運行應用程序所需的參數. 不要在值中直接使用雙引號 (用 $\").

MUI_FINISHPAGE_RUN_NOTCHECKED
默認不選中 '運行程序' 復選框

MUI_FINISHPAGE_RUN_FUNCTION function
用調用一個函數替代執行一個應用程序 (定義 MUI_FINISHPAGE_RUN 而不用參數). 你可以用這個函數執行多個應用程序, 或者你可以更改此復選框的名稱並用它做其它事情.

MUI_FINISHPAGE_SHOWREADME file/url
可以通過復選框決定是否查看的文件或網站. 當文件名中有空格時, 你不需用引號將其括起來.

MUI_FINISHPAGE_SHOWREADME_TEXT text
顯示在 "顯示自述" 復選框旁的文本.

MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
默認不選中 '顯示自述' 復選框.

MUI_FINISHPAGE_SHOWREADME_FUNCTION function
用調用一個函數替代顯示一個文件 (定義 MUI_FINISHPAGE_SHOWREADME 而不用參數). 你可以用這個函數顯示多個文件, 或者你可以更改此復選框的名稱並用它做其它事情.

MUI_FINISHPAGE_LINK link_text
一個用於用戶點擊查看一個網站或文件的鏈接的文本.

MUI_FINISHPAGE_LINK_LOCATION file/url
可以通過這個鏈接查看的網站或文件的位置. 當文件名中有空格時, 你不需用引號將其括起來.

MUI_FINISHPAGE_LINK_COLOR (color: RRGGBB hexadecimal)
完成頁面上的鏈接的文本顏色.
默認: 000080

MUI_FINISHPAGE_NOREBOOTSUPPORT
禁用支持此頁面允許用戶重新啟動其系統. 如果不使用 /REBOOTOK 位標計或 SetRebootFlag, 那么定義此選項可以節省一些空間.

Open/Close section 卸載確認頁面設置

MUI_UNCONFIRMPAGE_TEXT_TOP text
顯示於頁面頂部的文本.

MUI_UNCONFIRMPAGE_TEXT_LOCATION text
顯示在卸載位置文本框旁的文本.

4. 語言文件

插入與你所要包含的語言相對應的 Modern UI 語言文件.

!insertmacro MUI_LANGUAGE "English"

Modern UI 語言文件會自動載入 NSIS 語言文件, 因此你不應使用 LoadLanguageFile.

5. 保留文件

如果你要使用固實壓縮 (在默認情況下, 啟用了 BZIP2 和 LZMA 的固實壓縮), 那么很重要的一點是, 在執行init- 或頁面函數時被提取的文件在數據塊中的定位應先於其它文件, 因為這樣會令你的安裝程序運行地更快. 如果在你的區段中有文件命令, 或是在 init- 或頁面函數之前有函數, 那么請在你的區段和函數之前添加類似如下的指令:

ReserveFile MyPlugin.dll
!insertmacro MUI_RESERVEFILE_LANGDLL ;語言選擇對話框
...

頁面相關的腳本代碼

你可以在一些頁面中顯示一些附加的信息,或者獲取用戶的輸入。你可以在此找到與此功能相關的腳本代碼。

區段描述

在 MUI 的組件選擇頁面中,當用戶將鼠標懸浮於一個區段時, 此區段的描述將會顯示於此組件頁面上. 如果你不想使用描述, 那么請使用 MUI_COMPONENTSPAGE_NODESC 界面設置.

若要為一個區段設置描述, 你必須向此區段命令添加一個附加參數, 此區段命令有一個用於應當包含此區段號碼的定義的名稱.

Section "區段名稱 1" Section1
   ...
SectionEnd

在這些區段后, 通過這些宏設置描述:

LangString DESC_Section1 ${LANG_ENGLISH} "區段描述 1."
LangString DESC_Section2 ${LANG_ENGLISH} "區段描述 2."

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
  !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

對於卸載程序, 則應使用宏 MUI_UNFUNCTION_DESCRIPTION_BEGIN 和 MUI_UNFUNCTION_DESCRIPTION_END

開始菜單文件夾

將創建快捷方式的代碼 (用 CreateShortcut 指令) 放在 MUI_STARTMENU_WRITE_BEGIN 和 MUI_STARTMENU_WRITE_END 之間:

!insertmacro MUI_STARTMENU_WRITE_BEGIN pageid
  ...創建快捷方式...
!insertmacro MUI_STARTMENU_WRITE_END

ID 應該是用戶選擇了用於創建快捷方式的文件夾的那個頁面

包含了文件夾和頁面 ID 的變量作為頁面宏的參數.

語言選擇對話框

如果你想令安裝程序顯示一個語言選擇對話框 (請先看看范例 MultiLanguage.nsi ), 只需在.onInit 函數中插入 MUI_LANGDLL_DISPLAY 宏:

Function .onInit

  !insertmacro MUI_LANGDLL_DISPLAY

FunctionEnd

你也可以在卸載程序中使用這個宏, 只需將其插入 un.onInit 函數中.

Open/Close section 注冊表儲存語言首選項設置

若要記住用戶的首選項, 你可以定義一個注冊表項 注意: 這些定義應當在插入安裝頁面宏之前進行設置.

MUI_LANGDLL_REGISTRY_ROOT root
MUI_LANGDLL_REGISTRY_KEY key
MUI_LANGDLL_REGISTRY_VALUENAME value_name
此注冊表項用於存放語言. 它記住用戶的首選項. 你也可以將其用於卸載程序顯示正確的語言. 不要在卸載時忘記移除此注冊表項

對於卸載程序, 可以通過向 un.onInit 函數中插入宏 MUI_UNGETLANGUAGE 獲取保存的語言首選項:

Function un.onInit

  !insertmacro MUI_UNGETLANGUAGE

FunctionEnd

Open/Close section 語言選擇對話框界面設置

若要定制語言選擇對話框界面, 請在插入宏 MUI_LANGDLL_DISPLAY 之前使用這些定義.

MUI_LANGDLL_WINDOWTITLE text
語言選擇對話框的標題.

MUI_LANGDLL_INFO text
顯示於語言選擇對話框的文本.

MUI_LANGDLL_ALWAYSSHOW
總是顯示語言選擇對話框, 即使一種語言已經保存在了注冊表中. 保存於注冊表中的語言將會被默認選中.

MUI_LANGDLL_ALLLANGUAGES
總是顯示所有可用語言,而不經過代碼頁過濾.

自定義頁面

如果你想向你的安裝程序中添加你自定義的頁面, 你應當在頁面宏之間添加你自己的頁面命令.

!insertmacro MUI_PAGE_WELCOME
Page custom FunctionName ;自定義頁面
!insertmacro MUI_PAGE_COMPONENTS
 
;卸載程序
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.FunctionName ;自定義頁面
!insertmacro MUI_UNPAGE_INSTFILES

在頁面函數中使用宏 MUI_HEADER_TEXT 設置頁面頁眉的文字:

LangString PAGE_TITLE ${LANG_ENGLISH} "標題"
LangString PAGE_SUBTITLE ${LANG_ENGLISH} "旁白"

Function CustomPageFunction
  !insermacro MUI_HEADER_TEXT $(PAGE_TITLE) $(PAGE_SUBTITLE)
  ...
FuctionEnd

自定義 MUI 函數

NSIS 的界面函數如 .onGUIInit 函數以及頁面函數,已經自動添加到了 MUI 中,並加入了新界面功能的代碼。如果你想向由 Modern UI 插入的函數中添加你自己的代碼 (例如 .onGUIInit 函數和頁面函數), 以及創建你自己的函數並讓 Modern UI 函數調用它們. 請用這些定義定義你的函數的名稱.

范例:

!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit

Function myGUIInit
  ...你自己的代碼...
FunctionEnd

MUI 頁面可用自定義函數進行定制.

Open/Close section 常規自定義函數

應當在插入語言宏之前設置這些定義.

MUI_CUSTOMFUNCTION_GUIINIT function
MUI_CUSTOMFUNCTION_UNGUIINIT function
MUI_CUSTOMFUNCTION_ABORT function
MUI_CUSTOMFUNCTION_UNABORT function
MUI_CUSTOMFUNCTION_MOUSEOVERSECTION function
MUI_CUSTOMFUNCTION_UNMOUSEOVERSECTION function

Open/Close section 頁面自定義函數

應當在插入一個頁面宏之前設置這些定義.

MUI_PAGE_CUSTOMFUNCTION_PRE function
MUI_PAGE_CUSTOMFUNCTION_SHOW function
MUI_PAGE_CUSTOMFUNCTION_LEAVE function

"Pre" 函數最先調用,你可以在此函數中初始化變量,或者決定是否跳過 (用 Abort 指令) 當前的頁面。然后,調用 "Show" 函數,你可以在此函數中定制界面。最后,用戶的輸入在 "Leave" 函數中生效。用戶手冊中提供了更詳細的相關信息。

在 "Show" 函數中,當前頁面中所有控件的窗口句柄 可從 MUI 中各自的變量中得到。目前這些變量名稱還沒有全部列出來,你只有通過查閱 MUI2 的源文件獲取。所有的這些變量聲明都在各自頁面的頭文件的開頭部分。

范例

基本: Basic.nsi
歡迎/完成頁面: WelcomeFinish.nsi
多種語言: MultiLanguage.nsi
頁眉圖像: HeaderBitmap.nsi
開始菜單文件夾頁面: StartMenu.nsi

參與名單

由 Joost Verburg 制作.
由 Nikos Adamamas, aka adni18 進行圖標設計.
感謝 Amir Szekely, aka KiCHiK, 由於他們的工作才令 NSIS 成為可能.

許可

zlib/libpng 許可將應用於 Modern UI.

Open/Close section 許可條款

版權所有 © 2002-2009 Joost Verburg

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; 
   you must not claim that you wrote the original software.
   If you use this software in a product, an acknowledgment in the
   product documentation would be appreciated but is not required.
2. Altered versions must be plainly marked as such,
   and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any distribution.


免責聲明!

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



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