[展开全部] [全部折叠] # 介绍 新式界面为 NSIS 安装程序提供新式向导风格的用户界面，类似于最新版 Windows 的向导。它基于 NSIS 编译器本身提供的基本用户界面，并扩展为更多界面特点和页面。 像其他一些附加页面一样，支持所有的标准 NSIS 页面 (像组件选择页面和安装文件夹页面)。欢迎页面允许你给出安装过程介绍，同时完成页面提供一种方式以便安装向导完成后让用于决定执行哪些步骤 (例如，是否要立即启动应用程序)。完成页面同样也可用作询问是否有必要重启系统。 ### 软件截图 # Modern UI 2.1 新版本让自定义页面变得更加容易，因为同样的方法可用于和改变新式界面提供的附加页面一样的标准 NSIS 页面。现在也可以用其他 NSIS 插件为新式界面添加新页面。你很快就能看到这样的例子。 欢迎和完成页面将不再使用 InstallOptions 实现，取而代之的是新的 nsDialogs 插件。nsDialogs 允许你创建自定义页面或直接从脚本创建现成页面。 升级到新式界面 1.8 版脚本，你需要： 添加头文件 MUI2.nsh 取代 MUI.nsh 用于 InstallOptions 的宏已被移至与新式界面无关的独立头文件。如果你仍在使用 InstallOptions 用于自定义页面，添加 InstallOptions.nsh，使用宏 INSTALLOPTIONS_* 代替 MUI_INSTALLOPTIONS_*。这些宏本身还是一样的。 为使用 InstallOptions INI 文件的 1.8 版新式界面欢迎和完成页面重写自定义页面代码，应使用 nsDialogs 代替。 在所有的文本中使用标准的 NSIS 方式以避免特殊字符。例如：$\r$\n 创建新行。 # 脚本头文件 新式界面设置应该插入脚本文件的头部。遵循下面这些项的顺序很重要。例如，页面设置应该在插入页面之前定义，因为页面依赖于界面设置。也可以看看示例脚本，以便了解这在实际脚本中是如何完成的。 参数指定格式：必选项 (选项1 | 选项2) [可选项] ## 1. 头文件 首先，在脚本顶部添加该行文本以包含新式界面：
    !include MUI2.nsh
## 2. 界面配置 然后，你可以使用界面设置以修改安装程序的外观。这些设置将应用到所有页面。 由 NSIS 编译器本身提供的界面设置 (如 LicenseText、Icon、CheckBitmap、InstallColors 等) 不能用于 MUI 脚本中。新式界面提供了这些设置的等同或者扩展版本。 用法示例：
    !define MUI_COMPONENTSPAGE_SMALLDESC ;空值
    !define MUI_UI "myUI.exe" ;值
    !define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;两种颜色
### 界面设置 ### 页面顶部 MUI_ICON 图标文件 安装程序图标 默认：${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico MUI_UNICON 图标文件 卸载程序图标 默认：${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico MUI_HEADERIMAGE 在页面顶部显示一张图片 MUI_HEADERIMAGE_BITMAP BMP文件 显示在安装程序页面顶部的位图图像 (推荐尺寸：150×57 像素) 默认：${NSISDIR}\Contrib\Graphics\Header\nsis.bmp MUI_HEADERIMAGE_BITMAP_STRETCH mode FitControl (默认) 拉伸图像以适合图像控件。 NoStretchNoCropNoAlign 不要拉伸安装程序页面顶部图片以适合区域尺寸。仅当你使用不占用整个空间的图片时使用该选项。如果你使用合适的完整尺寸位图，你不应使用该选项，因为如果用户使用了自定义 DPI 设置，图片区的尺寸也将不同。 NoStretchNoCrop 类似 NoStretchNoCropNoAlign ，但在使用 RTL 语言或以下情况时会将图像对齐到右边缘： AspectFitHeight 在保持图像高宽比的同时，按比例放大或缩小图像，直到其高度与图像控件相同。 MUI_HEADERIMAGE_BITMAP_RTL BMP文件 当使用 RTL 语言时，显示在安装程序页面顶部的位图图像 (推荐尺寸：150×57 像素)。 默认：非 RTL 语言位图 MUI_HEADERIMAGE_BITMAP_RTL_STRETCH mode 有关可用拉伸模式的列表，请参见 MUI_HEADERIMAGE_BITMAP_STRETCH。 MUI_HEADERIMAGE_UNBITMAP BMP文件 显示在卸载程序页面顶部的位图图像 (推荐尺寸：150×57 像素) 默认：安装程序顶部图片 MUI_HEADERIMAGE_UNBITMAP_STRETCH mode 有关可用拉伸模式的列表，请参见 MUI_HEADERIMAGE_BITMAP_STRETCH 。 MUI_HEADERIMAGE_UNBITMAP_RTL BMP文件 当使用 RTL 语言时，显示在卸载程序页面顶部的位图图像 (推荐尺寸：150×57 像素)。 默认：RTL 语言安装程序顶部图片 MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH mode 有关可用拉伸模式的列表，请参见 MUI_HEADERIMAGE_BITMAP_STRETCH。 MUI_HEADERIMAGE_RIGHT 在左边显示顶部图片而非右边 (当使用 RTL 语言时，将取代左边而在右边显示图片)。 MUI_BGCOLOR (16进制颜色：RRGGBB) 用于顶部、欢迎页面以及完成页面的背景色。 默认：FFFFFF MUI_HEADER_TRANSPARENT_TEXT 设置顶部文字控件背景色为透明。当用于设置大尺寸顶部图片的自定义页面时很有用。 MUI_TEXTCOLOR (16进制颜色：RRGGBB) 标题，欢迎页面和完成页面的文本颜色。 默认：000000 ### 界面资源 MUI_UI UI文件 带有对话框资源的界面文件。如果你制作自定义 UI 文件，可修改该值。br /> 默认： ${NSISDIR}\Contrib\UIs\modern.exe MUI_UI_HEADERIMAGE UI文件 包含一个位图控件和为顶部图片预留的空间，带有 IDD_INST 对话框资源的界面文件。 默认： ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe MUI_UI_HEADERIMAGE_RIGHT UI文件 包含一个位图控件和在右边右面为顶部图片预留的空间，带有 IDD_INST 对话框资源的界面文件。 默认： ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe MUI_UI_COMPONENTSPAGE_SMALLDESC UI文件 带有较小描述区域的带 IDD_SELCOM 自定义对话框资源的界面文件 默认： ${NSISDIR}\Contrib\UIs\modern_smalldesc.exe MUI_UI_COMPONENTSPAGE_NODESC UI文件 不带描述区域的带 IDD_SELCOM 自定义对话框资源的界面文件 默认： ${NSISDIR}\Contrib\UIs\modern_nodesc.exe ### 安装程序欢迎/完成页面 MUI_WELCOMEFINISHPAGE_BITMAP BMP文件 用于欢迎页面和完成页面的位图图片 (推荐尺寸：164×314 像素) 默认： ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp MUI_WELCOMEFINISHPAGE_BITMAP_STRETCH mode 有关可用拉伸模式的列表，请参见 MUI_HEADERIMAGE_BITMAP_STRETCH。 ### 卸载程序欢迎/完成页面 MUI_UNWELCOMEFINISHPAGE_BITMAP BMP文件 用于欢迎页面和完成页面的位图图片 (推荐尺寸：164×314 像素) 默认： ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp MUI_UNWELCOMEFINISHPAGE_BITMAP_STRETCH mode 有关可用拉伸模式的列表，请参见 MUI_HEADERIMAGE_BITMAP_STRETCH。 ### 许可协议页面 MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (16进制颜色：RRGGBB)) 用于许可协议文本的背景色。使用 /windows 设置为 Windows 文本背景色 (通常为白色)。使用 /grey 设置为窗口背景色 (通常为灰色)。 默认： /windows ### 组件页面 MUI_COMPONENTSPAGE_CHECKBITMAP BMP文件 包含组件选择树状视图复选框图片的位图 默认： ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp MUI_COMPONENTSPAGE_SMALLDESC 较小的位于页面底部的文本描述区域。如果你有很多区段并且不需要太多描述，使用该布局。 MUI_COMPONENTSPAGE_NODESC 没有文本描述区域 ### 文件夹页面 MUI_DIRECTORYPAGE_BGCOLOR (16进制颜色：RRGGBB) 用于文件夹文本框的背景色 ### 开始菜单页面 MUI_STARTMENUPAGE_BGCOLOR (16进制颜色：RRGGBB) 用于开始菜单文件夹列表和文本框的背景色 ### 安装过程页面 MUI_INSTFILESPAGE_COLORS (/windows | "(foreground 16进制颜色：RRGGBB) (background 16进制颜色：RRGGBB)") 安装详情文字颜色。使用 /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 文本 显示在终止警告消息对话框上的文本 MUI_UNABORTWARNING_CANCEL_DEFAULT 设置对话框上的“取消”按钮为默认按钮 ## 3. 页面 插入下面的宏用以设置你要想使用的页面。页面将会按照你在插入这些宏的顺序显示。你也可以在两个宏之间插入自定义页面命令来增加自定义页面。 你可以添加多个某些类型的页面 (例如，如果你希望用户指定多个文件夹)。 示例：
    !insertmacro MUI_PAGE_LICENSE "License.rtf"
    !insertmacro MUI_PAGE_COMPONENTS

    Var StartMenuFolder
    !insertmacro MUI_PAGE_STARTMENU "Application" $StartMenuFolder
当使用开始菜单宏时你需要用于开始菜单文件夹的页面 ID。文件夹将被储存到指定的变量中。 安装程序页面 MUI_PAGE_WELCOME MUI_PAGE_LICENSE 文本文件 MUI_PAGE_COMPONENTS MUI_PAGE_DIRECTORY MUI_PAGE_STARTMENU 页面ID变量 MUI_PAGE_INSTFILES MUI_PAGE_FINISH 卸载程序页面 MUI_UNPAGE_WELCOME MUI_UNPAGE_CONFIRM MUI_UNPAGE_LICENSE 文本文件 MUI_UNPAGE_COMPONENTS MUI_UNPAGE_DIRECTORY MUI_UNPAGE_INSTFILES MUI_UNPAGE_FINISH ### 页面设置 页面设置应用于单独的页面，并且必须在插入页面宏之前设置。同样的设置可以同时用与安装程序和卸载程序。如果你想将其应用于多个页面，你必须重复使用这些设置。示例：
    ;添加一个文件夹页面，以便用户指定一个插件文件夹。文件夹储存到 $PluginsFolder 中。

    Var PLUGINS_FOLDER
    !define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
    !insertmacro MUI_PAGE_DIRECTORY
用户界面的所有标准文本将从语言文件中加载，对所有 NSIS 支持的语言都有效。所以如果你想修改默认文字，只需定义这些 (想修改的) 文字。 如果参数是为不同语言显示不同内容的文本，使用 LangString 定义语言字符串，并使用 $(LangStringName) 作为该值。要使用多语言协议文本，可使用 LicenseLangString。参考 NSIS 用户手册查看更多关于多国语言安装程序的信息。 在所有文字设置中，应避免使用双引号 (")，而使用这种格式：$\"。 ### 常规页面设置 MUI_PAGE_HEADER_TEXT 文本 显示在页面顶部的文字说明 MUI_PAGE_HEADER_SUBTEXT 文本 显示在页面顶部的子文字说明 ### 欢迎页面设置 MUI_WELCOMEPAGE_TITLE 标题 显示在页面顶部的标题 MUI_WELCOMEPAGE_TITLE_3LINES 为标题区域预留额外空间 MUI_WELCOMEPAGE_TEXT 文本 显示在页面上的文字 ### 协议页面设置 MUI_LICENSEPAGE_TEXT_TOP 文本 显示在页面顶部的文字 MUI_LICENSEPAGE_TEXT_BOTTOM 文本 显示在页面底部的文字 MUI_LICENSEPAGE_BUTTON 按钮文本 显示在“我同意”按钮上的文本 MUI_LICENSEPAGE_CHECKBOX 显示一个用户必须选中以同意许可协议的复选框 MUI_LICENSEPAGE_CHECKBOX_TEXT 文本 显示在同意许可协议复选框旁的文字 MUI_LICENSEPAGE_RADIOBUTTONS 显示两个单选按钮，允许用户选择同意或者不同意许可协议 MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT 文本 显示在同意许可协议单选框旁的文字 MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE 文本 显示在拒绝许可协议单选框旁的文字 ### 组件页面设置 MUI_COMPONENTSPAGE_TEXT_TOP 文本 显示在页面顶部的文字 MUI_COMPONENTSPAGE_TEXT_COMPLIST 文本 显示在组件列表旁的文本 MUI_COMPONENTSPAGE_TEXT_INSTTYPE 文本 显示在安装类型组合框旁的文本 MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE 文本 显示在描述框顶部的文本 MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO 文本 当没有组件选中时显示在描述框内的文本 ### 文件夹页面设置 MUI_DIRECTORYPAGE_TEXT_TOP 文本 显示在页面顶部的文字 MUI_DIRECTORYPAGE_TEXT_DESTINATION 文本 显示在目标文件夹组框的文字 MUI_DIRECTORYPAGE_VARIABLE 变量 用于储存已选择文件夹的变量 默认： $INSTDIR MUI_DIRECTORYPAGE_VERIFYONLEAVE 当文件夹无效时不要禁用下一步按钮，但允许你在离开函数中使用 GetInstDirError 以处理无效的文件夹。 ### 开始菜单页面设置 MUI_STARTMENUPAGE_TEXT_TOP 文本 显示在页面顶部的文字 MUI_STARTMENUPAGE_TEXT_CHECKBOX 文本 显示在禁止创建开始菜单文件夹复选框旁的文字 MUI_STARTMENUPAGE_DEFAULTFOLDER 文件夹 默认的开始菜单文件夹 MUI_STARTMENUPAGE_NODISABLE 不要显示禁止创建开始菜单快捷方式的复选框 MUI_STARTMENUPAGE_REGISTRY_ROOT 根键 MUI_STARTMENUPAGE_REGISTRY_KEY 子键 MUI_STARTMENUPAGE_REGISTRY_VALUENAME 值名称 用于储存开始菜单文件夹的注册表键。页面将使用它来记忆用户设置。同样，你应该将其用于卸载程序以删除开始菜单文件夹。不要忘记在卸载过程中删除这个键。 在卸载程序中，使用宏 MUI_STARTMENU_GETFOLDER 来获取开始菜单文件夹：
    !insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
      Delete "$SMPROGRAMS\$R0\你的快捷方式.lnk"
### 安装页面设置 MUI_INSTFILESPAGE_FINISHHEADER_TEXT 文本 安装程序完成后显示在安装页面顶部的文本 (使用完成页面但无 MUI_(UN)FINISHPAGE_NOAUTOCLOSE 时不显示) MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT 文本 安装程序完成后显示在安装页面顶部的子文本 (使用完成页面但无 MUI_(UN)FINISHPAGE_NOAUTOCLOSE 时不显示) MUI_INSTFILESPAGE_ABORTHEADER_TEXT 文本 安装程序终止时显示在安装页面顶部的文本 MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT 文本 安装程序终止时显示在安装页面顶部的子文本 ### 完成页面设置 MUI_FINISHPAGE_TITLE 标题 显示在页面顶部的标题 MUI_FINISHPAGE_TITLE_3LINES 为标题区域预留空间 MUI_FINISHPAGE_TEXT 文本 显示在页面的文本 MUI_FINISHPAGE_TEXT_LARGE 为文本区域预留空间 (如果使用了复选框) MUI_FINISHPAGE_BUTTON 文本 显示在“完成”按钮上的文本 MUI_FINISHPAGE_CANCEL_ENABLED 启用“取消”按钮以便用户跳过完成页面的选项 MUI_FINISHPAGE_TEXT_REBOOT 文本 当询问系统重启时显示在完成页面的的文本 MUI_FINISHPAGE_TEXT_REBOOTNOW 文本 显示在“现在重启”选项旁的文本 MUI_FINISHPAGE_TEXT_REBOOTLATER 文本 显示在“稍后重启”选项旁的文本 MUI_FINISHPAGE_REBOOTLATER_DEFAULT 设置“稍后重启”项为默认选项 MUI_FINISHPAGE_RUN 可执行文件 用户使用复选框可选择运行的程序。如果文件名包含空格，无需为其加上引号。 MUI_FINISHPAGE_RUN_TEXT 文本 显示在“运行程序”复选框旁的文本 MUI_FINISHPAGE_RUN_PARAMETERS 参数 要运行程序的参数。不要忘了以致漏掉双引号 (使用 $\")。 MUI_FINISHPAGE_RUN_NOTCHECKED 默认不选择“运行程序”复选框 MUI_FINISHPAGE_RUN_FUNCTION 函数 调用函数代替运行程序 (定义 MUI_FINISHPAGE_RUN 且不带参数)。你可以使用函数来执行多个程序，还可以修改复选框的名称，将其另作他用。. MUI_FINISHPAGE_SHOWREADME 文件/URL 用户使用复选框可选择浏览的文件或网站。如果文件名包含空格，无需为其加上引号。 MUI_FINISHPAGE_SHOWREADME_TEXT 文本 显示在“查看自述”复选框旁的文本 MUI_FINISHPAGE_SHOWREADME_NOTCHECKED 默认不选择“查看自述”复选框 MUI_FINISHPAGE_SHOWREADME_FUNCTION 函数 调用函数代替查看文件 (定义 MUI_FINISHPAGE_SHOWREADME 且不带参数)。你可以使用函数来显示多个文件，还可以修改复选框的名称，将其另作他用。 MUI_FINISHPAGE_LINK 链接文字 用户可点击用来浏览网站或文件的链接文字 MUI_FINISHPAGE_LINK_LOCATION 文件/URL 用户使用链接可选择浏览的文件或网站。如果文件名包含空格，无需为其加上引号。 MUI_FINISHPAGE_LINK_COLOR (16进制颜色：RRGGBB) 完成页面链接文字颜色 默认： 000080 MUI_FINISHPAGE_NOREBOOTSUPPORT 禁用允许用户重启系统的页面支持。如果你没有使用 /REBOOTOK 标记或 SetRebootFlag 命令，定义这个选项可腾出一些空间。 ### 确认卸载页面设置 MUI_UNCONFIRMPAGE_TEXT_TOP 文本 显示在页面顶部的文字 MUI_UNCONFIRMPAGE_TEXT_LOCATION 文本 显示在“卸载位置”文本框旁的文字 MUI_UNCONFIRMPAGE_VARIABLE 变量 用于存储卸载源文件夹的变量。 默认： $INSTDIR ## 4. 语言文件 为多国语言加入新式界面包含的语言文件。
    !insertmacro MUI_LANGUAGE "SimpChinese"
标准 NSIS 语言文件将自动加载，不需要使用 LoadLanguageFile 命令。 ## 5. 预留文件 如果你使用了固实压缩，进行安装之前使用的文件必须储存在数据块的开始，因为这将让你的安装程序启动的更快。在你的区段和函数之前，为这些文件使用预留文件命令。
    ReserveFile /plugin MyPlugin.dll
    !insertmacro MUI_RESERVEFILE_LANGDLL ;语言选择对话框
    ...
# 用于页面的脚本 某些页面允许你显示额外的信息或可以用于获取用户信息。在这里你可以找到脚本，以便使用这些特性。 ## 组件页面描述 Modern UI 组件页面有一个文本框，当用户鼠标经过一个组件的时候显示描述。 如果你不想使用这些描述，插入 MUI_COMPONENTSPAGE_NODESC 页面设置。 要为组件设置描述，必须为带有唯一标示符名称的 Section 命令添加一个额外参数。这个名称稍后可用于设置这个区段的描述。
    Section "区段名称一" Section1
       ...
    SectionEnd
在区段之后，使用这些宏来设置描述文字：
    LangString DESC_Section1 ${LANG_ENGLISH} "区段一的描述"
    LangString DESC_Section2 ${LANG_ENGLISH} "区段二的描述"

    !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 and MUI_UNFUNCTION_DESCRIPTION_END。 ## 开始菜单文件夹 在宏 MUI_STARTMENU_WRITE_BEGIN 和 MUI_STARTMENU_WRITE_END 之间放置写入快捷方式的代码 (使用 CreateShortcut 命令)：
    !insertmacro MUI_STARTMENU_WRITE_BEGIN 页面ID
      ...创建快捷方式...
    !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 根键 MUI_LANGDLL_REGISTRY_KEY 子键 MUI_LANGDLL_REGISTRY_VALUENAME 值名称 注册表键值用来保存语言。用户的设置将被记忆。你同样可以用于卸载程序以便显示正确的语言。不要忘记在卸载程序中删除这个键值。 卸载程序中，在函数 un.onInit 中插入宏来获取已保存的语言设置：
    Function un.onInit

      !insertmacro MUI_UNGETLANGUAGE

    FunctionEnd
### 选择对话框界面设置 要自定义语言选择对话框界面，在插入宏 MUI_LANGDLL_DISPLAY 之前使用这些“定义”(define)。 MUI_LANGDLL_WINDOWTITLE 文本 语言选择对话框窗口标题 MUI_LANGDLL_INFO 文本 显示在语言选择对话框上的文本 MUI_LANGDLL_ALWAYSSHOW 始终显示语言选择对话框，即使语言已经被储存在注册表。默认选中储存在注册表的语言。 MUI_LANGDLL_ALLLANGUAGES 始终显示所有可用语言，而不根据用户内码进行筛选。 # 自定义页面 如果你想给你的安装程序增加自定义页面，你可以在两个页面宏之间插入自己的页面命令。
    !insertmacro MUI_PAGE_WELCOME
    Page custom FunctionName ;自定义页面
    !insertmacro MUI_PAGE_COMPONENTS

    ;Uninstaller
    !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)
      ...
    FuctionEnd
# 自定义函数 由 NSIS 提供的界面函数，比如 .onGUIInit 和页面函数已自动包含在 Modern UI 中，并且写入代码以支持新的界面特性。如果你想给这些函数增加额外的代码，在脚本中创建一个自定义脚本的函数使 Modern UI 调用它们。 示例：
    !define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit

    Function myGUIInit
      ...
    FunctionEnd
新式界面页面也可使用自定义函数来个性化 ### 常规自定义函数 应该在插入语言宏之前设置这些定义。 MUI_CUSTOMFUNCTION_GUIINIT 函数 MUI_CUSTOMFUNCTION_UNGUIINIT 函数 MUI_CUSTOMFUNCTION_ABORT 函数 MUI_CUSTOMFUNCTION_UNABORT 函数 MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION 函数 MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION 函数 鼠标经过函数仅当使用描述宏 (MUI_FUNCTION_DESCRIPTION_BEGIN) 的时候有效。当不使用组件页面描述，通常必须使用 .onMouseOverSection 和 un.onMouseOverSection。 ### 页面自定义函数 必须在插入页面宏之前设置这些“定义”。 MUI_PAGE_CUSTOMFUNCTION_PRE 函数 MUI_PAGE_CUSTOMFUNCTION_SHOW 函数 MUI_PAGE_CUSTOMFUNCTION_LEAVE 函数 MUI_PAGE_CUSTOMFUNCTION_DESTROYED 函数 首先，PRE 函数被调用，允许你初始化变量或决定是否跳过页面。然后，SHOW 函数将被调用，可用来自定义页面。最后，在 LEAVE 函数中，可以验证用户的输入。用户手册中提供了关于这些函数的很多信息。 在 SHOW 函数中，从 Modern UI 变量中可以获取页面所有控件的窗口句柄。变量列表目前尚无法得到。现在可以参考 Modern UI 2.0 的源文件，在某些页面的头文件前几行可以找到变量声明。 在销毁外部/插件页面之后，将调用销毁的函数。 # 示例脚本 基本：Basic.nsi 欢迎/完成页面：WelcomeFinish.nsi 多国语言：MultiLanguage.nsi 顶部图片：HeaderBitmap.nsi 开始菜单文件夹页面：StartMenu.nsi # 感谢 由 Joost Verburg 编写 图标由 Nikos Adamamas，即 adni18 设计。 感谢 Amir Szekely（又名KiCHiK）的工作让 NSIS 成为可能。 # 协议 zlib/libpng 协议适用于新式界面 ### 许可协议条款
    版权所有  © 2002-2019 Joost Verburg

    本软件依照原样提供，没有任何明示或默许的保证。
    任何情况下，作者必须为任何使用本软件所造成的损害承担责任。

    任何人有权以任何目的使用本软件，包括商业应用程序、修改和自由发布，并受到以下限制：

    1、绝不可以歪曲软件来源，你不能声称原始软件是你写的。如果你的产品使用了这个软件，并在产品文档中承认，我们将不胜感激，但这不是必须的。
    2、修改版本必须像这样清楚地标明，不能被人误以为原始软件。
    3、任何发布都不可以删除或修改本条通告。