• 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 固有的方法规避一些特殊字符。例如, $ $ 新建一行。

    脚本头部

    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}ContribGraphicsIconsmodern-install.ico

    MUI_UNICON icon_file
    卸载程序的图标.
    默认: ${NSISDIR}ContribGraphicsIconsmodern-uninstall.ico

    MUI_HEADERIMAGE
    一张显示于页眉的图像.

    MUI_HEADERIMAGE_BITMAP bmp_file
    显示于安装程序页眉的位图 (推荐尺寸: 150x57 象素).
    默认: ${NSISDIR}ContribGraphicsHeader sis.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}ContribUIsmodern.exe

    MUI_UI_HEADERIMAGE ui_file
    包含一个位图控件以及置放页眉位图空间的对话资源 IDD_INST 的界面文件.
    默认: ${NSISDIR}ContribUIsmodern_headerbmp.exe

    MUI_UI_HEADERIMAGE_RIGHT ui_file
    包含一个位图控件以及在右边置放页眉位图空间的对话资源 IDD_INST 的界面文件.
    默认: ${NSISDIR}ContribUIsmodern_headerbmpr.exe

    MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
    包含有一个较小描述区域的自定义对话资源 IDD_SELCOM 的界面文件.
    默认: ${NSISDIR}ContribUIsmodern_smalldesc.exe

    MUI_UI_COMPONENTSPAGE_NODESC ui_file
    包含一个没有描述区域的自定义对话资源 IDD_SELCOM 的界面文件.
    默认: ${NSISDIR}ContribUIsmodern_nodesc.exe

    Open/Close section 欢迎/完成页面 界面设置

    MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
    用于欢迎页面和完成页面的位图. (推荐尺寸: 164x314 象素).
    默认: ${NSISDIR}ContribGraphicsWizardwin.bmp

    MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
    不拉伸用于欢迎页面和完成页面的位图. 只有当你要使用一张不需占用整个空白区域的图像时, 才使用这个选项. 如果你使用了一张匹配推荐尺寸的位图, 则不需使用这个选项, 因为如果用户使用了自定义的 DPI 设置, 那么其置放位图的区域尺寸会有所不同.

    Open/Close section 卸载程序的欢迎/完成页面设置

    MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
    用于欢迎页面和完成页面的位图. (推荐尺寸: 164x314 象素).
    默认: ${NSISDIR}ContribGraphicsWizardwin.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}ContribGraphicsChecksmodern.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
    显示于页面的文本. 用 换行.

    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$R0Your 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
    显示于此页面的文本. 用 换行.

    MUI_FINISHPAGE_TEXT_LARGE
    文本区域的额外空区 (如果使用了复选框).

    MUI_FINISHPAGE_BUTTON text
    显示于 "完成" 按钮的文本.

    MUI_FINISHPAGE_CANCEL_ENABLED
    启用 "取消" 按钮,用户可以点击跳过完成页面显示的任何选项.

    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, 那么定义此选项可以节省一些空间.

    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.
    
  • 相关阅读:
    计算两个字符串的最大公共字串的长度,字符不区分大小写
    任何一个整数m的立方都可以写成m个连续奇数之和。
    求一个byte数字对应的二进制数字中1的最大连续数
    Elasticsearch的过滤查询
    如何在Elasticsearch中安装中文分词器(IK+pinyin)
    使用Linux的alternatives命令替换选择软件的版本
    PHP如何与搜索引擎Elasticsearch交互?
    如何安装搜索引擎Elasticsearch?
    如何修改MAC自带的PHP的版本?
    程序员技能图谱
  • 原文地址:https://www.cnblogs.com/wangchaonan/p/11835854.html
Copyright © 2020-2023  润新知