[全部展开] [全部折叠] # 介绍 Modern UI 提供的 NSIS 安装程序用户界面，与最近版本的 Windows 所使用的向导界面样式很相似。它是基于由 NSIS 编译器自身和带有更多界面功能及页面扩展所提供的基本的用户界面。 它包括 NSIS 所有的标准页面 (例如，组件选择页面、安装目录页面) 以及一些扩展页面。你可以在欢迎页面上提供一些安装相关的介绍，在完成页面上提供一些选项，允许用户选择在安装程序关闭时执行(例如，应用程序是否立即执行)。你也可以在完成页面为用户提供是否重启系统的选项。 ### 屏幕截图 # 脚本头部 Modern UI 的有关设置应该在脚本文件的开头部分插入。遵守如下的顺序是很重要的。 例如，应当在插入“页面宏” 之前设置 “界面设置”， 页面的界面设置将会应用于某一类型的所有页面。看看 范例脚本 对你在实际脚本的中应该如何处理这些，会很有帮助。 参数需要指定为这样的格式: 必须项 (选项1 | 选项2) [optional] ## 1. 头文件 首先, 在脚本的开头添加此行来引入 Modern UI:
    !include "MUI.nsh"
## 2. 界面设置 然后，你可能需要通过界面设置来更改安装程序的外观。下面这些设置会在所有的页面中生效。 NSIS 编译器内部提供的界面设置 (如 LicenseText、Icon、CheckBitmap、InstallColors)， 不应该再用在 Modern UI 代码中，因为 Modern UI 提供了这些设置的默认值或扩展的版本。 范例:
    !define MUI_COMPONENTSPAGE_SMALLDESC ;无值
    !define MUI_UI "myUI.exe" ;有值
    !define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;两种颜色 (多值)
### 界面设置 ### 常规界面设置 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 控件设置一个透明的背景。 在自定义页面设置了一幅大的页眉图片时有用。 MUI_TEXTCOLOR (color: RRGGBBR hexadecimal) 文本颜色为标题，欢迎页面和完成页面。 默认： 000000 ### 界面资源设置 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 ### 欢迎/完成页面 界面设置 MUI_WELCOMEFINISHPAGE_BITMAP bmp_file 用于欢迎页面和完成页面的位图。 (推荐尺寸： 164x314 象素)。 默认： ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH 不拉伸用于欢迎页面和完成页面的位图。只有当你要使用一张不需占用整个空白区域的图像时，才使用这个选项。如果你使用了一张匹配推荐尺寸的位图，则不需使用这个选项，因为如果用户使用了自定义的 DPI 设置，那么其置放位图的区域尺寸会有所不同。 MUI_WELCOMEFINISHPAGE_INI ini_file 用于欢迎页面和完成页面的 InstallOptions INI 文件。 默认： ${NSISDIR}\Contrib\Modern UI\ioSpecial.ini ### 卸载程序的欢迎/完成页面设置 MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file 用于卸载程序的欢迎页面和完成页面的位图(推荐尺寸: 164x314 象素)。 默认： ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH 不拉伸用于欢迎页面和完成页面的位图。只有当你要使用一张不需占用整个空白区域的图像时，才使用这个选项。如果你使用了一张匹配推荐尺寸的位图，则不需使用这个选项，因为如果用户使用了自定义的 DPI 设置，那么其置放位图的区域尺寸会有所不同。 MUI_UNWELCOMEFINISHPAGE_INI ini_file 用于卸载程序的欢迎页面和完成页面的 InstallOptions INI 文件。 默认: ${NSISDIR}\Contrib\Modern UI\ioSpecial.ini ### 许可协议 界面设置 MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (color: RRGGBB hexadecimal)) 许可文本框的背景颜色。 /windows 用于 Windows 的文本背景颜色 (通常为白色)。 /grey 用于 Window 的背景颜色 (通常为灰色)。 默认：/windows ### 组件页面 界面设置 MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file 用于组件树形视图的构选框的位图。 默认： ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp MUI_COMPONENTSPAGE_SMALLDESC 较小的页面底部的描述区域。 如果你有许多区段且不需较多的描述，请使用这个选项。 MUI_COMPONENTSPAGE_NODESC 不需描述区域。 ### 安装目录选择页面 界面设置 MUI_DIRECTORYPAGE_BGCOLOR (color: RRGGBB hexadecimal) 目录文本框的背景色。 ### 开始菜单文件夹页面 界面设置 MUI_STARTMENUPAGE_BGCOLOR (color: RRGGBB hexadecimal) 开始菜单目录列表和文本框的背景色。 ### 安装页面 界面设置 MUI_INSTFILESPAGE_COLORS (/windows | "(foreground color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal)") 详细信息显示屏的颜色。 /windows 用于默认的 Windows 颜色。 默认： /windows MUI_INSTFILESPAGE_PROGRESSBAR ("" | colored | smooth) 进度条的样式。 Colored 能令它使用 MUI_INSTALLCOLORS 。 默认： smooth ### 安装程序完成页面 界面设置 MUI_FINISHPAGE_NOAUTOCLOSE 不自动跳到完成页面, 允许用户检查安装记录。 ### 卸载程序完成页面 界面设置 MUI_UNFINISHPAGE_NOAUTOCLOSE 不自动跳到完成页面, 允许用户检查卸载记录。 ### 安装程序终止警告 设置 MUI_ABORTWARNING 当用户要关闭安装程序时，显示一个警告消息框。 MUI_ABORTWARNING_TEXT text 显示于终止警告消息框的文本。 MUI_ABORTWARNING_CANCEL_DEFAULT 设置“取消”按钮为触发该事件时的默认按钮。 ### 卸载程序终止警告 设置 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 "Application" $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 ### 页面设置 页面设置应用于单个页面且应在插入一个宏之前设置。如果你有一种类型的多个页面，并且你想要为它们全体作同一个设置，那么请在每个页面宏之前进行设置。 范例：
    ;添加一个让用户指定插件文件夹的目录页面
    ;将此文件夹路径存于 $PLUGINS_FOLDER

    Var PLUGINS_FOLDER
    !define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
    !insertmacro MUI_PAGE_DIRECTORY
用户界面中所有的标准文字都是由语言文件中载入的, 它们对 NSIS 所支持的所有语言中都有效。因此如果需要进行更改，你仅需要重新定义它们就可以了。 如果某参数是文字的，并且在各语言中并不一样，用 LangString 定义 “语言字符串”，并用 $(LangStringName) 作为它的值。至于在多语言中的许可文本，则用 LicenseLangString 。查阅 NSIS 用户手册可得到有关多语言安装程序的更详细的内容。 在所有的文本设置中，双引号字符(")应该转换成以下格式: $\" 避免出错。 ### 常规页面设置 MUI_PAGE_HEADER_TEXT text 显示于页面页眉的文本。 MUI_PAGE_HEADER_SUBTEXT text 显示于页面页眉的旁白。 ### 欢迎页面设置 要在以下文本中添加新行，使用 \r\n 代替 $\r$\n 。 MUI_WELCOMEPAGE_TITLE title 显示于页面顶部的标题。 MUI_WELCOMEPAGE_TITLE_3LINES 标题区域的额外空区。 MUI_WELCOMEPAGE_TEXT text 显示于页面的文本。 ### 许可页面设置 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 显示在用于用户拒绝许可条款的单选按钮旁的文本。 ### 组件页面设置 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 当没有选择区段时，显示于描述框中的文本。 ### 目录页面设置 MUI_DIRECTORYPAGE_TEXT_TOP text 显示于页面顶部的文本。 MUI_DIRECTORYPAGE_TEXT_DESTINATION text 显示于目标文件夹框架的文本。 MUI_DIRECTORYPAGE_VARIABLE variable 用于存储所选文件夹的变量。 默认： $INSTDIR MUI_DIRECTORYPAGE_VERIFYONLEAVE 当一个文件夹无效时， 不禁用 “下一步” 按钮， 但是允许你使用 GetInstDirError 函数以操作一个无效的文件夹。 ### 开始菜单文件夹页面设置 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"
### 安装页面设置 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 当安装被终止后，显示于此安装页面页眉的副标题。 been aborted. ### 完成页面设置 要在以下文本中添加新行，使用 \r\n 代替 $\r$\n 。 MUI_FINISHPAGE_TITLE title 显示于页面顶部的标题。 MUI_FINISHPAGE_TITLE_3LINES 标题区域的额外空区。 MUI_FINISHPAGE_TEXT text 显示于此页面的文本。 MUI_FINISHPAGE_TEXT_LARGE 文本区域的额外空区 (如果使用了复选框)。 MUI_FINISHPAGE_BUTTON text 显示于 “完成” 按钮的文本。 MUI_FINISHPAGE_CANCEL_ENABLED 启用 “取消” 按钮，用户可以点击跳过完成页面显示的任何选项。 page. MUI_FINISHPAGE_TEXT_REBOOT text 当询问是否重启时，显示于完成页面的文本。 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 ， 那么定义此选项可以节省一些空间。 ### 卸载确认页面设置 MUI_UNCONFIRMPAGE_TEXT_TOP text 显示于页面顶部的文本。 MUI_UNCONFIRMPAGE_TEXT_LOCATION text 显示在卸载位置文本框旁的文本。 MUI_UNCONFIRMPAGE_VARIABLE variable 用于存储卸载源文件夹的变量。 默认：$INSTDIR ## 4. 语言文件 插入与你所要包含的语言相对应的 Modern UI 语言文件。
    !insertmacro MUI_LANGUAGE "English"
Modern UI 语言文件会自动载入 NSIS 语言文件， 因此你不应使用 LoadLanguageFile 。 ## 5. 保留文件 如果你要使用固实压缩，在实际安装前被提取的文件应该被存储在数据块的首位，因为这将让你的安装程序启动速度更快。在你的区段和函数之前包括保留文件命令的此类文件：
    ReserveFile "ioFile.ini" ;你自己的 InstallOptions INI 文件
    !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions 插件
    !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。 包含了文件夹和页面 ID 的变量作为页面宏的参数。 # 语言选择对话框 如果你想令安装程序显示一个语言选择对话框 (请先看看范例 MultiLanguage.nsi )， 只需在.onInit 函数中插入 MUI_LANGDLL_DISPLAY 宏：
    Function .onInit

      !insertmacro MUI_LANGDLL_DISPLAY

    FunctionEnd
你也可以在卸载程序中使用这个宏， 只需将其插入 un.onInit 函数中。 ### 注册表储存语言首选项设置 若要记住用户的首选项， 你可以定义一个注册表项 注意： 这些定义应当在插入安装页面宏之前进行设置。 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
### 语言选择对话框界面设置 若要定制语言选择对话框界面， 请在插入宏 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
      !insertmacro MUI_HEADER_TEXT $(PAGE_TITLE) $(PAGE_SUBTITLE)
      !insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioFile.ini"
    FuctionEnd
# 自定义 MUI 函数 NSIS 的界面函数如 .onGUIInit 函数以及页面函数，已经自动添加到了 MUI 中，并加入了新界面功能的代码。如果你想向由 Modern UI 插入的函数中添加你自己的代码 (例如 .onGUIInit 函数和页面函数)， 以及创建你自己的函数并让 Modern UI 函数调用它们。 请用这些定义定义你的函数的名称。 范例：
    !define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit

    Function myGUIInit
      ...你自己的代码...
    FunctionEnd
### 常规自定义函数 应当在插入语言宏之前设置这些定义。 MUI_CUSTOMFUNCTION_GUIINIT function MUI_CUSTOMFUNCTION_UNGUIINIT function MUI_CUSTOMFUNCTION_ABORT function MUI_CUSTOMFUNCTION_UNABORT function MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION function MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION function 仅当使用描述宏(MUI_FUNCTION_DESCRIPTION_BEGIN)时，鼠标悬浮函数才会有效。当没有使用组件页面描述时，将会使用默认的 .onMouseOverSection 和 un.onMouseOverSection 。 ### 页面自定义函数 应当在插入一个页面宏之前设置这些定义。 MUI_PAGE_CUSTOMFUNCTION_PRE function MUI_PAGE_CUSTOMFUNCTION_SHOW function MUI_PAGE_CUSTOMFUNCTION_LEAVE function 注意： 在开始页面和完成页面的 “Pre” 函数中，你可以向此页面 (ioSpecial.ini) 的 InstallOptions INI 文件中写入 在开始页面和完成页面的 “Show” 函数中， $MUI_HWND 包含了内部对话框的窗口句柄 ### 欢迎/完成页面自定义函数 这个定义应当在单个欢迎或者完成页面之前插入。 MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT function 应当在写入此页面的 InstallOptions INI 文件之前调用 “INIT”函数，这样你可以用它初始化用于此页面设置的任何变量。 # 范例 基本： 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 。 ### 许可条款
    版权所有 © 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.