【软件工具】 Inno Setup 安装程序制作工具

基本信息

官方网站:https://jrsoftware.org/isinfo.php
软件授权:免费软件
下载地址:https://jrsoftware.org/isdl.php
开源状态:非开源
安装途径:官方下载的安装包; Scoop
推荐星级:⭐⭐⭐
功能简述:用于制作Windows程序的安装包的工具。

功能简述

Inno Setup是一个免费的安装程序制作工具,适用于Windows程序。开发者可以使用Inno Setup来打包他们的应用程序,并为其创建一个标准的Windows安装程序。这个安装程序可以包含文件、注册表项、快捷方式、组件、以及卸载程序等。

  • 官方介绍

Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability.

软件帮助

为了方便自学,翻译了 Inno Setup 的帮助文件,也分享在这里


我对翻译做了整理,请看整理后的文章:

Inno Setup 帮助翻译 - 1. Inno Setup 是什么?
Inno Setup 帮助翻译 - 2. 创建安装程序
Inno Setup 帮助翻译 - 3. 脚本格式概述
Inno Setup 帮助翻译 - 4. 脚本中的参数
Inno Setup 帮助翻译 - 5. 常量
Inno Setup 帮助翻译 - 6. 通用参数

请忽略下方内容:


Inno Setup 6.2.2 使用说明

版权信息

Inno Setup 6.2.2
版权所有 © 1997-2023 Jordan Russell。保留所有权利。
部分版权所有 © 2000-2023 Martijn Laan。保留所有权利。
Inno Setup 主页 外部链接

简介

Inno Setup 是 Jordan Russell 和 Martijn Laan 开发的一款免费的 Windows 程序安装程序。该程序自 1997 年首次发布以来,在功能集和稳定性方面已经可以与许多商业安装程序相媲美,甚至更胜一筹。

主要功能
  • 支持自 2006 年以来的所有 Windows 版本,包括:Windows 11、Windows 10、Windows 10 on ARM、Windows Server 2019、Windows Server 2016、Windows 8.1、Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008 以及 Windows Vista。(无需服务包。)
  • 全面支持在 64 位 Windows 版本上安装 64 位应用程序。支持 x64、ARM64 和 Itanium 架构。
  • 全面支持管理员和非管理员安装。
  • 支持创建单个 EXE 文件以安装您的程序,便于在线分发。也支持跨磁盘安装。
  • 可调整大小的标准 Windows 向导界面。
  • 可自定义的安装类型,例如:完整、最小和自定义。
  • 完全的卸载功能。
  • 文件安装:
    • 集成支持 “deflate”、bzip2 和 7-Zip LZMA/LZMA2 文件压缩。安装程序具有比较文件版本信息、替换正在使用的文件、使用共享文件计数、注册 DLL/OCX 和类型库以及安装字体的能力。
  • 在任何位置创建快捷方式,包括在开始菜单和桌面上。
  • 创建注册表和 .INI 条目。
  • 在安装之前、期间或之后运行其他程序。
  • 支持多语言安装,包括从右到左的语言支持。
  • 支持密码保护和加密安装。
  • 支持数字签名的安装和卸载,包括双重签名(SHA1 和 SHA256)。
  • 静默安装和静默卸载。
  • Unicode 安装。
  • 集成的预处理器选项,用于高级编译时定制。
  • 集成的 Pascal 脚本引擎选项,用于高级运行时安装和卸载定制。
  • 完整的源代码可在 GitHub 上获取 [外部链接]。
  • 占用空间小:包含所有功能在内,仅约 1.5 MB 的额外开销。
  • 所有功能都有完整的文档说明。
  • 被 Microsoft Visual Studio Code [外部链接] 和 Embarcardero Delphi [外部链接] 等软件所使用。
它真的是免费的吗?甚至可以用于商业用途?

是的,它完全可以免费使用,即使在部署商业应用程序时也是如此。

(注意:“完全免费”不应与“完全自由”混淆。Inno Setup 是受版权保护的软件,而非公有领域软件。在分发和使用方面有一些限制;详见 LICENSE.TXT 文件。)

创建安装程序

安装程序是通过脚本创建的,这些脚本是ASCII或Unicode(UTF-8编码且带有BOM)的文本文件,其格式与.INI文件有些相似。(不,它并没有你想的那么复杂!)

脚本具有“.iss”(意为Inno Setup脚本)扩展名。脚本控制着安装的各个方面。它指定了要安装哪些文件以及安装位置,要创建哪些快捷方式以及它们的命名等等。

脚本文件通常在“Inno Setup Compiler”编译器IDE程序内部进行编辑。完成脚本编写后,下一步也是最后一步是在编译器IDE中选择“编译”。此操作将根据您的脚本创建一个完整的、可运行的安装程序。默认情况下,该程序将在包含脚本的目录下的名为“Output”的目录中创建。

为了让您了解这一切是如何工作的,请启动编译器IDE,单击“文件”|“打开”,并选择位于Inno Setup目录下的Examples子目录中的一个脚本文件。(使用示例脚本作为您自己脚本的模板可能会有所帮助。)

脚本格式概述

Inno Setup 脚本被安排成多个部分。每个部分控制着安装程序的不同方面。一个部分是通过指定包含在方括号[]中的部分名称来开始的。在每个部分内部,可以有任意数量的条目。

主要有两种不同类型的部分:一种是如 [Setup] 这样的,其条目包含指令名称和值(以 Directive=Value 的形式),另一种是如 [Files] 这样的,其条目被分为参数。

以下是一个示例:

[Setup]
AppName=My Program

[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"

请注意,指定多个同名的部分是合法的。

你可以在脚本中添加“注释”(编译器会忽略这些注释),方法是在行的开头放置一个分号。例如:

; 这是一个注释。我可以在这里给自己写一些提醒...

脚本支持类似C语言的#include指令,它可以将一个单独文件的内容拉取到脚本中的#include指令位置。语法是:

#include "filename.txt"

如果文件名不是完全限定的,编译器将在包含#include指令的文件的同一目录中查找它。文件名可以前缀为“compiler:”,在这种情况下,它会在编译器目录中查找文件。

脚本支持#preproc指令,该指令指定是否使用仅支持上述#include指令的内置预处理器,还是使用支持更多指令的Inno Setup Preprocessor (ISPP)。语法是:

#preproc builtin
#preproc ispp

默认情况下,如果可用,脚本将使用ISPP,而.isl文件则使用内置预处理器。

如果使用的是Unicode文件,它必须是带有BOM的UTF-8编码。

脚本中的参数

脚本中的所有部分,除了[Setup]、[Messages]、[CustomMessages]、[LangOptions]和[Code]之外,都包含分隔为参数的行。以下是一个[Files]部分的示例:

[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "MYPROG.CHM"; DestDir: "{app}"
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme

每个参数都由名称、冒号和值组成。除非另有说明,否则参数是可选的,如果未指定,它们将采用默认值。一行上的多个参数用分号分隔,可以按任意顺序列出。

当参数的值包含用户定义的字符串(如文件名)时,传统上将其用双引号(")括起来。虽然使用引号不是必需的,但这样做可以在值中嵌入前导和尾随空格,以及分号和双引号字符。

要在引号内的值中嵌入双引号字符,请使用两个连续的双引号字符。例如:

"This "" contains "" embedded "" quotes"

编译器将其视为:

This " contains " embedded " quotes

如果您希望参数的值是一个单独的双引号字符,请使用四个双引号字符:“”“”。外部的两个双引号用于将整个字符串括在引号内;内部的两个双引号用于嵌入一个单独的双引号字符。

常量

脚本条目中的大多数都可以嵌入常量。这些预定义的字符串被包含在大括号 { } 中。根据用户的选择和系统配置,安装或卸载程序会将常量翻译为其字面值。例如,如下面所述,{win} 在大多数系统上将翻译为 “C:\WINDOWS”。

字符 “{” 被视为常量的开始。如果希望在支持常量的位置使用该实际字符,则必须使用两个连续的 “{” 字符。(不需要双写 “}” 字符。)

当常量后面紧跟着反斜杠时,如果常量的值已经以反斜杠结尾,安装或卸载程序将自动移除该反斜杠。因此,如果某个特定常量的值是 “C:”,{constantname}\file 将被翻译为 “C:\file”,而不是 “C:\file”。如果要防止这种情况发生,请将反斜杠用 { } 字符括起来,例如 {app}{}。

以下是支持的常量列表。

目录常量

{app}

应用程序目录,用户在向导的“选择目标位置”页面上选择。
例如:如果在条目上使用 {app}\MYPROG.EXE,并且用户选择 “C:\MYPROG” 作为应用程序目录,安装程序将其翻译为 “C:\MYPROG\MYPROG.EXE”。

{win}
系统的 Windows 目录。
例如:如果在条目上使用 {win}\MYPROG.INI,并且系统的 Windows 目录是 “C:\WINDOWS”,安装或卸载程序将其翻译为 “C:\WINDOWS\MYPROG.INI”。

{sys}
系统的 System32 目录。
例如:如果在条目上使用 {sys}\CTL3D32.DLL,并且系统的 Windows System 目录是 “C:\WINDOWS\SYSTEM”,安装或卸载程序将其翻译为 “C:\WINDOWS\SYSTEM\CTL3D32.DLL”。

在 64 位 Windows 上,默认情况下,此常量返回的 System32 路径映射到包含 32 位系统文件的目录,就像在 32 位 Windows 上一样。(这可以通过启用 64 位安装模式来覆盖。)

{sysnative}
在 64 位 Windows 上,包含 64 位系统文件的目录。在 32 位 Windows 上,包含 32 位系统文件的目录。

{syswow64}
在 64 位 Windows 上,系统的 SysWOW64 目录,通常是 “C:\WINDOWS\SysWOW64”。这是实际包含 32 位系统文件的目录。在 32 位 Windows 上,32 位系统文件不驻留在单独的 SysWOW64 目录中,因此如果在该位置使用此常量,它将解析为与 {sys} 相同的目录。

除非有特定需求需要获取实际包含 32 位系统文件的目录的名称,否则不要使用此常量。在 {sys} 就足够的地方随意使用 {syswow64} 可能会引起问题。(有关示例,请参阅 [Files] 部分的 sharedfile 标志的文档。)

{src}
Setup 文件所在的目录。
例如:如果在条目上使用 {src}\MYPROG.EXE,并且用户从 “S:” 安装,安装程序将其翻译为 “S:\MYPROG.EXE”。

{sd}
系统驱动器。安装 Windows 的驱动器,通常是 “C:”。此目录常量等同于 SystemDrive 环境变量。

{commonpf}
程序文件。系统 Program Files 目录的路径。除非安装以 64 位安装模式运行(在这种情况下它等同于 {commonpf64}),否则 {commonpf} 等同于 {commonpf32}。

{commonpf32}
32 位程序文件。系统 32 位 Program Files 目录的路径,在 32 位 Windows 上通常是 “C:\Program Files”,在 64 位 Windows 上是 “C:\Program Files (x86)”。

{commonpf64}
仅 64 位 Windows:64 位程序文件。系统 64 位 Program Files 目录的路径,通常是 “C:\Program Files”。如果尝试在 32 位 Windows 上扩展此常量,将引发异常。

{commoncf}
公共文件。系统 Common Files 目录的路径。除非安装以 64 位安装模式运行(在这种情况下它等同于 {commoncf64}),否则 {commoncf} 等同于 {commoncf32}。

{commoncf32}
32 位公共文件。系统 32 位 Common Files 目录的路径,在 32 位 Windows 上通常是 “C:\Program Files\Common Files”,在 64 位 Windows 上是 “C:\Program Files (x86)\Common Files”。

{commoncf64}
仅 64 位 Windows:64 位公共文件。系统 64 位 Common Files 目录的路径,通常是 “C:\Program Files\Common Files”。如果尝试在 32 位 Windows 上扩展此常量,将引发异常。

{tmp}
安装或卸载程序使用的临时目录。这不是用户 TEMP 环境变量的值。它是用户在安装或卸载程序启动时创建的临时目录的子目录(名称类似于 “C:\WINDOWS\TEMP\IS-xxxxx.tmp”)。当安装或卸载程序退出时,此目录中的所有文件和子目录都将被删除。在安装过程中,这主要用于提取要在 [Run] 部分中执行但安装后不需要的文件。

Shell 文件夹常量

Inno Setup 支持另一组目录常量,称为 shell 文件夹常量。它们可以与其他目录常量以相同的方式使用。

“common”常量是指所有用户的配置文件。

“user”常量是指运行安装程序的用户的配置文件。此用户通常与当前登录的用户不同,因此请谨慎使用“user”常量。

{group}

用户在安装程序的“选择开始菜单文件夹”向导页面上选择的“开始”菜单文件夹的路径。除非安装以非管理员安装模式运行,否则此文件夹将在所有用户的配置文件中创建,在这种情况下,它将在当前用户的配置文件中创建。

{localappdata}

当前用户的本地(非漫游)应用程序数据文件夹的路径。

{userappdata}{commonappdata}

应用程序数据文件夹的路径。

{usercf}

当前用户的“共用文件”目录的路径。仅 Windows 7 及更高版本支持 {usercf};如果在以前的 Windows 版本上使用,它将转换为与 {localappdata}\Programs\Common 相同的目录。

{userdesktop}{commondesktop}

桌面文件夹的路径。

{userdocs}{commondocs}

“我的文档”文件夹的路径。

{userfavorites}

当前用户的“收藏夹”文件夹的路径。(没有共用的“收藏夹”文件夹。)

{userfonts}

当前用户的“字体”文件夹的路径。仅 Windows 10 Version 1803 及更高版本支持 {userfonts}。与 {localappdata}\Microsoft\Windows\Fonts 相同的目录。

{userpf}

当前用户的“Program Files”目录的路径。仅 Windows 7 及更高版本支持 {userpf};如果在以前的 Windows 版本上使用,它将转换为与 {localappdata}\Programs 相同的目录。

{userprograms}{commonprograms}

“开始”菜单上“程序”文件夹的路径。

{usersavedgames}

当前用户的“保存的游戏”目录的路径。

{usersendto}

当前用户的“发送到”文件夹的路径。(没有共用的“发送到”文件夹。)

{userstartmenu}{commonstartmenu}

“开始”菜单的顶级路径。

{userstartup}{commonstartup}

“开始”菜单上“启动”文件夹的路径。

{usertemplates}{commontemplates}

模板文件夹的路径。

自动常量

除了“common”和“user”常量之外,Inno Setup还支持“auto”常量。这些常量会自动映射到其“common”形式,除非安装以非管理员安装模式运行,在这种情况下,它们会映射到其“user”形式。

建议尽可能始终使用这些“auto”常量以避免错误。

AdministrativeNon administrative
autoappdatacommonappdatauserappdata
autocfcommoncfusercf
autocf32commoncf32usercf
autocf64commoncf64usercf
autodesktopcommondesktopuserdesktop
autodocscommondocsuserdocs
autofontscommonfontsuserfonts
autopfcommonpfuserpf
autopf32commonpf32userpf

注意:表格中的竖线表示不同的映射关系,而非实际内容的一部分。在实际Markdown格式中,这些竖线不会被显示。这里仅是为了清晰地展示管理员和非管理员模式下自动常量的映射关系。

这些“auto”常量提供了一种便捷的方式,让安装程序能够根据当前的用户权限和环境自动选择正确的文件夹路径。这有助于简化安装脚本的编写,并确保在各种不同的情况下都能正确地访问和修改文件和文件夹。

重命名常量

Inno Setup 6 对一些目录和 Shell 文件夹常量进行了重命名。虽然旧名称仍然受支持,但建议将您的脚本更新为新名称(或“auto”形式),否则编译器会发出警告。

旧名称新名称
cfcommoncf
cf32commoncf32
cf64commoncf64
fontscommonfonts
pfcommonpf
pf32commonpf32
pf64commonpf64
sendtousersendto

请确保在更新脚本时使用这些新名称,以确保与最新版本的 Inno Setup 兼容,并避免在未来版本中可能出现的任何问题。

其他常量

{\}

一个反斜杠字符。请参阅本页顶部的注释,以了解使用 {} 和仅使用 \ 之间的差异。

{%NAME|DefaultValue}

嵌入环境变量的值。

  • NAME 指定要使用的环境变量的名称。
  • DefaultValue 确定如果用户系统上不存在指定的变量,则要嵌入的字符串。
  • 如果您想在常量中包含逗号、竖线(“|”)或闭合大括号(“}”),则必须通过“%-encoding”对其进行转义。将字符替换为“%”字符,后跟其两位十六进制代码。逗号是“%2c”,竖线是“%7c”,闭合大括号是“%7d”。如果您想包含实际的“%”字符,请使用“%25”。
  • NAME 和 DefaultValue 可以包含常量。请注意,您不需要像上面描述的那样转义常量的闭合大括号;只有当闭合大括号在其他地方使用时才需要这样做。

示例:

{%COMSPEC}
{%PROMPT|$P$G}

{cmd}

系统标准命令解释器的完整路径名,Windows\System32\cmd.exe。请注意,在扩展此常量时,不会使用 COMSPEC 环境变量。

{computername}

安装或卸载程序正在运行的计算机的名称(由 Windows GetComputerName 函数返回)。

{drive:Path}

从指定路径中提取并返回驱动器字母和冒号(例如“C:”)。对于 UNC 路径,它返回服务器和共享名称(例如“\SERVER\SHARE”)。

  • Path 指定路径。
  • 如果您想在常量中包含逗号、竖线(“|”)或闭合大括号(“}”),则必须通过“%-encoding”对其进行转义。将字符替换为“%”字符,后跟其两位十六进制代码。逗号是“%2c”,竖线是“%7c”,闭合大括号是“%7d”。如果您想包含实际的“%”字符,请使用“%25”。
  • Path 可以包含常量。请注意,您不需要像上面描述的那样转义常量的闭合大括号;只有当闭合大括号在其他地方使用时才需要这样做。

示例:

{drive:{src}}
{drive:c:\path\file}
{drive:\\server\share\path\file}

{groupname}

用户在安装程序的“选择开始菜单文件夹”向导页面上选择的文件夹的名称。这与 {group} 的不同之处在于它只是名称;它不包含路径。

{hwnd}

(特殊用途)转换为安装程序背景窗口的窗口句柄。
{wizardhwnd}

(特殊用途)转换为安装向导窗口的窗口句柄。如果在执行转换时窗口句柄不可用,则该句柄设置为 ‘0’。

{ini:Filename,Section,Key|DefaultValue}

从 .INI 文件中嵌入一个值。

  • Filename 指定要读取的 .INI 文件的名称。
  • Section 指定要读取的节的名称。
  • Key 指定要读取的键的名称。
  • DefaultValue 确定如果要嵌入的指定键不存在,则要嵌入的字符串。
  • 如果您想在常量中包含逗号、竖线(“|”)或闭合大括号(“}”),则必须通过“%-encoding”对其进行转义。将字符替换为“%”字符,后跟其两位十六进制代码。逗号是“%2c”,竖线是“%7c”,闭合大括号是“%7d”。如果您想包含实际的“%”字符,请使用“%25”。
  • Filename、Section、Key 和 DefaultValue 可以包含常量。请注意,您不需要像上面描述的那样转义常量的闭合大括号;只有当闭合大括号在其他地方使用时才需要这样做。

示例:

{ini:{win}\MyProg.ini,Settings,Path|{autopf}\My Program}

{language}

所选语言的内部名称。有关更多信息,请参阅 [Languages] 部分文档。

{cm:MessageName}
{cm:MessageName,Arguments}

基于活动语言嵌入自定义消息值。

  • MessageName 指定要读取的自定义消息的名称。有关更多信息,请参阅 [CustomMessages] 部分文档。
  • Arguments 可选地指定消息值的逗号分隔的参数列表。
  • 如果您想在常量中包含逗号、竖线(“|”)或闭合大括号(“}”),则必须通过“%-encoding”对其进行转义。将字符替换为“%”字符,后跟其两位十六进制代码。逗号是“%2c”,竖线是“%7c”,闭合大括号是“%7d”。如果您想包含实际的“%”字符,请使用“%25”。
  • Arguments 中的每个参数都可以包含常量。请注意,您不需要像上面描述的那样转义常量的闭合大括号;只有当闭合大括号在其他地方使用时才需要这样做。

示例:

{cm:LaunchProgram,Inno Setup}

如果英语是活动语言,则上面的示例将翻译为“Launch Inno Setup”。

注册表值嵌入

{reg:HKxx\SubkeyName,ValueName|DefaultValue}

此语法用于嵌入注册表值。

  • HKxx 指定根键;请参阅 [Registry] 部分文档以获取可能的根键列表。
  • SubkeyName 指定要读取的子键名称。
  • ValueName 指定要读取的值的名称;如果希望读取键的“默认值”,请留空 ValueName
  • DefaultValue 确定在指定的注册表值不存在,或不是字符串类型(REG_SZ 或 REG_EXPAND_SZ)时要嵌入的字符串。
  • 如果要在常量中包含逗号、竖线(“|”)或闭括号(“}”),必须通过“%-encoding”进行转义。将字符替换为“%”字符,后跟其两位十六进制代码。逗号是“%2c”,竖线是“%7c”,闭括号是“%7d”。如果要包含实际的“%”字符,请使用“%25”。
  • SubkeyNameValueNameDefaultValue 可以包含常量。请注意,不需要如上所述转义常量的闭括号;只有当闭括号在其他地方使用时才需要这样做。

示例
{reg:HKA\Software\My Program,Path|{autopf}\My Program}

命令行参数值嵌入

{param:ParamName|DefaultValue}

此语法用于嵌入命令行参数值。

  • ParamName 指定要读取的命令行参数的名称。
  • DefaultValue 确定在指定的命令行参数不存在,或其值无法确定时要嵌入的字符串。
  • 如果要在常量中包含逗号、竖线(“|”)或闭括号(“}”),必须通过“%-encoding”进行转义。将字符替换为“%”字符,后跟其两位十六进制代码。逗号是“%2c”,竖线是“%7c”,闭括号是“%7d”。如果要包含实际的“%”字符,请使用“%25”。
  • ParamNameDefaultValue 可以包含常量。请注意,不需要如上所述转义常量的闭括号;只有当闭括号在其他地方使用时才需要这样做。

示例
{param:Path|{autopf}\My Program}

如果指定了命令行 /Path="c:\My Program",则上述示例将转换为 c:\My Program

其他常量
  • {srcexe}:安装程序文件的完整路径名,例如“C:\SETUP.EXE”。
  • {uninstallexe}:由安装程序提取的卸载程序的完整路径名,例如“C:\Program Files\My Program\unins000.exe”。此常量通常用于 [Icons] 部分条目以创建卸载图标。仅当 Uninstallableyes(默认设置)时有效。
  • {sysuserinfoname}{sysuserinfoorg}:分别表示 Windows 注册的用户名和组织名。此信息从注册表中读取。
  • {userinfoname}{userinfoorg}{userinfoserial}:分别表示用户在“用户信息”向导页面上输入的名称、组织和序列号(可通过 UserInfoPage 指令启用)。通常,这些常量用于 [Registry] 或 [INI] 条目以保存其值供以后使用。
  • {username}:运行安装程序或卸载程序的用户的名称(由 GetUserName 函数返回)。
  • {log}:日志文件名称,如果未启用日志记录,则为空字符串。
通用参数 (Common Parameters)

在所有条目被分为参数的部分中,有三个可选参数是受到支持的。它们是:

语言 (Languages)

一个由空格分隔的语言名称列表,它告诉安装程序该条目属于哪些语言。如果最终用户从这个列表中选择了一种语言,那么该条目就会被处理(例如:文件会被安装)。

没有指定 Languages 参数的条目总是会被处理,除非其他参数指示它不应该被处理。

除了空格分隔的列表,您还可以使用布尔表达式。关于布尔表达式的示例,请参阅“组件 (Components)”和“任务 (Tasks)”参数。

示例

Languages: en nl
最低版本 (MinVersion)

一个条目要被处理的最低 Windows 版本。如果使用“0”,那么该条目将永远不会被处理。可以包含构建号和/或服务包级别。这会覆盖脚本的 [Setup] 部分中的任何 MinVersion 指令。

没有指定 MinVersion 参数的条目总是会被处理,除非其他参数指示它不应该被处理。

示例

MinVersion: 6.2
仅低于版本 (OnlyBelowVersion)

本质上是 MinVersion 的相反。它指定了条目不被处理的最低 Windows 版本。例如,如果您设置了 6.2,并且用户正在运行 Windows 7,那么该条目会被处理,但如果用户正在运行 Windows 8(其版本报告为 6.2)或更高版本,它将不会被处理。设置为“0”意味着没有上限版本限制。可以包含构建号和/或服务包级别。这会覆盖脚本的 [Setup] 部分中的任何 OnlyBelowVersion 指令。

没有指定 OnlyBelowVersion 参数的条目总是会被处理,除非其他参数指示它不应该被处理。

示例

OnlyBelowVersion: 6.2
组件和任务参数 (Components and Tasks Parameters)

除了 [Types][Components][Tasks] 之外,所有将条目分为参数的部分都支持两个可选参数。它们是:

组件 (Components)

一个由空格分隔的组件名称列表,它告诉安装程序该条目属于哪些组件。如果最终用户从这个列表中选择了一个组件,那么该条目就会被处理(例如:文件会被安装)。

没有指定 Components 参数的条目总是会被处理,除非其他参数指示它不应该被处理。

示例

[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Components: main
Source: "MYPROG.CHM"; DestDir: "{app}"; Components: help
Source: "README.TXT"; DestDir: "{app}"
任务 (Tasks)

一个由空格分隔的任务名称列表,它告诉安装程序该条目属于哪个任务。如果最终用户从这个列表中选择了一个任务,那么该条目就会被处理(例如:文件会被安装)。

没有指定 Tasks 参数的条目总是会被处理,除非其他参数指示它不应该被处理。

请注意,在“选择开始菜单文件夹”向导页面上的“不创建开始菜单文件夹”复选框不会影响带有 Tasks 参数的 [Icons] 条目,因为它们有自己的复选框。

示例

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: startmenu
Name: "{group}\My Program Help"; Filename: "{app}\MyProg.chm"; Components: help; Tasks: startmenu
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: desktopicon

除了空格分隔的列表之外,您还可以使用布尔表达式作为 ComponentsTasks 参数。支持的运算符包括 notandor。例如:

[Components]
Name: a; Description: a
Name: b; Description: b

[Tasks]
Name: p; Description: a or b; Components: a or b
Name: q; Description: a and b; Components: a and b
Name: r; Description: not a or b; Components: not a or b
Name: s; Description: not (a or b); Components: not (a or b)
Name: t; Description: a or b - old style; Components: a b

注意:在上面的 [Tasks] 示例中,最后一个任务的描述提到了“旧样式”。这是因为在早期版本的 Inno Setup 中,当多个组件名称连续列出而没有使用明确的逻辑运算符时,它们被解释为逻辑“或”(OR)关系。然而,为了清晰和避免混淆,建议始终明确使用 or 运算符来表示这种关系。

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值