Appendix A: Modern User Interface

258 阅读7分钟

脚本头
Script header

Modern UI的设置应该插入到脚本文件的头中。重要的是要遵循与以下项目相同的顺序。例如,应该在插入页面之前定义接口设置,因为页面依赖于接口配置。

参数以这种格式给出:required (option1 | option2) [optional]

头文件
Header file

首先,将这一行添加到脚本的顶部,以包含Modern UI:

!include MUI2.nsh

接口配置
Interface configuration

这些设置适用于所有页面。

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
页面/序号指令(默认)值描述/说明
页面头
Page header
1MUI_ICON icon_file${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico安装程序的图标
2MUI_UNICON icon_file${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico卸载程序的图标
3MUI_HEADERIMAGE在页眉显示图像
3.1MUI_HEADERIMAGE_BITMAP bmp_file${NSISDIR}\Contrib\Graphics\Header\nsis.bmp显示在安装程序页眉上的位图图像(建议大小150x57像素)
3.1.1MUI_HEADERIMAGE_BITMAP_STRETCH mode①FitControl (Default)
②NoStretchNoCropNoAlign
③NoStretchNoCrop
④AspectFitHeight
①拉伸图像以适应图像控件
②不要拉伸图像以适应图像控件的大小。如果您有完全匹配的大小位图,则不应使用此选项,因为如果用户有自定义DPI设置或安装程序使用CJK语言,字段的大小将不同
③这类似于NoStretchNoCropNoAlign,但是当使用RTL语言或定义MUI_HEADERIMAGE_RIGHT时,将图像对齐到右边缘
④缩放图像直到与图像控件相同的高度,同时保持图像长宽比
3.1.2MUI_HEADERIMAGE_BITMAP_RTL bmp_fileNon-RTL bitmap使用RTL语言时在安装程序页眉中显示的位图图像(推荐大小150x57像素)
3.1.2.1MUI_HEADERIMAGE_BITMAP_RTL_STRETCH mode参见MUI_HEADERIMAGE_BITMAP_STRETCH获取可用的拉伸模式列表
3.2MUI_HEADERIMAGE_UNBITMAP bmp_fileInstaller header bitmap显示在卸载页面头部的位图图像(建议大小150x57像素)
3.2.1MUI_HEADERIMAGE_UNBITMAP_STRETCH mode参见MUI_HEADERIMAGE_BITMAP_STRETCH获取可用的拉伸模式列表
3.2.2MUI_HEADERIMAGE_UNBITMAP_RTL bmp_fileInstaller RTL header bitmap使用RTL语言时在卸载程序页头显示的位图图像(推荐大小150x57像素)
3.2.2.1MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH mode参见MUI_HEADERIMAGE_BITMAP_STRETCH获取可用的拉伸模式列表
3.3MUI_HEADERIMAGE_RIGHT将标题图像显示在右侧而不是左侧(当使用RTL语言时,它将显示在左侧而不是右侧)
4MUI_BGCOLOR (color: RRGGBBR hexadecimal)FFFFFF标题、欢迎页面和完成页面的背景颜色
5MUI_HEADER_TRANSPARENT_TEXT为标题的标签控件设置一个透明的背景。用于设置更大标题图像的自定义用户界面
6MUI_TEXTCOLOR (color: RRGGBBR hexadecimal)000000标题、欢迎页和完成页的文本颜色
接口资源
Interface resources
1MUI_UI ui_file${NSISDIR}\Contrib\UIs\modern.exe带有对话框资源的接口文件。如果您已经创建了自己的自定义UI,请更改此设置
2MUI_UI_HEADERIMAGE ui_file${NSISDIR}\Contrib\UIs\modern_headerbmp.exe带有对话框资源IDD_INST的接口文件,包含位图控件和头位图空间
3MUI_UI_HEADERIMAGE_RIGHT ui_file${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe带有对话框资源IDD_INST的接口文件,其中包含位图控件和右侧头部位图的空间
4MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file${NSISDIR}\Contrib\UIs\modern_smalldesc.exe接口文件带有一个定制的对话资源IDD_SELCOM,带有一个小的描述区域
5MUI_UI_COMPONENTSPAGE_NODESC ui_file${NSISDIR}\Contrib\UIs\modern_nodesc.exe带有自定义对话框资源IDD_SELCOM的接口文件,没有描述区域
安装欢迎/结束页面
Installer welcome/finish page
1MUI_WELCOMEFINISHPAGE_BITMAP bmp_file${NSISDIR}\Contrib\Graphics\Wizard\win.bmp欢迎页面和完成页面的位图(推荐大小164x314像素)
1.1MUI_WELCOMEFINISHPAGE_BITMAP_STRETCH mode参见MUI_HEADERIMAGE_BITMAP_STRETCH获取可用的拉伸模式列表
卸载欢迎/结束页面
Uninstaller welcome/finish page
1MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file${NSISDIR}\Contrib\Graphics\Wizard\win.bmp欢迎页面和完成页面的位图(推荐大小164x314像素)
1.1MUI_UNWELCOMEFINISHPAGE_BITMAP_STRETCH mode参见MUI_HEADERIMAGE_BITMAP_STRETCH获取可用的拉伸模式列表
证书页面
License page
1MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (color: RRGGBB hexadecimal))/windows许可文本框的背景颜色。使用/windows作为windows文本背景色(通常为白色)。使用/grey作为窗口的背景色(通常是灰色)
组件页面
Components page
1MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file${NSISDIR}\Contrib\Graphics\Checks\modern.bmp带图像的位图用于检查组件选择树视图
2MUI_COMPONENTSPAGE_SMALLDESC页面底部的一个小描述区域。如果你有很多章节,不需要大的描述,可以使用这种布局
3MUI_COMPONENTSPAGE_NODESC没有描述区域
目录页面
Directory page
1MUI_DIRECTORYPAGE_BGCOLOR (color: RRGGBB hexadecimal)目录文本框的背景颜色
开始菜单文件夹页面
Start Menu folder page
1MUI_STARTMENUPAGE_BGCOLOR (color: RRGGBB hexadecimal)开始菜单目录列表和文本框的背景颜色
安装页面
Installation page
1MUI_INSTFILESPAGE_COLORS (/windows | "(foreground color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal)")/windows细节屏幕的颜色。使用/windows作为默认的windows颜色
2MUI_INSTFILESPAGE_PROGRESSBAR ("" | colored | smooth)smooth进度条的样式。使用MUI_INSTALLCOLORS着色
安装结束页面
Installer finish page
1MUI_FINISHPAGE_NOAUTOCLOSE为了允许用户检查安装日志,不要自动跳转到完成页面
卸载结束页面
Uninstaller finish page
1MUI_UNFINISHPAGE_NOAUTOCLOSE为了允许用户检查卸载日志,不要自动跳转到完成页面
中止警告
Abort warning
1MUI_ABORTWARNING当用户想要关闭安装程序时,显示带有警告的消息框
1.1MUI_ABORTWARNING_TEXT text将显示在中止警告消息框上的文本
1.2MUI_ABORTWARNING_CANCEL_DEFAULT将Cancel按钮设置为消息框上的默认按钮
卸载中止警告
Uninstaller abort warning
1MUI_UNABORTWARNING当用户想要关闭卸载程序时,显示带有警告的消息框
1.1MUI_UNABORTWARNING_TEXT text将显示在中止警告消息框上的文本
1.2MUI_UNABORTWARNING_CANCEL_DEFAULT将Cancel按钮设置为消息框上的默认按钮

页面
Pages

插入以下宏以设置要使用的页面。页面将按照您在脚本中插入它们的顺序出现。还可以在宏之间插入自定义Page命令来添加自定义页面。可以添加多个特定类型的页面(例如,如果希望用户指定多个文件夹)。

例如:

!insertmacro MUI_PAGE_LICENSE "License.rtf"
!insertmacro MUI_PAGE_COMPONENTS

Var StartMenuFolder
!insertmacro MUI_PAGE_STARTMENU "Application" $StartMenuFolder

使用开始菜单文件夹宏时,需要开始菜单文件夹页的页面ID。该文件夹将存储在指定的变量中。

Installer pages
MUI_PAGE_WELCOME
MUI_PAGE_LICENSE textfile
MUI_PAGE_COMPONENTS
MUI_PAGE_DIRECTORY
MUI_PAGE_STARTMENU pageid variable
MUI_PAGE_INSTFILES
MUI_PAGE_FINISH

Uninstaller pages
MUI_UNPAGE_WELCOME
MUI_UNPAGE_CONFIRM
MUI_UNPAGE_LICENSE textfile
MUI_UNPAGE_COMPONENTS
MUI_UNPAGE_DIRECTORY
MUI_UNPAGE_INSTFILES
MUI_UNPAGE_FINISH

页面设置应用于单个页面,应该在插入页面宏之前设置。安装程序和卸载程序页面也可以使用相同的设置。如果希望将其应用于多个页面,则必须重复该设置。例子:

;Add a directory page to let the user specify a plug-ins folder
;Store the folder in $PluginsFolder

Var PLUGINS_FOLDER
!define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
!insertmacro MUI_PAGE_DIRECTORY

用户界面中的所有标准文本都是从语言文件中加载的,NSIS支持的所有语言都可以使用。因此,只有在想要更改默认值时,才需要定义这些文本。

如果参数是一个文本,对于每种语言应该是不同的,那么使用LangString定义一个语言字符串,并使用$(LangStringName)作为值。对于多语言的许可文本,可以使用LicenseLangString。关于多语言安装程序的更多信息,请参考NSIS用户手册。

在所有文本设置中,双引号字符(")应该以以下形式转义:$\"

页面/序号指令(默认)值描述/说明
通用页面设置
General page settings
1MUI_PAGE_HEADER_TEXT text要显示在页眉上的文本
2MUI_PAGE_HEADER_SUBTEXT text将显示在页眉上的次文本
欢迎页面设置
Welcome page settings
1MUI_WELCOMEPAGE_TITLE title显示在页面顶部的标题
2MUI_WELCOMEPAGE_TITLE_3LINES标题区域的额外空间
3MUI_WELCOMEPAGE_TEXT text要显示在页面上的文本
证书页面设置
License page settings
1MUI_LICENSEPAGE_TEXT_TOP text要显示在页面顶部的文本
2MUI_LICENSEPAGE_TEXT_BOTTOM text要显示在页面底部的文本
3MUI_LICENSEPAGE_BUTTON button_text在“I Agree”按钮上显示的文本
4MUI_LICENSEPAGE_CHECKBOX显示用户必须检查以同意许可条款的复选框
4.1MUI_LICENSEPAGE_CHECKBOX_TEXT text在复选框旁边显示的表示同意许可条款的文本
5MUI_LICENSEPAGE_RADIOBUTTONS显示两个单选按钮,允许用户选择是否接受许可条款
5.1MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text显示在接受许可条款的复选框旁边的文本
5.2MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text用于拒绝许可条款的复选框旁边显示的文本
组件页面设置
Components page settings
1MUI_COMPONENTSPAGE_TEXT_TOP text要显示在页面顶部的文本
2MUI_COMPONENTSPAGE_TEXT_COMPLIST text要在组件列表旁边显示的文本
3MUI_COMPONENTSPAGE_TEXT_INSTTYPE text要在安装类型组合框旁边显示的文本
4MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE text将显示在描述框顶部的文本
5MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO text当未选中任何部分时,在描述框中显示的文本
安装目录页面设置
Directory page settings
1MUI_DIRECTORYPAGE_TEXT_TOP text要显示在页面顶部的文本
2MUI_DIRECTORYPAGE_TEXT_DESTINATION text要在目标文件夹框架上显示的文本
3MUI_DIRECTORYPAGE_VARIABLE variable$INSTDIR要在其中存储所选文件夹的变量
4MUI_DIRECTORYPAGE_VERIFYONLEAVE当文件夹无效时不禁用Next按钮,但允许你在leave function中使用GetInstDirError来处理无效文件夹
开始菜单文件页面设置
Start Menu folder page settings
1MUI_STARTMENUPAGE_TEXT_TOP text要显示在页面顶部的文本
2MUI_STARTMENUPAGE_TEXT_CHECKBOXtext将显示在复选框旁边的文本,以禁用“开始菜单”文件夹的创建
3MUI_STARTMENUPAGE_DEFAULTFOLDER folder默认的开始菜单文件夹
4MUI_STARTMENUPAGE_NODISABLE不要显示复选框来禁用开始菜单快捷方式的创建
5MUI_STARTMENUPAGE_REGISTRY_ROOT root
MUI_STARTMENUPAGE_REGISTRY_KEY key
MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
存储“开始菜单”文件夹的注册表项。页面将使用它来记住用户的首选项。您还应该使用卸载程序来删除开始菜单文件夹。在卸载过程中不要忘记删除此密钥
对于卸载程序,使用MUI_STARTMENU_GETFOLDER宏来获取开始菜单文件夹
安装页面设置
Installation page settings
1MUI_INSTFILESPAGE_FINISHHEADER_TEXT text当安装完成时,将显示在安装页头的文本(当使用没有MUI_(UN)FINISHPAGE_NOAUTOCLOSE的Finish页时将不会显示)
2MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text当安装已经完成时,将显示在安装页头的次文本(当使用没有MUI_(UN)FINISHPAGE_NOAUTOCLOSE的Finish页时将不会显示)
3MUI_INSTFILESPAGE_ABORTHEADER_TEXT text当安装被中止时,将显示在安装页眉上的文本
4MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text在安装被中止时,显示在安装页眉上
完成页面设置
Finish page settings
1MUI_FINISHPAGE_TITLE title显示在页面顶部的标题
2MUI_FINISHPAGE_TITLE_3LINES标题区域的额外空间
3MUI_FINISHPAGE_TEXT text要显示在页面上的文本
4MUI_FINISHPAGE_TEXT_LARGE文本区域的额外空间(如果使用复选框)
5MUI_FINISHPAGE_BUTTON text要显示在“Finish”按钮上的文本
6MUI_FINISHPAGE_CANCEL_ENABLED启用Cancel按钮,这样用户就可以跳过完成页面上显示的任何选项
7MUI_FINISHPAGE_TEXT_REBOOT text在请求系统重新启动时显示在完成页面上的文本
8MUI_FINISHPAGE_TEXT_REBOOTNOW text“Reboot now”选项按钮旁边显示的文本
9MUI_FINISHPAGE_TEXT_REBOOTLATER text在“Reboot later”选项按钮旁边显示的文本
10MUI_FINISHPAGE_REBOOTLATER_DEFAULT将“Reboot later”选项设置为默认选项
11MUI_FINISHPAGE_RUN exe_file用户可以使用复选框选择要运行的应用程序。当文件名包含空格时,不需要在文件名周围加上引号
11.1MUI_FINISHPAGE_RUN_TEXT text要显示在“Run program”复选框旁边的文本
11.2MUI_FINISHPAGE_RUN_PARAMETERS parameters用于运行应用程序的参数。不要忘记在值中使用双引号(使用$\"
11.3MUI_FINISHPAGE_RUN_NOTCHECKED默认不勾选“Run program”复选框
11.4MUI_FINISHPAGE_RUN_FUNCTION function调用一个函数而不是执行一个应用程序(定义不带参数的MUI_FINISHPAGE_RUN)。您可以使用该函数执行多个应用程序,也可以更改复选框名称并将其用于其他用途
12MUI_FINISHPAGE_SHOWREADME file/url用户可以使用复选框选择查看的文件或网站。当文件名包含空格时,不需要在文件名周围加上引号
12.1MUI_FINISHPAGE_SHOWREADME_TEXT text显示在“Show Readme”复选框旁边的文本
12.2MUI_FINISHPAGE_SHOWREADME_NOTCHECKED默认情况下不勾选“Show Readme”复选框
12.3MUI_FINISHPAGE_SHOWREADME_FUNCTION function调用一个函数而不是显示一个文件(定义MUI_FINISHPAGE_SHOWREADME,不带参数)。您可以使用该函数来显示多个文件,或者您可以更改复选框名称并将其用于其他事情
13MUI_FINISHPAGE_LINK link_text链接的文本,用户可以单击该链接查看网站或文件
13.1MUI_FINISHPAGE_LINK_LOCATION file/url用户可以使用链接选择查看的网站或文件。当文件名包含空格时,不需要在文件名周围加上引号
13.2MUI_FINISHPAGE_LINK_COLOR (color: RRGGBB hexadecimal)000080完成页面上链接的文本颜色
14MUI_FINISHPAGE_NOREBOOTSUPPORT禁用对允许用户重新启动系统的页面的支持。如果你没有使用/REBOOTOK标志或SetRebootFlag,定义这个选项来节省一些空间
卸载确认页面设置
Uninstall confirm page settings
1MUI_UNCONFIRMPAGE_TEXT_TOP text要显示在页面顶部的文本
2MUI_UNCONFIRMPAGE_TEXT_LOCATION text将显示在卸载位置文本框旁边的文本
3MUI_UNCONFIRMPAGE_VARIABLE variable$INSTDIR变量,在其中存储卸载源文件夹

语言文件
Language files

插入要包含的语言的Modern UI语言文件

!insertmacro MUI_LANGUAGE "English"

标准NSIS语言文件是自动加载的,不需要使用LoadLanguageFile

保留文件
Reserve files

如果使用固体压缩,那么在实际安装之前需要的文件应该首先存储在数据块中,因为这将使安装程序启动得更快。在你的节和函数之前包含这些文件的保留文件命令:

ReserveFile /plugin MyPlugin.dll
!insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog
...

页面脚本
Script code for pages

有些页面允许显示附加信息或用于获取用户输入。在这里您可以找到使用这些特性的脚本代码。

组件的页面描述
Components page descriptions

Modern UI组件页面有一个文本框,当用户将鼠标悬停在组件上时,可以在其中显示描述。如果您不想使用这些描述,请插入MUI_COMPONENTSPAGE_NODESC接口设置。

要设置一个条款的描述,需要向Section命令中添加一个附加参数,该参数具有该条款的唯一标识符。此名称稍后可用于设置本条款的描述。

Section "Section Name 1" Section1
   ...
SectionEnd

在各条款之后,使用这些宏来设置描述:

LangString DESC_Section1 ${LANG_ENGLISH} "Description of section 1."
LangString DESC_Section2 ${LANG_ENGLISH} "Description of section 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_BEGINMUI_UNFUNCTION_DESCRIPTION_END宏。

开始菜单文件夹
Start Menu folder

将代码写入MUI_STARTMENU_WRITE_BEGINMUI_STARTMENU_WRITE_END宏之间的快捷方式(使用CreateShortcut):

!insertmacro MUI_STARTMENU_WRITE_BEGIN pageid
  ...create shortcuts...
!insertmacro MUI_STARTMENU_WRITE_END

页面ID应该是用户为要编写快捷方式选择的文件夹所在页面的ID。

包含文件夹和页面ID的变量被设置为页面宏的参数。

语言选择对话框
Language selection dialog

如果您希望安装程序显示语言选择对话框(请参阅MultiLanguage.nsi例子),在.onInit函数中插入MUI_LANGDLL_DISPLAY宏:

Function .onInit
	!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

这个宏也可以在un.onInit函数中使用。

选定语言的注册表存储设置
Settings for registry storage of selected language

要记住用户的首选项,可以定义一个注册表项。这些定义应该在插入安装页宏之前设置。

页面/序号指令描述/说明
1MUI_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

选择对话框的界面设置
Interface settings for selection dialog

要定制语言选择对话框界面,请在插入MUI_LANGDLL_DISPLAY宏之前使用这些定义。

页面/序号指令描述/说明
1MUI_LANGDLL_WINDOWTITLE text语言选择对话框的窗口标题
2MUI_LANGDLL_INFO text要在语言选择对话框中显示的文本
3MUI_LANGDLL_ALWAYSSHOW始终显示语言选择对话框,即使在注册表中存储了一种语言。默认情况下将选择存储在注册表中的语言
4MUI_LANGDLL_ALLLANGUAGES总是显示所有可用的语言,而不是根据它们的代码页进行过滤

自定义页面
Custom pages

如果想要将自定义页面添加到安装程序中,可以在页面宏之间插入自己的页面命令。

!insertmacro MUI_PAGE_WELCOME
Page custom FunctionName ;Custom page
!insertmacro MUI_PAGE_COMPONENTS
 
;Uninstaller
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.FunctionName ;Custom page
!insertmacro MUI_UNPAGE_INSTFILES

使用MUI_HEADER_TEXT宏在页面函数中设置页眉的文本:

LangString PAGE_TITLE ${LANG_ENGLISH} "Title"
LangString PAGE_SUBTITLE ${LANG_ENGLISH} "Subtitle"

Function CustomPageFunction
	!insertmacro MUI_HEADER_TEXT $(PAGE_TITLE) $(PAGE_SUBTITLE)
	nsDialogs::...
	...
FunctionEnd

自定义功能
Custom functions

NSIS提供的接口函数,如.onGUIInit函数和页面函数被现代UI自动包含,并填充了代码来支持新的接口特性。如果您想要向这些函数添加额外的代码,那么使用脚本中的自定义脚本代码创建一个函数,使用Modern UI函数调用它们。

define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit

Function myGUIInit
  ...
FunctionEnd

一般定制函数
General Custom Functions

应该在插入语言宏之前设置这些宏。

页面/序号指令描述/说明
1MUI_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)时可用。当组件页面描述不被使用时,必须使用使用常规的.onMouseOverSectionun.onMouseOverSection

页面定制功能
Page Custom Functions

应该在插入语言宏之前设置这些宏。

页面/序号指令描述/说明
1MUI_PAGE_CUSTOMFUNCTION_PRE function
MUI_PAGE_CUSTOMFUNCTION_SHOW function
MUI_PAGE_CUSTOMFUNCTION_LEAVEfunction
MUI_PAGE_CUSTOMFUNCTION_DESTROYED function
首先调用pre function,它允许您初始化变量或决定是否应该跳过该页面。然后,调用show function,该函数可用于定制接口。最后,可以在leave function中验证用户输入。NSIS用户手册提供了关于这些功能的更多信息
在show function中,页面上所有控件的窗口句柄都可以从Modern UI变量中检索。变量名的列表还没有可用。现在,请参考Modern UI 2的源文件。变量声明可以在某一页的头文件的第一行中找到
在销毁外部/插件页面之后调用destroyed function

证书
License

zlib/libpng许可证适用于Modern UI。

Copyright © 2002-2021 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.