目录
当前位置: 首页 > 文档资料 > NSIS 用户手册 >

4.8 安装程序属性

优质
小牛编辑
133浏览
2023-12-01

4.8.1 常规属性

下面的所有命令都是调整安装程序属性的。这些属性控制安装程序的外观和函数、包括哪个页面出现在安装程序里、在每个页面的每个部分显示什么文本、安装程序的名称、使用什么样的图标、默认安装目录、取消什么样的文件还有更多。注意这些属性可以在除了区段和函数以外的任何地方设置。

描黑并加下划线的为默认值

4.8.1.1 AddBrandingImage

(left|right|top|bottom) (宽|高) [填充]

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

AddBrandingImage left 100
AddBrandingImage right 50
AddBrandingImage top 20
AddBrandingImage bottom 35
AddBrandingImage left 100 5

4.8.1.2 AllowRootDirInstall

true|false

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

4.8.1.3 AutoCloseWindow

true|false

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

4.8.1.4 BGFont

[字体名称 [字体高度 [字体宽度] [/ITALIC] [/UNDERLINE] [/STRIKE]]]

指定用于背景渐变显示文本的字体。要设置颜色请使用 BGGradient。如果没有指定参数,则使用默认的字体。默认字体为粗斜体的 Times New Roman。

4.8.1.5 BGGradient

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

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

4.8.1.6 BrandingText

/TRIM(LEFT|RIGHT|CENTER) 文本

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

接受变量。如果使用了变量,使用的变量应该在 .onInit 被初始化。

4.8.1.7 Caption

标题

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

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

接受变量。如果使用了变量,使用的变量应该在 .onInit 被初始化。

4.8.1.8 ChangeUI

对话框 ui_file.exe

使用 ui_file.exe 里相同资源 ID 的一个对话框替换对话框 (IDD_LICENSEIDD_DIRIDD_SELCOMIDD_INSTIDD_INSTFILESIDD_UNINSTIDD_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 控件)、和 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 (静态文本框)。
ChangeUI all "${NSISDIR}\Contrib\UIs\sdbarker_tiny.exe"

4.8.1.9 CheckBitmap

bitmap.bmp

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

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

4.8.1.10 CompletedText

文本

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

接受变量。如果使用了变量,使用的变量必须在文本输出之前初始化。

4.8.1.11 ComponentText

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

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

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

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

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

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

接受变量。如果使用了变量,使用的变量必须在创建组件选择页面之前被初始化。

4.8.1.12 CRCCheck

on|off|force

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

4.8.1.13 DetailsButtonText

显示详情文本

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

接受变量。如果使用了变量,使用的变量必须在安装页面 (instfiles) 之前被初始化。

4.8.1.14 DirText

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

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

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

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

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

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

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

接受变量。如果使用了变量,使用的变量必须在创建目录选择页面之前被初始化。

4.8.1.15 DirVar

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

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

Var ANOTHER_DIR
PageEx directory
  DirVar $ANOTHER_DIR
PageExEnd
Section
  SetOutPath $INSTDIR
  File "a file.dat"
  SetOutPath $ANOTHER_DIR
  File "another file.dat"
SectionEnd

4.8.1.16 DirVerify

auto|leave

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

PageEx directory
  DirVerify leave
  PageCallbacks "" "" dirLeave
PageExEnd

4.8.1.17 FileErrorText

文件错误文本

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

接受变量。如果使用了变量,使用的变量必须在使用 File 指令之前被初始化。

4.8.1.18 Icon

[路径\]图标文件.ico

设置安装程序的图标。在图标文件里的每一个图标将会被包含在安装程序里。注意,如果你添加了卸载程序,那么图标文件里的和卸载程序图标文件对应的每一个图标必须有相同的尺寸大小和颜色位深。图标文件里的次序也要匹配。例如,如果安装程序图标文件有三个图标,第一个图标为 32×32 像素 8bpp,第二个图标为 16×16 像素 8bpp,第三个图标为 8×8 像素 8bpp,那么卸载程序图标文件必须也有三个图标,且这三个图标的大小、颜色位深和次序都要相同。要指定卸载程序的图标请使用 UninstallIcon

4.8.1.19 InstallButtonText

安装按钮文本

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

接受变量。如果使用了变量,使用的变量必须在安装按钮显示之前被初始化。

4.8.1.20 InstallColors

/windows | (前景色 背景色)

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

4.8.1.21 InstallDir

默认安装目录

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

4.8.1.22 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" "" 即可获得网际快车的安装目录。]

语言字串和变量不能用于 InstallDirRegKey。

InstallDirRegKey HKLM Software\NSIS ""
InstallDirRegKey HKLM Software\ACME\Thingy InstallLocation

4.8.1.23 InstProgressFlags

[标记 [...]]

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

4.8.1.24 InstType

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

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

安装类型名称接受变量。如果使用了变量,使用的变量必须在创建组件页面之前被初始化。

4.8.1.25 LicenseBkColor

颜色 | /gray | /windows

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

4.8.1.26 LicenseData

许可文件.(txt|rtf)

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

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

你可以使用 LicenseLangString 来给每一种语言显示一个许可协议。

4.8.1.27 LicenseForceSelection

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

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

LicenseForceSelection checkbox
LicenseForceSelection checkbox "我接受"
LicenseForceSelection radiobuttons
LicenseForceSelection radiobuttons "我接受"
LicenseForceSelection radiobuttons "我接受" "我不接受"
LicenseForceSelection radiobuttons "" "我不接受"
LicenseForceSelection off

4.8.1.28 LicenseText

[文本 [按钮文本]]

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

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

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

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

接受变量。如果使用了变量,使用的变量必须在创建许可协议页面之前被初始化。

4.8.1.29 ManifestDPIAware

notset|true|false

声明该安装程序的DPI感知。一个DPI感知的应用程序不会被DWM(DPI虚拟化)缩放,使文本永远不会模糊。 NSIS不能扩展所使用的组件页面上的树控件中的位图,另外一些插件也可能有兼容问题,所以要确保您测试您的安装在不同的DPI设置下是否显示正确。

请参阅 MSDN 关于DPI的应用程序的更多信息。

4.8.1.30 ManifestSupportedOS

none|all|WinVista|Win7|Win8|Win8.1|Win10|{GUID} [...]

声明该安装程序与指定的Windows版本(S)兼容。这增加了在应用程序清单的兼容性部分一个 SupportedOS 项。 Win7、Win8、 Win8.1的默认列表可能会被更新(包括未来新的Windows版本)。因为兼容性的原因, RequestExecutionLevel 将默认设置为 none

更多的行为变化您可以阅读 MSDN

4.8.1.31 MiscButtonText

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

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

接受变量。如果使用了变量,使用的变量必须在 .onInit 被初始化。

4.8.1.32 Name

名称 [双与名称]

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

 Name "foo & bar2000" "foo && bar2000"

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

接受变量。如果使用了变量,使用的变量必须在 .onInit 被初始化。

4.8.1.33 OutFile

[路径\]安装程序.exe

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

4.8.1.34 RequestExecutionLevel

none|user|highest|admin

指定在 Windows Vista 下安装程序需要的执行级别。该值将被内嵌到安装/卸载程序的 XML manifest 中,告诉 Vista (也可能未来版本的 Windows) 安装程序需要什么样的权限级别。user 不需要管理员组权限,只要求普通用户权限级别。highest 要求当前用户的有效最高权限级别,所以 Windows 将提示用户确认以提升权限。该提示可能要求用户的密码。admin 要求管理员权限级别,Windows 同样会提示用户。设为默认值 none 将会保持 manifest 为空,并由 Windows 来判断执行级别。Windows Vista/7 能自动识别 NSIS 安装程序并决定所需理员权限。因此,noneadmin 实际上具有相同效果。

建议每一个应用程序一定要标记所需的执行级别,至少微软推荐这样做。未标记的安装程序将运行于兼容模式。这种模式下暂时解决方案是自动将创建在当前用户开始菜单的快捷方式移动到所有用户的开始菜单。不需要给系统文件夹安装文件或者写入本机注册表 (HKLM) 的安装程序应指定 user 执行级别。

在 MSDN 上可以找到更多关于此主题的信息。关键词有:UAC、requested execution level、vista manifest 和 vista security。

4.8.1.35 SetFont

[/LANG=语言ID] 字体名 字体大小

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

如果你想对每一个语言设置不同的字体,使用 /LANG 开关。例如:

 SetFont /LANG=${LANG_ENGLISH} "English Font" 9
 SetFont /LANG=${LANG_FRENCH} "French Font" 10

名称为 ^Font 和 ^FontSize 的两个常量语言字串包含了每种语言对应的字体和字体大小。

4.8.1.36 ShowInstDetails

hide|show|nevershow

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

4.8.1.36 ShowUninstDetails

hide|show|nevershow

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

4.8.1.36 SilentInstall

normal|silent|silentlog

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

更多信息请查看 4.12 节

4.8.1.39 SilentUnInstall

normal|silent

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

更多信息请查看 4.12 节

4.8.1.40 SpaceTexts

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

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

接受变量。如果使用了变量,使用的变量必须在创建组件选择页面之前被初始化。

4.8.1.41 SubCaption

[页面代号 子标题]

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

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

接受变量。如果使用了变量,使用的变量必须在相关页面创建之前被初始化。

4.8.1.42 UninstallButtonText

文本

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

接受变量。如果使用了变量,使用的变量必须在卸载按钮显示之前被初始化。

4.8.1.43 UninstallCaption

标题

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

接受变量。如果使用了变量,使用的变量必须在 un.onInit 被初始化。

4.8.1.44 UninstallIcon

[路径\]图标.ico

设置卸载程序的图标。这个图标文件必须和安装程序的图标结构一致。关于这个限制的更多信息请看 Icon

4.8.1.45 UninstallSubCaption

页面代号 子标题

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

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

接受变量,如果使用了变量,使用的变量必须在相关的页面创建之前被初始化。

4.8.1.46 UninstallText

文本 [子文本]

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

文本:控件上方的文本

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

接受变量,如果使用了变量,使用的变量必须在创建卸载确认页面之前被初始化。

4.8.1.47 WindowIcon

on|off

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

4.8.1.48 XPStyle

on|off

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

4.8.2 编译器标记

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

例如,在下面的脚本,blah.dat将永远不会被覆盖。

${If} $0 == 0
  SetOverwrite on
${Else}
  SetOverwrite off
${EndIf}
File blah.dat # overwrite is always off here!

相反,以下blah.bat将会被使用

${If} $0 == 0
  SetOverwrite on
  File blah.dat
${Else}
  SetOverwrite off
  File blah.dat
${EndIf}

4.8.2.1 AllowSkipFiles

on|off

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

4.8.2.2 FileBufSize

缓冲大小_MB

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

4.8.2.3 SetCompress

auto|force|off

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

注意该选项当使用了固实压缩方式后无效。

4.8.2.4 SetCompressor

[/SOLID] [/FINAL] zlib|bzip2|lzma

该命令设置了安装程序压缩文件、数据使用的压缩算法。该命令只能在区段、函数之外或在任何数据被压缩之前使用。不同的压缩方式不能在同一个安装程序里用来压缩不同的文件。建议在脚本的开始处使用这个命令来尽可能避免编译错误。

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

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

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

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

如果使用了/FINAL ,则后来调用的 SetCompressor 都会被忽略。

如果使用了/SOLID 的话,所有的数据将被压缩在一个区块里,这样可以提高压缩率。

4.8.2.5 SetCompressorDictSize

字典大小以 MB 为单位

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

4.8.2.6 SetDatablockOptimize

on|off

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

4.8.2.7 SetDateSave

on|off

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

4.8.2.8 SetOverwrite

on|off|try|ifnewer|ifdiff|lastused

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

SetOverwrite off
File program.cfg # 配置文件将不会覆盖
SetOverwrite on

4.8.2.9 Unicode

true|false

生成一个 Unicode 安装程序

4.8.3 版本信息

4.8.3.1 VIAddVersionKey

 [/LANG=语言ID] 键名 值

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

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

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

VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Test Application"
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "A test comment"
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Fake company"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Test Application is a trademark of Fake company"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "(C) Fake company"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Test Application"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "1.2.3"

4.8.3.2 VIProductVersion

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

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

VIProductVersion "1.2.3.4"

4.8.3.3 VIFileVersion

[version_string_X.X.X.X]

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

VIFileVersion "1.2.3.4"