本文列举了 NSIS 支持的所有属性,以供查阅。

描黑加粗部分的为默认值。

一、常规属性

AddBrandingImage

1
(left|right|top|bottom) (width|height) [填充]

在安装程序顶部、底部、左边、右边添加一个标志图像。它的大小将由指定的宽/高、安装程序的宽/高和安装程序字体确定。最终的大小不一定就是你需要的,请看输出命令来得到实际大小。因为这取决于安装程序字体,所以你应该在 AddBrandingImage 前使用 SetFont。默认的填充值为 2。

AllowRootDirInstall

true|false
控制是否允许安装在驱动器根目录,或者共享网络。把它设为“true”可以改变这个安全行为,此安全行为可以防止用户选择 C:\\\Server\Share 来作为安装(或卸载)目录。对于另外的可定制的目录选择页面。

AutoCloseWindow

true|false
设置当安装完成的时候窗口是否自动关闭。该属性可以不理会一个使用了 SetAutoClose 的区段。

BGGradient

[off|(顶部颜色 底部颜色 [文本颜色|notext])]

指定是否使用一个渐变的背景窗口。如果为“off”,安装程序将不显示背景窗口,如果无指定参数,则使用默认的黑蓝渐变,或者指定顶部颜色或底部颜色来得到一个渐变的背景。顶部颜色和底部颜色使用 RRGGBB 格式(十六进制,就像 HTML 那样,但略去了 #,因为 # 用于注释)。你也可以指定“文本颜色”,该颜色会显示“Name”指定的名称在左上角,或者你不需要文本时使用“notext”来关闭文本显示。

BrandingText

/TRIM(LEFT|RIGHT|CENTER) 文本设置显示在安装窗口底部的文本(默认为“Nullsoft Install System vX.XX”)。如果设为空字串(“”)则使用默认值;设为” “(一个空格)则显示空白。如果你不知道哪个适合你,那就保留默认值吧,这样可以使每个人知道你使用的 NSIS 版本。使用 /TRIMLEFT、/TRIMRIGHT 或 /TRIMCENTER 来裁剪控制大小到字串大小。

Caption

标题当使用一个外部的 PageEx 区块:设置安装程序标题条文本。默认为“Name 安装”,当使用了 Name 指令指定了名称时。你可以把它替换为“我的安装程序”或其他。如果你指定为空字串(“”),则使用默认值(你也可以指定为” “来使用一个空白字串)。

当使用一个内部的 PageEx 区块:设置当前页面的子标题。

ChangeUI

1
对话框 ui_file.exe

使用 ui_file.exe 里相同资源 ID 的一个对话框替换对话框(IDD_LICENSE、IDD_DIR、IDD_SELCOM、IDD_INST、IDD_INSTFILES、IDD_UNINST 或 IDD_VERIFY)。你也可以指定“all”作为一个对话框,当你想从同一个 UI 文件里一次载入替换全部 7 个对话框时。一些 UI 的例子请看位于 NSIS 目录下的 Contrib\UIs。

  • IDD_LICENSE 必须包含 IDC_EDIT1 (RICHEDIT 控件)。
  • IDD_DIR 必须包含 IDC_DIR (编辑框),IDC_BROWSE (按钮) 和 IDC_CHECK1 (选择框)。
  • IDD_SELCOM 必须包含 IDC_TREE1 (SysTreeView32 control),和 IDC_COMBO1 (组合框)。
  • IDD_INST 必须包含 IDC_BACK (按钮),IDC_CHILDRECT (静态控制其他所有对话大小),IDC_VERSTR (静态文本框),IDOK (按钮),和 IDCANCEL (按钮)。如果该对话框有一个图象控件(静态 SS_BITMAP 样式),那么它将被用于 SetBrandingImage 作为默认值。
  • IDD_INSTFILES 必须包含 IDC_LIST1 (SysListView32 控件), IDC_PROGRESS (msctls_progress32 控件),和 IDC_SHOWDETAILS (按钮)。
  • IDD_UNINST 必须包含 IDC_EDIT1 (编辑框)。
  • IDD_VERIFY 必须包含 IDC_STR (静态文本框)。

CheckBitmap

1
bitmap.bmp

指定一个位图为用于组件选择页面树形列表选择框的图像。

该位图应该为 96x16 像素大小,不能多于 8 位位深(256 色)且包括六个用于不同状态(次序为: 鼠标点击反白边缘、未选时、已选时、子区段未选时、未选且只读、已选且只读)的 16x16 图像。使用粉红色为覆盖颜色(该区域实际时为透明)。

CompletedText

文本当指定了参数时替换在安装结束时的默认文本(“完成”)。否则,使用默认值。

ComponentText

1
[文本 [子文本] [子文本 2]]

用来更改组件选择页面的默认文本。

文本: 控件上的文本,到安装图标的右边。

子文本: 安装类型选择控件的文本。

子文本 2: 安装类型选择控件下面、组件列表左边的文本。

如果字串为空(“”)则使用默认文本。

CRCCheck

on|off|force
指定安装前安装程序是否对自身执行一个 CRC。注意,如果用户使用了 /NCRC 命令行参数,且你没有指定“force”参数时,不会执行 CRC,这样有可能导致用户安装一个损坏的安装程序。

DetailsButtonText

1
show details text

指定参数时替换默认详细信息按钮文本“显示细节”,未指定参数时使用默认值。

DirText

1
[文本] [子文本] [浏览按钮文本] [浏览对话框文本]

用来更改目录选择页面的默认文本。

文本: 控件上面的文本,右延至安装图标。

子文本: 在目录选择框架上的文本。

浏览按钮文本: 浏览按钮上的文本。

浏览对话框文本: 在点击“浏览”按钮后“浏览目录”对话框上的文本。

如果字串为空(“”)则使用默认文本。

DirVar

1
用户变量(目录输入输出)

指定用哪个变量来保存所选的目录。该变量也会保存默认值。这样可以很方便的建立两个不同的目录选择页面而不需要频繁的读取、写入 $INSTDIR。默认的变量为 $INSTDIR。它只能用于 PageEx 来确定目录变量和 uninstConfirm 页面。

DirVerify

auto|leave
如果使用了“DirVerify leave”,则当安装目录无效或磁盘空间不够用时下一步按钮将会被禁止并且你可以在离开函数里使用 GetInstDirError 来读取被设置的位标计。

FileErrorText

文件错误文本替换当文件不能写入时显示的默认文本。该文本可以包含一个代表文件名的 $0($0 会被临时更改为该值)。例如: “文件 $0$\r$\n不能写入$\r$\n 祝你下次好运。”。

Icon

1
[路径\]图标文件.ico

设置安装程序的图标。在图标文件里的每一个图标将会被包含在图标文件里。注意如果你在安装程序和卸载程序里使用了不同的图标,那么它们的文件大小和结构必须匹配否则安装程序的构建将会失败。

InstallButtonText

安装按钮文本如果指定了参数,则会把默认的“安装”按钮文本替换为你指定的文本。

InstallColors

1
/windows | (前景色 背景色)

设置安装信息屏幕颜色(默认为 00FF00 000000)。使用 RRGGBB 格式(十六进制,就像 HTML 那样,但略去了 #,因为 # 用于注释)。注意指定了 “/windows” 作为唯一的参数,将使用默认的 Windows 颜色。

InstallDir

默认安装目录设定默认的安装目录。查看变量一段得到可用于该字串的变量(尤其是 $PROGRAMFILES)。注意该字串中最后一个 \ 后面的部分会被保留,当用户在安装时选择“浏览”并取得新的目录字串时,该部分会自动附加在后面(要禁止该行为你需要在目录字串后面添加一个额外的 \ ,但是你要使用引号把目录字串括起来以避免被认为是断行处理)。如果没有起作用的话,还是使用浏览按钮吧。

InstallDirRegKey

根键 子键 键名该属性让安装程序去检测一注册表里的一个字串,如果该字串可用那么把它用来作为安装目录。如果预置了该属性,当指定的注册表键可用时它会越过 InstallDir 指定的字串,否则使用默认的 InstallDir 指定值。查询注册表时,该命令将自动截去引号(如“”C:\program files\poop” “%1””,可得“C:\program files\poop”)。如果该字串以“.exe”结尾,它还会自动移去字串里的文件名部分(如“C:\program files\poop\poop.exe”,将得到“C:\program files\poop”)。对于更多高级的安装目录配置,可在 .onInit 函数里设定 $INSTDIR。[译者注: 事实上它还可以自动截取如“”C:\program files\poop\poop.exe” “%1””而得到“C:\program files\poop”,这样你只要知道了某个程序关联的文件类型,就可以直接用它获得该程序的安装目录。比如 InstallDirRegKey HKCR “FlashGet.Document\shell\open\command” “” 即可获得网际快车的安装目录]

InstProgressFlags

1
[位标计 [...]]

有效的位标计值为“smooth”(平滑进度条)或“colored”(把进度条着色为 InstallColors 设定的颜色)。例如: “InstProgressFlags” (默认老式 Windows 外观),”InstProgressFlags smooth” (新式平滑外观),”InstProgressFlags smooth colored” (新式平滑外观并着色)。注意: 当安装程序运行在 Windows XP 且使用了新式主题时“smooth”或“colored”都不能与 XPStyle on 共用。

InstType

1
安装类型名称 | /NOCUSTOM | /CUSTOMSTRING=字串 | /COMPONENTSONLYONCUSTOM

把一个安装类型添加到安装类型列表里,或禁止自定义安装类型。最多可以增加到 32 类,每一个类型都需要指定安装类型名称。如果以“un.”作前缀那么它就是一个卸载程序安装类型。你可以使用在运行时可以处理的用户变量而不是难以改变的代码来作为安装类型名称,这样你可以动态的改变安装类型的名称。另一个在运行时更改 InstType 名称的方法是 InstTypeSetText 命令。所不同的是使用 InstTypeSetText 你可以保留你自己宝贵的用户变量。第一个类型为默认类型(通常为“常规”)。每一个类型都是以编号的,从 1 开始。查看 SectionIn 可以知道这些编号怎么使用。如果指定了 /NOCUSTOM 开关,那么“自定义”类型就会被禁止,那么用户就必须选择一个已经定义的安装类型。作为选择,如果指定了 /CUSTOMSTRING 开关,那么该开关的参数将会替代“自定义”安装类型文本。作为选择,如果指定了 /COMPONENTSONLYONCUSTOM 位标计,那么组件列表仅在选择了“自定义”安装类型的时候才显示。

LicenseBkColor

颜色 | /gray | /windows
设置许可协议数据的背景颜色。颜色使用 RRGGBB 格式(十六进制,就像 HTML 那样,但略去了 #,因为 # 用于注释)。默认为“/gray”。你也可以使用“/windows”来使用 Windows 操作系统定义的颜色。

LicenseData

1
许可文件.(txt|rtf)

指定一个用户读取许可协议的文本文件或 RTF 文件。如果没有许可协议需要显示那么可以忽略它。注意该文件必须是 DOS 文本格式(\r\n)。要定义多语言许可协议请使用 LicenseLangString。

如果你使用 RTF 文件来显示许可协议推荐使用写字板来编辑 RTF 文件而不是使用微软的 Word。使用写字板可以得到更小的文件。

LicenseForceSelection

(checkbox [接受文本] | radiobuttons [接受文本] [拒绝文本] | off)

指定显示的许可协议是否必须被接受。可以使用单选框或互斥按钮的形式。默认情况下“下一步”按钮是禁止的并且只能在钩选了单选框选择了正确的互斥按钮后才可以进入下一步。如果指定了 off 则默认情况下“下一步:按钮是可用的。

LicenseText

1
[文本 [按钮文本]]

用来更改许可协议页面的默认文本。

文本: 控件上方的文本,右延至安装图标。

按钮文本: “我同意”按钮上的文本。

如果字串为空(“”)则使用默认文本。

MiscButtonText

1
[上一步文本 [下一步文本] [退出按钮文本] [关闭按钮文本]]

替换这四个(上一步、下一步、退出、关闭)按钮的默认文本。如果留空参数,将使用默认值代替。

Name

1
名称 [双与名称]

设置安装程序的名称。名称通常用来显示产品的名称比如“我的程序”或“蓝色网际的程序”。如果在名称里有一个或多个与符号(&),把第二个参数设为与第一个相同,有 & 的地方使用两个 & 来表示。例如你的产品名称为“foo & bar2000”,那么使用:

Name “foo & bar2000” “foo && bar2000”
如果你的安装程序名称里有 & 符号并且对名称使用了一个 LangString,那么你还需要创建另一个含有双 & 字符的名称作为第二个参数。

OutFile

1
[路径\]安装程序.exe

指定 MakeNSIS 要写入安装程序的输出文件。仅仅是 MakeNSIS 要写入的文件,它不会对安装程序的内容有任何影响。

SetFont

字体名 字体大小设置安装程序字体大小。请记住你选择的字体在用户的机器上也要有,不要使用只有你自己有的字体。

ShowInstDetails

hide|show|nevershow

设置是否显示安装详细信息。你可以设为“hide”来默认隐藏详细信息但用户可以查看,或“show”来默认显示详细信息,或“nevershow”来阻止用户查看任何信息。注意区段里可以使用 SetDetailsView 来越过它的设置。

ShowUninstDetails

hide|show|nevershow
设置是否显示卸载详细信息。你可以设为“hide”来默认隐藏详细信息但用户可以查看,或“show”来默认显示详细信息,或“nevershow”来阻止用户查看任何信息。注意区段里可以使用 SetDetailsView 来越过它的设置。

SilentInstall

normal|silent|silentlog

指定安装程序是否静默安装。如果它为“silent”或“silentlog”,所有位标计为 SF_SELECTED 的区段都会被安装而不做提示(你可以使用 SectionSetFlags 来设定区段的位标计),安装程序本身没有任何屏幕输出(而脚本仍可以显示某些特定的输出,使用 MessageBox 的 /SD 参数来指定静默安装时默认的返回值)。注意如果设置为“normal”且用户运行时使用了 /S (区分大小写)命令行参数时就相当于 SilentInstall 设置为“silent”一样。注意: 也可以看 LogSet。

SilentUnInstall

normal|silent
指定卸载程序是否静默安装。如果它为“silent”,卸载区段会被运行而不做提示,卸载程序本身没有任何屏幕输出(而脚本仍可以显示某些特定的输出,使用 MessageBox 的 /SD 参数来指定静默安装时默认的返回值)。注意如果设置为“normal”且用户运行时使用了 /S (区分大小写)命令行参数时就相当于 SilentUnInstall 设置为“silent”一样。注意: 也可以看 LogSet。

SpaceTexts

1
[需要空间文本 [可用空间文本]]

如果指定了参数,将会取代所需空间和可用空间文本(默认为“所需空间: ”和“可用空间: ”)。如果指定了“none”则不会显示空间提示文本。

SubCaption

1
[页面代号 子标题]

取代每一个安装程序页面(0=”: 许可协议”,1=”: 安装选项”,2=”: 安装目录”, 3=”: 正在安装”, 4=”: 安装完成”)的子标题。如果指定了空字串(“”),将使用默认值(你也可以指定 “ “ 来使用一个空白字串)。

你也可以在一个 PageEx 区块内部使用 Caption 来设置一个子标题(或取代默认值)。

UninstallButtonText

文本替换卸载程序上默认为“卸载”的按钮文本。如果无指定参数,将使用默认的文本。也可以看 WriteUninstaller (替换 UninstallEXEName)。

UninstallCaption

标题设置卸载程序标题条上显示的文本。默认情况下,它为由 Name 命令指定的“卸载名称”。你可以取代它为“我的应用程序卸载”或其他。如果指定了空字串(“”),将使用默认值(你也可以指定 “ “ 来使用一个空白字串)。

UninstallIcon

1
[路径\]图标.ico

设置卸载程序的图标。这个图标文件必须和安装程序的图标结构一致。

UninstallSubCaption

页面代号 子标题取代每一个卸载程序页面(0=”: 卸载确认”,1=”: 正在卸载”,2=”: 卸载完成”)的子标题。如果指定了空字串(“”),将使用默认值(你也可以指定 “ “ 来使用一个空白字串)。

你也可以在一个 PageEx 区块内部使用 Caption 来设置一个子标题(或取代默认值)。

UninstallText

1
文本 [子文本]

指定卸载程序确认页面上的文本。

文本: 控件上方的文本

子文本: 下面卸载定位的文本

WindowIcon

on|off
设置是否显示安装程序的图标。

XPStyle

on|off
设置是否把 XP 外观添加到安装程序里。当运行在 Windows XP 时一个 XP 外观使得安装程序控件使用新的 XP 样式。这个设定也会影响卸载程序。

二、编译器位标计

下面的命令可以改变编译器如何去创建代码和压缩数据。这些命令在脚本的任何地方都有效,并且影响着该命令下的每一行(直道被另一个命令取代)。

AllowSkipFiles

on|off
该命令指定用户是否可以略过文件。如果 SetOverwrite 设为 on(默认)且当安装程序打开一个文件往里边写入东西失败时一个用户可以选择略过文件。如果使用了 off 则不会显示允许用户略过文件的忽略按钮,这样用户只能选择退出安装程序(退出按钮)或重试打开该文件写入(重试按钮)。如果使用了 on 则用户可以选择跳过文件(同时置一个错误位标计 - 看 SetOverwrite)。

FileBufSize

缓冲大小以 MB 为单位该命令设置编译器内部文件缓冲大小。该命令允许你通过限制一个所给的文件一次性读入内存的多少来控制编译器的内存的使用。因为编译器需要输入和输出,所以文件缓冲时需要使用两倍指定的内存大小。该命令不会限制需要另一组内存大小的压缩器缓冲,也不会限制编译器另外的内部缓冲,因为这两个缓冲正常情况下无论如何也不能达到 1MB。指定一个很小的数字可能会降低执行效率。指定过大的数字可能会耗尽系统的资源并迫使编译器退出编译处理。该默认值为 32MB。

SetCompress

auto|force|off

该命令设置由安装程序使用来决定数据是否应该被压缩的压缩位标计。典型的 SetCompress 位标计将影响它后面的命令,并且脚本文件中的最后一个 SetCompress 命令也决定了是否压缩安装信息区段和卸载数据。如果压缩位标计为“auto”,那么仅当压缩后大小小于未压缩时文件才会被压缩。如果压缩位标计为“force”,则始终使用压缩。如果压缩位标计为“off”,则不使用压缩(这样可以加快编译速度)。

注意该选项当使用了固实压缩方式后无效,固实压缩方式在使用 BZIP2 和 LZMA 时默认启用。

SetCompressor

zlib|bzip2|lzma
该命令设置了安装程序压缩文件、数据使用的压缩算法。

支持三种压缩方式: ZLIB,BZIP2 和 LZMA。

ZLIB (默认值) 使用收缩算法,是一个快速简单的方法。默认的压缩级别它消耗大约 300 KB 内存。

BZIP2 通常比 ZLIB 的压缩率好,但是稍微慢了一点并且内存的使用也多一点。默认的压缩级别它消耗大约 4 MB 内存。

LZMA 是一个压缩率比较理想的新式压缩方式。它的解压速度非常快(在 2 GHz 的 CPU 上能达到 10-20 MB/s 的速度),但是压缩速度很慢。解压时内存的使用量是字典的大小加上一些 KB,默认值为 8 MB。

SetCompressorDictSize

字典大小以 MB 为单位设置使用 LZMA 压缩器时的字典大小(默认为 8 MB)。

SetDatablockOptimize

on|off
该命令决定编译器是否优化数据区块。数据区块的优化首先由编译器检查要添加到数据区块的数据是否已经存在了,如果已存在,只需要简单的作为引用来添加(会保留一小部分大小)。非常强烈的推荐保留该选项为 on。

SetDateSave

on|off
该命令设置了由 File 命令使用的保存文件日期、时间位标计来决定是否保留最后上次写入文件的日期和时间,它可以在安装时储存下来。有效的位标计为“on”和“off”。“on”为默认。

SetOverwrite

on|off|try|ifnewer|ifdiff|lastused

该命令设置了由 File 命令使用的覆盖位标计来决定目标文件已存在时是否覆盖。如果覆盖位标计为“on”,则目标文件被覆盖(这个是默认值)。如果覆盖位标计为“off”,则已存在的文件不会被覆盖。如果覆盖位标计为“try”,文件仅当可以被覆盖时(就是说假如文件不能写入,它会自动略过而不需要用户决定)才会覆盖目标文件。如果覆盖位标计为“ifnewer”,则仅当已存在的文件比新文件旧时才会覆盖目标文件。如果覆盖位标计为“ifdiff”,则仅当已存在的文件比新文件旧或新时才会覆盖目标文件。注意在“ifnewer”或“ifdiff”模式下,目标文件的日期都会被设为新文件的日期,而不管 SetDateSave 是怎么设置的。

SetPluginUnload

manual|alwaysoff

该命令设置了 CallInstDLL 和插件调用(插件名::函数)的不卸载插件位标计。

该命令设为“alwaysoff”相当于每个 CallInstDLL 和插件调用都使用了 /NOUNLOAD 参数。该命令设为“manual”则仅当你指定了 /NOUNLOAD 参数时才不卸载。

版本信息

VIAddVersionKey

1
[/LANG=语言 ID] 键名 值

在文件属性的版本表格里添加一个字段。既可以是由系统提供的的一个字段也可以是一个用户定义的字段。随后的这些字段由系统提供:

  • ProductName
  • Comments
  • CompanyName
  • LegalCopyright
  • FileDescription
  • FileVersion
  • ProductVersion
  • InternalName
  • LegalTrademarks
  • OriginalFilename
  • PrivateBuild
  • SpecialBuild

这些字段名称由目标系统翻译,而用户自定义的字段则无翻译。

VIProductVersion

1
[版本字串_X.X.X.X]

在文件属性版本表格的顶部添加产品版本号。