标题：info setup
简介
"Windows 95/NT 4+" 
这是 Windows 95, 98, NT 4.0, 2000 以及更高版本的简称。 
"Windows 98/NT 4+" 
这是 Windows 98, NT 4.0, 2000 以及更高版本的简称。 
"Windows NT" 
无论何时提及 Windows NT，除非有其他说明，他总是包括 Windows 2000（亦即 NT 5.0）。
一些常量
多数的脚本项都可以在它们的内部嵌入“常量（constants）”，它们总是被一对大括号（{ }）扩起来的。当安装程序被启动的时候，这些常量将被转换成其真实的值，这依赖于用户的选择和系统配置，例如， 这个常量在绝大多数的系统当中将被转换成“C:\WINDOWS”。 
字符“{”被视为一个常量的起始标记，如果你想获得的是它的真实字符，那么你必须使用两个连续的“{”字符。 
如果一个常量的后面紧跟着一个反斜杠，而此时这个常量被转换成其真实值的结尾也是一个反斜杠时，Inno Setup 会自动的删除一个反斜杠，这样处理的明显的好处是如果这个常量指向了“C:\”，{常量名}\file 就会被正确的转换成“C:\file”而不是“C:\\file”。然而如果你想要防止这种事情的发生，那么就要将反斜杠用大括号括起来，象这样：{\}. 
下面所列出的是目前已经被支持的常量。
目录常量
应用程序目录，这是用户在安装向导的选择安装目录页里面所选择的。 
例如：如果你使用了 \MYPROG.EXE 作为一项并且用户选择了“C:\MYPROG”作为应用程序的目录，那么安装程序就会将它转换成“C:\MYPROG\MYPROG.EXE”。 
系统的 Windows 目录。 例如：如果你使用了 \MYPROG.INI 作为一项并且系统的 Windows 目录是“C:\WINDOWS”，那么安装程序就会将它转换成“C:\WINDOWS\MYPROG.INI”。 
系统的 Windows 系统（System）目录（在 Windows NT/2000 下是 System32）。 例如：如果你使用了 \CTL3D32.DLL 作为一项并且系统的 Windows 系统目录是“C:\WINDOWS\SYSTEM”，那么安装程序就会将它转换成“C:\WINDOWS\SYSTEM\CTL3D32.DLL”。 
这个文件夹指向安装程序所在的位置。 
例如：如果你使用了 \MYPROG.EXE 作为一项并且用户是从“S:\ ”安装的，那么安装程序就会将它转换成“S:\MYPROG.EXE”。 
系统驱动器，它是指 Windows 被安装到的那个驱动器，典型的是“C:”，对于 Windows NT/2000，这个常量同系统的环境变量“SystemDrive”是等效的。 
程序文件夹（Program Files），这个路径是系统的 Program Files 目录，典型的是“C:\Program Files”。 
公共文件夹（Common Files），这个路径是系统的 Common Files 文件夹，典型的是“C:\Program Files\Common Files”。 
临时目录，这个目录并不是用户的 TEMP 环境变量指向的目录，而是安装程序在启动时在用户的临时目录下建立的一个子目录（它有一个类似于“ 
C:\WINDOWS\TEMP\IS-xxxxx.tmp”这样的名字），在安装程序退出时所有的文件和子目录将会被删除。对于在 [Run] 段里面要被执行且在安装以后又不需要的程序文件来说这个功能是非常有用的。 
字体目录，在 Windows 95/NT 4+ 下有一个专门为字体设立的目录（通常这个目录在 Windows 目录下且被命名为“FONTS”），这个常量就指向这个目录。对于 Windows NT 3.51，这个常量是和 等效的，因为当时还没有字体目录。 
DAO 目录，当安装程序运行在 Windows 95/NT 4+ 上时，它被等效为 \Microsoft Shared\DAO，当运行于 Windows NT 3.51 时，它被等效为 \MSAPPS\DAO.
外壳（Shell）文件夹常量
Inno Setup 还支持另外一套目录常量，这就是涉及到的外壳（shell）文件夹常量，它们具有和其它的目录常量相同的使用方法。然而，如果在脚本的 [Setup] 段里面放入了 MinVersion=4,3.51 这一行来表示允许支持 NT 3.51，那么将只有 这个外壳文件夹常量能被使用，并签只能用在 [Icons] 段。 
下面的包含了“user”的常量涉及到当前登陆的用户私人文档（profile），而带有“common”的常量会涉及到全部用户（All Users）的私人文档（profile）。当安装程序运行在 Windows NT/2000 操作系统下并且用户不具有管理员的权限时，所有的带有“common”的常量会强迫同带有“user”的常量等效。 
* 标记表示带有“common”的常量在 Windows 9x 操作系统下同带有“user”的常量等效。 
程序组的路径，取决于用户在安装程序向导的“选择程序组”页的选择。对于 Windows NT，这个文件夹始终被建立在所有用户的私人文档（All Users profile），除非用户正在安装的这个应用程序不具有管理员的权限，那么在这种情况下它将被建立在用户的私人文档中（profile）. 
当前用户的“发送”的路径。（没有公共的“发送”文件夹。） 
& 
应用程序数据（Application Data）文件夹的路径。 
& * 
桌面文件夹的路径，推荐桌面快捷方式使用 . 
& 
“我的文档”文件夹的路径（或者对于 NT 4.0，是指私人文件夹）. 
& 
“收藏夹”的路径，这个常量的使用方法是需要 MinVersion 的设置至少为“4.1, 4”，目前只有 Windows 2000 支持 ，如果使用的是在这之前的版本的 Windows，那么它将会被转换成和 相同的目录。 
& * 
在开始菜单里面的程序文件夹的路径。 
& * 
开始菜单的定级路径。 
& * 
开始菜单里面的启动文件夹的路径。 
& 
模板（Templates）文件夹的路径，目前只有 Windows 2000 支持 ，如果使用的是在这之前的版本的 Windows ，它将会被转换成和 相同的目录。
其他的常量
{\} 
一个反斜杠字符，请参见本页前面提到的关于常量 {\} 和单字符 \ 在使用上有何不同的说明。 
{%NAME} 
内嵌一个环境变量，这个 NAME 是要使用的环境变量的名字。如果在用户的系统当中指定的环境变量不存在，这个常量就会被一个空的字符串所替代。 
安装程序正在运行的计算机的名称（就是“GetComputerName”函数的返回值）。 
用户在安装程序向导的选择程序组页选择的程序组的名称，这个是不同于 的，它不包括路径。 
（专门用途）传送安装程序背景窗口的窗口句柄。 
{reg:HKxx\SubkeyName,ValueName|DefaultValue} 
内嵌一个注册表值。 
HKxx 指定根键（root key），参见 [Registry] 段 文档所列出的根键。 
SubkeyName 指定要读取的子键的名称。 
ValueName 指定要读取的值的名称，要读取一个键的默认值就让 ValueName 为空。 
DefaultValue 如果指定的注册表值不存在或者它不是一个字符串类型（REG_SZ 或者 REG_EXPAND_SZ），则嵌入这个值。 
如果你希望包括一个逗号，竖线（字符“|”）或大括号闭弧“}”在常量里面，你必须通过“%-编码” 形式用“%”后紧跟一个两位的16进制代码转译后替换原来的字符，一个逗号是“%2c”，一个竖线符是“%7c”，一个大括号闭弧是“%7d”。 
DefaultValue 可以包括常量，然而，如上所诉内嵌的常量的大括号的闭弧 
（“}”） 必须被改成“%7d”才可以。
MinVersion
说明该项处理所需的分别最低的 Windows 版本和 Windows NT 版本. 如果将某个版本号指定为 0 那么在该平台上就再也不会处理这项了，版本创建编号（Build numbers）和（或）服务包级别（Service pack levels）也可以被包括在版本号当中。这个参数将会覆盖位于 [Setup] 段当中的 MinVersion 关键字。示例MinVersion: 4.0,4.0 
OnlyBelowVersion说明基本上是和 MinVersion 相反，该项所指定的最低的 Windows 版本 和 Windows NT 
版本将不会被处理，例如：如果你指定了 4.1,5.0 并且用户运行在 Windows 95 或 NT 4.0 下，那么该项将会被处理，但是如果用户运行在 Windows 98 （报告的版本信息是 4.1）或 Windows 2000 （报告的版本信息是 NT 5.0），则该项就不会被处理。使用“0”表示该版本号上限的限制。版本创建编号（Build numbers）和（或）服务包级别（Service pack levels） 也可以包括在版本号当中。这个参数将会覆盖位于 [Setup] 段当中的 OnlyBelowVersion 关键字。 
示例： 
OnlyBelowVersion: 4.1,5.0其它注意事项安装程序是按照段内的排列顺序来处理所有的项的，[UninstallRun] 段是个例外，卸载时处理所有项的顺序是与安装程序相反的。 
在这个示例中： 
[INI] 
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesectionifempty 
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: ""; Flags: uninsdeleteentry 
安装程序首先记录下第一项的数据 uninsdeletesectionifempty 标记到卸载记录中。创建第二项的键，然后记录下 uninsdeleteentry 标记的数据到卸载记录中，当程序被卸载时，卸载程序将首先处理 uninsdeleteentry 标记，删除该项，然后才是 uninsdeletesectionifempty 标记。 
如果安装程序在用户的系统中检测到一个 Windows 共享版本，Windows 系统目录是写保护的， 目录常量将会被转变为用户的 Windows 目录替代系统目录。
在命令行执行编译器
脚本文件也可以在命令行被安装编译器编译。命令行的使用方法如下： 
compiler /cc <脚本文件>示例compil16 /cc c:\isetup\sample16\sample16.iss 
compil32 /cc "c:\isetup\sample32\my script.iss" 
在上面列出的例子中，带有空格的文件名必须用引号括起来。 
在命令行运行安装编译器不支持正常的进程显示或任何错误消息。如果编译成功安装编译器将会返回一个退出代码 0，如果是 1 则表示有无效的命令行参数， 2 则表明编译失败。安装命令行参数安装程序本身接受三个不同的可选的命令行参数，这些参数能被用于系统管理员和其他程序调用安装程序。 
/SP- 
在安装程序开始时禁止“即将安装 ... ，继续吗？”的提示，当然，它将使 [Setup] 段的 DisableStartupPrompt 关键字设置为 yes 无效 
/DIR="x:\dirname" 
替换在“选择目标文件夹”向导页显示的默认的目录名，必需要指定一个全程路径名。如果 [Setup] 段的 DisableDirPage 关键字被设置为 yes, 那么该命令行参数将被忽略。 
/GROUP="group name" 
替换在“选择程序组”向导页显示的默认的程序组名，如果 [Setup] 段的 DisableProgramGroupPage 关键字被设置为 yes, 那么该命令行参数将被忽略。 
安装脚本段 
安装脚本段 
[Setup] 段 
[Dirs] 段 
[Files] 段 
[Icons] 段 
[INI] 段 
[InstallDelete] 段 
[Messages] 段 
[Registry] 段 
[Run] 段 
[UninstallDelete] 段 
[UninstallRun] 段 
其它问题： 
其它注意事项 
在命令行执行编译器安装命令行参数[Setup] 段 
这个段包括了安装和卸载程序所使用的全局设置，并且有些关键字在你建立的安装程序中是必须要用到的。这个是 [Setup] 段的一个示例： 
[Setup] 
AppName=My Program 
AppVerName=My Program version 1.4 
DefaultDirName=\My Program 
DefaultGroupName=My Program 
[Dirs] 段 
这个段是可选的，而且通常对于大多数简单的应用程序来书不是必需的。这个段是用来创建除用户选择的应用程序目录以外的其它的附加的目录，它是被自动创建的。这个段所创建的子目录是可以脱离主应用程序而共同使用的目录。当然在 [Files] 段里面的文件被复制到某个目录之前你并不一定要创建它，然而在卸载程序的时候在 [Dirs] 和 [UninstallDelete] 段里面没有指定的目录就不会被删除。
这是一个 [Dirs] 段的示例： 
[Dirs] 
Name: "\data" 
Name: "\bin" 
上面的示例演示了在安装程序的应用程序目录被创建之后，在应用程序的下面建立两个子目录。 
下面列出了支持的参数：
Name （必需的）
说明： 
要被建立的目录的名称，通常它以一个目录常数开始。 
示例： 
Name: "\MyDir" 
Flags 
说明
“标记”，这个参数是一个附加的选项集合，可以多个选项共同使用，使用空格分开多个选项。下面列出了被支持的选项： 
deleteafterinstall 
告诉安装程序象平常一样建立目录，但是当安装程序结束（或被中止）之后这个目录是空的情况下将这个目录删除。如果释放脚本的 [Run] 段所执行的程序所需要的临时的数据时这个选项是很有用的。 
uninsalwaysuninstall 
告诉卸载程序试图删除这个目录而不管它是不是空的。通常卸载程序只会尝试删除在安装之前不存在的目录。 
uninsneveruninstall 
告诉卸载程序不要去删除这个目录。在默认情况下，在 [Dirs] 段里面指定的目录如果是空的卸载程序就会尝试将其删除。 
示例： 
Flags: uninsneveruninstall
公共参数
[Files] 段 
这个段是可选的，但对于大多数安装程序来说是必不可少的。在这里定义了安装程序需要复制到用户的系统当中的全部文件。 
在安装期间，卸载程序和数据被自动的复制到应用程序的目录当中去，因此你不必手工的将它们添加到 [Files] 段。 
这是一个 [Files] 段的示例：[Files]Source: "CTL3DV2.DLL"; DestDir: ""; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall 
Source: "MYPROG.EXE"; DestDir: "" 
Source: "MYPROG.HLP"; DestDir: "" 
Source: "README.TXT"; DestDir: ""; Flags: isreadme 
下面列出了支持的参数： 
Source （必需的）说明“源文件”的名称，如果没有提供全程路径时编译器会根据安装程序的源目录的路径预先设定号路径。 
允许通配符，根据通配符可以在一项里面简单的指定一组文件。当使用了通配符的时候，所有匹配的文件使用相同的可选项。 
当标记（flag） external 被指定的时候，Source 必须是一个在发布介质或用户的系统中已经存在的文件（或带有通配符）的全程路径。（例如“\license.ini”）. 
示例： 
Source: "MYPROG.EXE"
DestDir （必需的）
说明
这个是文件将要被安装到用户的系统当中去的目录。它几乎总是以一个目录常量开始的。如果指定的路径不存在于用户的系统中，它将会被自动的创建。 
示例： 
DestDir: "" 
DestName 
说明
这个常数为将要安装到用户的系统中的文件指定一个新的名字。在默认的情况下，安装程序使用的是同 Source 参数一样的文件名，因此在多数情况下不需要指定该参数。 
示例： 
DestName: "MYPROG2.EXE" 
CopyMode 
默认： 
normal 
说明： 
“复制模式”，指定文件复制的规则，必须是下列规则之一。
normal
这是最常使用的选项。如果文件已经存在于用户的系统当中并且比要复制的文件的版本更新时（由文件的版本信息决定），安装程序将会向用户提出询问是否要替换掉已经存在的文件。如果已经存在的文件不包含文件的版本信息，它将会被覆盖而不会向用户询问。 
参见这个标题下面的注意中关于版本检查的重要说明。 
onlyifdoesntexist 
只有当用户的系统中的文件不存在时才复制文件。 
alwaysoverwrite 
总是覆盖已经存在的文件，甚至如果已经存在的文件比被安装的文件的版本更新的情况下也是如此。对于共享的系统文件永远也不要这样做！ 
alwaysskipifsameorolder 
类似于 normal, 不同之处是如果遇到已经存在的文件不会向用户提出询问。当这个模式被使用时，更新的一经存在的文件时从来不会被替换的。示例：CopyMode: normal 
Attribs说明：为文件指定附加的“属性”，它可以包括一个或多个属性，它们是：readonly, hidden, system. 如果没有指定这个参数，安装程序不会给文件指派任何特殊的属性。 
示例： 
Attribs: hidden system 
FontInstall 
说明： 
告诉安装程序需要被安装的文件是一个字体文件，该值是被保存到注册表或 WIN.INI 文件中的字体名称，这个名称必须严格地和在资源管理器中双击字体文件看到的名称相对应。注意，安装程序会自动的在字体名称的末尾加上“（TrueType）”。 
如果这个字体文件不是一个 TrueType 字体，你必须在 Flags 参数中指定 fontisnttruetype 标记。 
建议在安装字体到 目录的时候使用复制模式参数 onlyifdoesntexist 和标记（flag）参数 uninsneveruninstall.示例：Source: "OZHANDIN.TTF"; DestDir: ""; FontInstall: "Oz Handicraft BT"; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall 
Flags说明：“标记”，这个参数是一个附加的选项集合，可以多个选项共同使用，使用空格分开多个选项。下面列出了被支持的选项： 
comparetimestampalso 
（专门用途） 如果要被复制到用户系统的文件已经存在于用户的系统当中并且它们具有相同的版本信息，告诉安装程序进行时间戳（文件的日期时间属性）的比较。 在正常情况下安装程序不会覆盖已经存在的文件，但是当使用了这个标记的时候， 如果已存在的文件的时间戳比它的版本信息还要旧，安装程序在安装文件时就会覆盖它。当复制模式不是 normal 或 alwaysskipifsameorolder 这两者之一时该标记不起作用。
confirmoverwrite 
当文件已经存在每个文件在复制之前始终向用户提出询问。 
deleteafterinstall 
告诉安装程序象平常一样复制文件，但是当安装程序结束（或被中止）之后将这个文件删除。如果释放脚本的 [Run] 段所执行的程序所需要的临时的数据时这个选项是很有用的。 
此标记不能和下列标记在一起组合使用： isreadme, regserver, regtypelib, restartreplace, sharedfile, uninsneveruninstall. 
external 
此标记告诉 Inno Setup 不要将由 Source 参数指定的文件编译进安装程序文件中，在复制文件的时候由发布介质或用户的系统中已经存在文件代替。要获得更多详细的信息请参见 Source 参数的说明。 
fontisnttruetype 
如果 FontInstall 参数指定的是一个 非 TrueType 字体则使用此标记。 
isreadme 
该文件是“自述（README）”文件，安装程序中只有一个文件能够使用此参数。当有一个文件使用了这个参数时，用户将被询问是否愿意在安装程序结束时查看自述文件，如果选择了是，安装程序将会根据文件的类型用默认的程序打开这个文件，基于这个原因，自述文件应该具有象 .txt, .wri 或 .doc. 这样的扩展名。 
注意如果安装程序要重新启动用户的计算机（比如安装了一个带有 restartreplace 参数的文件或在 [Setup] 段中的 AlwaysRestart 
关键字的值为 yes），安装程序就不会向用户询问是否要查看自述文件。 
overwritereadonly 
始终覆盖一个只读 （read-only） 文件，如果没有这个参数，当一个已存在的只读文件要被覆盖时安装程序将会询问用户。
regserver
注册 OLE 服务器 （或称作 ActiveX 控件）。如果设置了此标记，安装程序将查找并执行 DLL/OCX 的 DllRegisterServer 输出，卸载程序调用 DllUnregisterServer. 当结合 sharedfile 标记一起使用，只有参照技术器的值归零时 DLL/OCX 才可能百取消登记 （unregistered）. 
要获得更多的详细信息请参见此标题最后的 注意。 
regtypelib 
注册类型库 （.tlb）. 卸载程序将会取消注册类型库 （除非指定了 uninsneveruninstall 标记）. 就像 regserver 标记那样，如果结合 sharedfile 标记一起使用，这个文件只有参照计数器的值归零时才可能被卸载。 
要获得更多的详细信息请参见此标题最后的 注意。 
restartreplace 
此标记通常用于替换系统核心文件。如果文件已经预先存在并发现它已经被锁定结果导致安装程序无法替换该文件，安装程序就会注册此文件（对于 Windows 和 Windows NT 分别使用 WININIT.INI 和函数 MoveFileEx）在下次启动系统时被替换。当遇到这种情况，在安装过程结束时用户将被提示重新启动计算机。 
要保持 Windows95/98 和 3.1 的兼容性，使用了此标记的项不应该使用长文件名，只能支持“8.3”格式的文件名。（Windows NT 和 2000 则没有此限制。） 
重要提示：在 Windows NT/2000 下只有当用户具有管理员权限时使用 restartreplace 标记才可以成功的替换使用中的文件。如果用户没有管理员权限，将会显示如下的信息：“RestartReplace failed: MoveFileEx failed; code 5.”，因此，当使用 restartreplace 标记时强烈建议让你的安装程序需要管理员权限，在 [Setup] 段里面设置 "AdminPrivilegesRequired=1"。 
sharedfile 
（仅 Windows 95/NT 4+） 使用 Windows 的共享文件计数功能 （位于注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs）. 这样会使应用程序之间能够共享一个文件，不用担心在不注意的情况下会删除文件。在每次安装共享文件的时候，与这个文件相对应的“参照计数器”的值就会加一，而每次应用程序被卸载的时候，参照计数器的值就会减一，如果参照计数器的值归零的时候，该共享文件就会被删除（在用户确认的情况下）。 
绝大多数被安装到 Windows 系统目录下的文件都应当使用这个标记，包括 .OCX 和 .DPL （Delphi 3 package） 文件。不使用这个标记的仅有的一个例外是 MFC DLLs. 作为替代，应该在复制模式中使用 onlyifdoesntexist ，并结合 uninsneveruninstall 标记，或者是如果安装单独发布的 MFC DLL 的最近的版本，则使用复制模式 alwaysskipifsameorolder ，并结合使用标记 uninsneveruninstall 和 restartreplace. 
当安装程序被运行在一个 NT 3.51 系统时，被安装的带有此标记的文件就再也不会被删除了。 
skipifsourcedoesntexist 
只有当 external 标记也使用了的时候这个标记才会有用。它会告诉安装程序如果源文件不存在的话则无任何提示的（静静的）跳过该项，如果没有使用这个标记则会显示一个错误消息。 
uninsneveruninstall 
从来不会卸载这个文件。此标记应当被保守地使用，而且通常它是和复制模式 onlyifdoesntexist 在一起结合使用。意思是用于安装一个特别公共的共享文件，就像 CTL3DV2.DLL 或者一个 MFC DLL, 你不应该用卸载程序去删除这个文件的原因是以后其它的应用程序也要使用到它。 
示例： 
Flags: isreadme 
公共参数 
注意 
如果安装程序正在安装一个已经存在于用户的系统当中的 16 位的 DLL 或者 EXE 文件，两个文件的版本信息是不会相比较的，已存在的文件将始终被覆盖（除非当复制模式的参数是 onlyifdoesntexist），这是由一个 Windows 的限制决定的，32 位的程序就像 Inno Setup 只能读取 32 位可执行文件的版本信息。 
在安装程序的最后一步安装程序会注册所有的带有 regserver 或 regtypelib 标记的文件。然而，如果 [Setup] 段关键字 AlwaysRestart 的值是 yes, 或如果有文件带有 restartreplace 标记，全部的文件将会在下次启动的时候注册（在 Windows 注册表的 RunOnce 创建一项）。 
当带有 .HLP 扩展名（Windows 的帮助文件）的文件被卸载的时候，其对应的 .GID 和 .FTS 文件同样会被自动删除。 
[Icons] 段 
这个段是可选的，但对于大多数安装程序来说是必不可少的。它定义了所有的安装程序要在用户系统中创建的程序管理器/开始菜单的图标。它也能被用来在其它的位置创建应用程序图标（快捷方式），比如就像桌面。 
卸载图标是由安装程序内部创建的，这样一来你就不需要在 [Icons] 段里面手工的添加它。默认情况下，安装程序运行在 Windows 95/NT 4+ 的时候是不创建卸载图标的 ――除了安装程序运行于 Windows NT 3.51 的时候。 要强制创建一个卸载图标，请使用 [Setup] 段里面的 AlwaysCreateUninstallIcon 关键字。 
这是 [Icons] 段的一个示例： 
[Icons] 
Name: "\My Program"; Filename: "\MYPROG.EXE"; WorkingDir: "" 
下面列出了支持的参数： 
Name （必需的） 
说明： 
要创建的应用程序图标的名称和位置。此参数可以使用任何任何“外壳文件夹常量”和“目录常量”。 
注意： 记住 Windows 95/NT 4+ 的应用程序图标是作为文件直接存储的，这样一来普通文件所不允许使用的字符都不能用来作为应用程序图标的名称。 
示例： 
Name: "\My Program" 
Name: "\Subfolder\My Program" 
Name: "\My Program" 
Name: "\My Program" 
Filename （必需的） 
说明： 
应用程序图标的命令行文件名，它通常以一个目录常量开始。 
示例： 
Filename: "\MYPROG.EXE" 
Parameters 
说明： 
应用程序图标的可选的命令行参数，可以包括常量，在 Windows 95/NT 4+ 下运行时才可以包括引号。 
示例： 
Parameters: "/play filename.mid" 
WorkingDir 
说明： 
应用程序图标的工作目录，应用程序启动的那个目录，如果没有指定该参数或该参数是空的，Windows 将使用一个默认的路径，它随着 Windows 的版本的不同而改变。这个参数可以包括常量。 
示例： 
WorkingDir: "" 
Comment 
说明： 
指定快捷方式的“注释”（或“描述”）栏的内容，它决定了在 Windows 2000 下的弹出信息，早期的 Windows 版本忽略这个注释。 
示例： 
Comment: "This is my program" 
IconFilename 
说明： 
要被显示的一个自定义的应用程序图标（位于用户的系统中）的文件名。它可以是一个包含图标的可执行文件映像 （.exe, .dll） 或一个 .ico 文件。如果没有指定该参数或该参速是空的，Windows 将会使用文件的默认图标。这个参数可以包括常量。 
示例： 
IconFilename: "\myicon.ico" 
IconIndex 
默认： 
0 
说明： 
由 IconFilename 指定的文件的以零开始的图标索引。 
示例： 
IconIndex: 0 
Flags 
说明： 
“标记”，这个参数是一个附加的选项集合，可以多个选项共同使用，使用空格分开多个选项。下面列出了被支持的选项： 
closeonexit 
当设置了此标记时，安装程序将设置快捷方式的“退出时关闭”属性。这个标记仅对基于 MS-DOS 的应用程序有效 （具体说就是是否具有 .pif 扩展名）。如果这个标记和 dontcloseonexit 标记都没有指定，安装程序就不会去改变“退出时关闭”的属性。 
createonlyiffileexists 
当设置了此标记时，安装程序只创建已存在的由 Filename 参数指定的文件的应用程序图标。 
dontcloseonexit 
类似于 closeonexit, 只是会导致安装程序不选定“退出时关闭”属性。 
runmaximized 
当设置了此标记时，安装程序将应用程序图标的“运行方式”设置为“最大化”，这样当程序被启动时以最大化的模式初始化。当安装在 Windows NT 3.51 上时该标记不起作用。 
runminimized 
当设置了此标记时，安装程序将应用程序图标的“运行方式”设置为“最小化”，这样当程序被启动时以最小化的模式初始化。 
uninsneveruninstall 
告诉卸载程序不要删除这个应用程序图标。 
useapppaths 
当设置了此标记时，在 Filename 参数里仅指定没有路径的文件名，以后安装程序将会从注册表的 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" 键里面自动得到预先设定好的对应该文件名的路径名。 
示例： 
Flags: runminimized
公共参数
[INI] 段 
此段时可选的，它定义了一些 .INI 文件项，在文件被复制以后安装程序在用户的系统中的设定。 
这是 [INI] 段的一个示例： 
[INI] 
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesection 
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "" 
下面列出了支持的参数： 
Filename （必需的） 
说明： 
你想要安装程序修改的 .INI 文件的文件名，它可以包括常量。如果这个参数时空的，它将写入系统的 Windows 目录的 WIN.INI 文件。 
示例： 
Filename: "\MYPROG.INI" 
Section （必需的） 
说明： 
要被创建的段的名称，可以包括常量。 
示例： 
Section: "Settings" 
Key 
说明： 
要被设定的键的名称，可以包括常量。如果没有指定这个参数或这个参数是空的就不会创建任何键。 
示例： 
Key: "Version" 
String 
说明： 
赋给键的值，可以使用常量。如果没有指定该参数不会创建该键。 
示例： 
String: "1.0" 
Flags 
说明： 
“标记”，这个参数是一个附加的选项集合，可以多个选项共同使用，使用空格分开多个选项。下面列出了被支持的选项： 
createkeyifdoesntexist 
只有该键不存在是才能给改建赋值。 
uninsdeleteentry 
程序被卸载时删除该项，它可以结合 uninsdeletesectionifempty 标记一起使用。 
uninsdeletesection 
当程序被卸载时，删除该项所在的整个段。对于由 Windows 本身使用的段（例如一些在 WIN.INI 中的段）来说这明显不是一个好的主意，你应当将它用到自己的应用程序中的段。 
uninsdeletesectionifempty 
类似于 uninsdeletesection, 但是只能在该段中没有了键的时候才能删除。它可以结合 uninsdeleteentry 标记一起使用。 
示例： 
Flags: uninsdeleteentry 
公共参数 
[InstallDelete] 段 
它使用的是和 [UninstallDelete] 段相同的格式，不同的是它是在安装程序的第一步被处理的。 
[Messages] 段 
[Messages] 段是用于定义安装程序和卸载程序所显示的消息。通常你不需要在你的脚本文件里面创建 [Messages] 段，默认情况下所有的显示消息都由 Inno Setup 包含的文件 Default.isl 定义。 （或由 [Setup] 段的关键字 MessagesFile 指定的任何文件）. 
然而，单独的消息可以被你的脚本中创建的 [Messages] 段覆盖。要这么做，首先你需要知道你要改变的消息的标识 （ID），在搜索 Default.isl 文件时能很容易的发现。例如，你想要改变安装向导的按钮 “下一步（&N）” 为 “向前（&F）”，该消息的标识为“ButtonNext”，那么你应该象这样创建 [Messages] 段： 
[Messages] 
ButtonNext=&Forward > 
有些消息带有象 %1 和 %2 这样的参数，你可以重新排列参数的顺序（例如将 %2 移到 %1 的前面）并且如果需要的话可以重复使用参数（例如“ 
%1 ... %1 %2”）。在带有参数的消息中，使用两个连续的“%”代替一个嵌入的“%”，“%n”创建一个换行。 
如果你希望将 Inno Setup 的文本翻译成其他语言修改并替换文件 Default.isl 或在你创建的脚本里面覆盖每个消息，做一个 Default.isl 的副本并另起一个名字就像 MyTranslation.isl. 在你要使用 MyTranslation.isl 的任何安装程序中，简单的将 [Setup] 段中的关键字 MessagesFile 指向该文件。 
特殊用途的标识 
有几个 [Messages] 段的项实际上不是用于在屏幕上显示的，它们是用于在安装程序中指定所使用的字体和字型号的。这些可选项中的每一个都有一个前导下划线字符 （“_”） 开始，请参阅 Default.isl 文件头部的注释的使用方法示例。 
[Registry] 段 
这个段是可选的，他定义了一些注册表项，用于在复制完文件之后创建在用户的系统中。 
下面是 [Registry] 段的一个示例。 
[Registry] 
Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty 
Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey 
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty 
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey 
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "InstallPath"; ValueData: "" 
下面列出了支持的参数：
Root （必需的）
说明： 
根键，必须是下列各项之一： 
HKCR （HKEY_CLASSES_ROOT） 
HKCU （HKEY_CURRENT_USER） 
HKLM （HKEY_LOCAL_MACHINE） 
HKU （HKEY_USERS） 
HKCC （HKEY_CURRENT_CONFIG） 
示例： 
Root: HKCU 
Subkey （必需的） 
说明： 
子键名称，可以包括常量。
示例： 
Subkey: "Software\My Company\My Program" 
ValueType 
说明： 
键值的数据类型，必须是下列各项之一： 
none 
string 
expandsz 
multisz 
dword 
binary 
如果指定了 none （默认设置），安装程序将创建一个没有键值的键，在这种情况下将忽略 ValueName 和 ValueData 参数。 
如果指定了 string，安装程序将创建一个字符串 （REG_SZ） 值。 
如果指定了 expandsz，安装程序将创建一个扩展字符串 （REG_EXPAND_SZ） 值。这种数据类型主要用在 Windows NT 上，但是也支持 Windows 95/98. 
如果指定了 multisz，安装程序将创建一个多行文本 （REG_MULTI_SZ） 值。 
如果指定了 dword，安装程序将创建一个整数 （REG_DWORD） 值。 
如果指定了 binary，安装程序将创建一个二进制 （REG_BINARY） 值。 
示例： 
ValueType: string 
ValueName 
说明： 
要创建的键值的名称，可以包含常量。如果它是空的，将会写入“默认”（Default）值中。如果ValueType 参数被设置为 none, 该参数将被忽略。 
示例： 
ValueName: "Version"
ValueData
说明： 
键值的数据。如果 ValueType 参数是 string, expandsz 或 multisz, 该参数是一个可以包含常量的字符串。如果数据类型是 dword, 该参数可以是一个十进制整数（例如“123”）或者是一个十六进制整数（例如“B”）。如果数据类型是 binary, 这是一个十六进制字节序列的形式：“00 ff 12 34”。如果数据类型是 none, 该参数被忽略。 
对于一个 string, expandsz 或者 multisz 类型的键值，在这个参数中你可以使用一个特殊的叫做 的常量。 常量代表的是注册表键值原来的数据。如果你想要添加一个字符串到一个已经存在的键值时 常量时很有用的，例如，;.如果该键值并不存在或者不是一个字符串类型，这时 常量会被默默地删除。如果正要被创建的键值是 multisz 类型，但是已经存在的键值并不是多行文本 （例如它是 REG_SZ 或 REG_EXPAND_SZ ）类型，这时 常量也会被默默地删除，反之亦然。 
对于一个 multisz 类型的键值，在这个参数中你可以使用一个特殊的叫做 的常量来嵌入换行（nulls）。 
示例： 
ValueData: "1.0" 
Flags 
说明： 
“标记”，这个参数是一个附加的选项集合，可以多个选项共同使用，使用空格分开多个选项。下面列出了被支持的选项： 
createvalueifdoesntexist 
当指定了此标记时，只有当相同名称的键值不存在时安装程序才会创建该键值。如果数据类型是 none ，或者同时指定了 deletevalue 标记将忽略该标记。 
deletekey 
当指定了此标记时，如果该项已存在，安装程序会首先尝试去删除它，包括其中的键值和子键，然后如果 ValueType 不是 none 的话它将创建一个新的键和键值。 
deletevalue 
当指定了此标记时，如果该键值已存在，安装程序会首先尝试删除该键值。然后如果 ValueType 不是 none ，并且该键不存在时它将创建该键和新的键值。 
dontcreatekey 
当指定了此标记时，如果该键不存在于用户的系统中安装程序将不会试图创建该键或任何键值。如果改建不存在将不显示错误消息。 
典型地该标记同 uninsdeletekey 标记结合使用，以便在安装时没有创建该键时确保在卸载期间删除该键。 
noerror 
如果安装程序在创建键或键值时无论什么原因失败不显示错误消息。 
preservestringtype 
该标记只用于 ValueType 参数为 string 或 expandsz 时。当指定了此标记并且该键值不存在或者已存在的键值不是字符串类型 （REG_SZ 或 REG_EXPAND_SZ） 时，该项将由 ValueType 指定的类型创建，如果该键值存在并且是一个字符串类型，该项将由与预先存在的键值相同的键值类型替代。 
uninsclearvalue 
当程序被卸载时，将设置该键值的数据为空的字符串 （类型 REG_SZ）. 该标记不能同 uninsdeletekey 标记一起使用。 
uninsdeletekey 
当程序被卸载时，删除整个键，包括其下全部的键值和子键。对于由 Windows 自身使用的键来说使用该标记明显不是一个好的主意，你应当将该标记应用到你自己的应用程序键中。 
uninsdeletekeyifempty 
当程序被卸载时，如果该键下没有其它键值和子键则将其删除。该标记可以结合 uninsdeletevalue 标记一起使用。 
uninsdeletevalue 
当程序卸载时删除该键值，该标记可以结合 uninsdeletekeyifempty 标记一起使用。 
注意：对于 Inno Setup 1.1 之前的版本，你可以与 none 数据类型一起使用该标记则将会成为 “delete key if empty” （如为空则删除该键）功能的标记。这个技巧现在已经不在被支持，你必须使用 uninsdeletekeyifempty 标记来实现该功能。 
示例： 
Flags: uninsdeletevalue 
公共参数 
[Run] & [UninstallRun] 段 
[Run] 段是可选的，指定任意数量的程序在成功安装程序以后及显示结束对话框之前被执行。同样 [UninstallRun] 段也是可选的，指定任意数量的程序在“卸载程序”的第一步时被执行。除非下面有其它说明，两个段共有相同的语法。 
每个程序按照你的脚本编排的顺序被执行，当出路 [Run]/[UninstallRun] 的项时，安装程序将会等到当前的程序终止之后才处理下一个，当然除非使用了 nowait 标记。 
这是一个 [Run] 段的示例。 
[Run] 
Filename: "\INIT.EXE"; Parameters: "/x" 
下面列出了支持的参数：
Filename （必需的）
说明： 
要被执行的程序，或要被打开的文件/文件夹。如果 Filename 不是一个 .exe 或 .com 文件，你必须在该项中使用 shellexec 标记。该参数可以包含常量。
示例： 
Filename: "\INIT.EXE" 
Parameters 
说明： 
程序可选的命令行参数，该参数可以包含常量。 
示例： 
Parameters: "/x" 
WorkingDir 
说明： 
程序起始位置的目录。如果没有指定该参数或该参数是空的，将不会改变任何特殊的目录。该参数可以包含常量。 
示例： 
WorkingDir: "" 
RunOnceId 
说明： 
只在 [UninstallRun] 段里面有效。如果相同的应用程序被安装超过了一次，“run”项将会重复出现在卸载记录文件里面。通过将一个字符串赋值给 RunOnceId, 你可以确保一个独特的 [UninstallRun] 项在卸载期间只被执行一次。例如，如果在卸载记录中的“run”中有两个或者更多的带有 RunOnceId 参数并被设置为“DelService”的项，则只有最后一个带有一个 RunOnceId 参数并被设置为“DelService”的项会被执行。其余的将被忽略。注意 RunOnceId 参数是大小写敏感的。 
示例： 
RunOnceId: "DelService" 
Flags 
说明： 
“标记”，这个参数是一个附加的选项集合，可以多个选项共同使用，使用空格分开多个选项。下面列出了被支持的选项： 
nowait 
如果指定了该标记，将不会等待该项处理被结束运行之前就进行到下一个 [Run] 项，或者结束安装程序。不能结合 waituntilidle 
标记一起使用。
shellexec
如果 Filename 不是一个可以直接执行的文件（一个 .exe 或 .com 文件）则该标记是必需的。当设置了该标记时，Filename 可以是一个文件夹或者任何已注册的文件类型 ―― 包括 .hlp, .doc 等等。文件将会被用户系统中的与该文件类型相关联的应用程序打开，就像用户在资源管理器中用鼠标双击该文件一样。 
当在 Filename 中使用一个文件夹名称时，建议在后面加上一个反斜杠字符（例如“\”），以确保可能有相同名称的程序不会被执行。同样要注意文件夹只能在 Windows 95/NT 4+ 上被打开，因为从那时起使用了一个新的资源管理器的外壳。 
使用 shellexec 标记有一个缺点，那就是无法等待该过程结束，因此，它始终就像被指定了 nowait 标记一样操作。 
skipifdoesntexist 
如果指定了该标记，如果 Filename 不存在安装程序将不会显示错误消息。它只适用于 [Run] 段，因为卸载程序从来不显示错误消息在 [UninstallRun] 项执行失败时。 
runmaximized 
如果指定了该标记，将会在一个最大化的窗口启动程序或文档。 
runminimized 
如果指定了该标记，将会在一个最小化的窗口启动程序或文档。 
waituntilidle 
如果指定了该标记，它将暂停直到该过程正在等待用户的输入并且没有未决的输入时，取而代之的是等待该过程的结束。（该标记调用 WaitForInputIdle Win32 函数.） 不能结核 nowait 一起使用。 
示例： 
Flags: nowait
公共参数
[UninstallDelete] 段 
该段是可选的。该段是用来定义一些附加的除了那些被安装的应用程序之外的要被卸载程序删除的文件或目录。使用该段来删除由你的应用程序创建的 .INI 文件是一个常用的办法。卸载程序在卸载过程的最后一步处理这些项。 
这是一个 [UninstallDelete] 段的示例： 
[UninstallDelete] 
Type: files; Name: "\MYPROG.INI" 
下面列出了支持的参数： 
Type （必需的） 
说明： 
指出要被卸载程序删除的是什么。必须是下列之一： 
files 
Name 参数指定的是一个具体的文件的名称，或者是一个带有通配符的文件名。 
filesandordirs 
功能上类似于 files ，但是它还可以匹配目录名称，并且任何名称匹配的目录包括其中所有的文件和子目录都会被删除。
dirifempty
当使用它时，Name 参数必须是一个目录的名称，但是它不能包括通配符。只有在不包含任何文件和子目录的情况下该目录才能被删除。 
示例： 
Type: files 
Name （必需的） 
说明： 
要被删除的文件或目录的名称。 
注意：不要试图通过在这里使用通配符去删除 目录下的全部文件，我强烈建议你不要这样做的原因由两个，首先，用户通常不会意识到可能还有他们放进应用程序目录中的数据文件将要被删除而不会得到警告（例如他们可能卸载应用程序只是为了要将它转移到一个不同的驱动器）。最好是将其保留一直到最后用户想要删除时用手工的方法删除；还有，如果由于用户的失误碰巧将程序安装到了一个错误的目录当中（例如 C:\WINDOWS）而这时去卸载它势必结果会损失惨重。再次声明，千万不要这么做！ 
示例： 
Name: "\MYPROG.INI" 
公共参数
编译器相关 
[Setup]: Bits 
有效值： 32 
说明： 
1.3 版本以后已废弃。 1.3 以前的版本的 Inno Setup 有一个 16 位的版本，编译器将检查 Bits 关键字以判断是否使用了正确的编译器来编译脚本。以后 Inno Setup 的更新的版本只有 32 位的版本可用，你将不再需要设置该关键字。无论什么时候如果 Bits 被设置为“16”，编译器都将会失败并提示一个错误消息。
[Setup]: UseSetupLdr
有效值： yes 或 no 
默认值： yes 
说明： 
告诉安装程序编译器要创建的安装程序的类型，如果是 yes, 将把所有的安装程序数据编译成一个单独的 SETUP.EXE （如果你愿意也可以重新命名为任何名称）。如果是 no, 将把安装程序数据编译成至少三个文件：SETUP.EXE, SETUP.0 和 SETUP.1. 你想使用 no 的仅有的理由大概是为了调试的目的。 
注意：不要在一个使用了多磁盘生成（DiskSpanning=yes）的安装程序中使用 UseSetupLdr=no，当 UseSetupLdr 是 yes 时，安装程序被复制到用户的临时 （TEMP） 目录并在那里运行，这不会发生在 UseSetupLdr 是 no 的情况下，如果 Windows 试图去在磁盘上寻找 setup.exe 文件却不能找到，因为在驱动器中的是一个不同的磁盘，所以会产生错误的结果。
[Setup]: BackColor, BackColor2
有效值： 一个值形如 $bbggrr, 这里的 rr, gg 和 bb 指定了两位的亮度值（以十六进制表示）分别为红色，绿色和蓝色。或者也可以是下列预定义的颜色名称之一：clBlack（黑色），clMaroon（暗红），clGreen（绿色），clOlive（橄榄绿），clNavy（深蓝），clPurple（紫色），clTeal（深青），clGray（灰色），clSilver（浅灰），clRed（红色），clLime（浅绿），clYellow（黄色），clBlue（蓝色），clFuchsia（紫红），clAqua（青绿），clWhite（白色）。 
默认值： BackColor 为 clBlue, 
BackColor2 为 clBlack 
说明： 
BackColor 关键字自定的颜色被用在安装程序窗口背景渐变色的上面（或左面，如果 BackColorDirection=lefttoright），BackColor2 指定的颜色被用在下面（或右面）。 
如果 BackSolid=yes 则 BackColor2 的设置被忽略。 
示例： 
BackColor=clBlue 
BackColor2=clBlack 
BackColor=$FF0000 
BackColor2=0000 
[Setup]: BackColorDirection 
有效值： toptobottom 或 lefttoright 
默认值： toptobottom 
说明： 
决定了安装程序窗口的背景渐变色的渐变方向，如果 BackColorDirection 是 toptobottom, 将自上而下绘出，如果是 lefttoright, 将从左到右绘出。
[Setup]: BackSolid
有效值： yes 或 no 
默认值： no 
说明： 
它决定了安装程序窗口的背景色是使用单一颜色还是渐变色，如果是 yes, 背景色会是一单一颜色（颜色由 BackColor 指定，忽略 BackColor2）。 
[Setup]: AppName 
说明： 
这个必需的关键字指定了你正在安装的应用程序的标题。不要包含版本号，那样应该使用 AppVerName 关键字。AppName 在安装程序的全部过程始终被显示，位于安装程序屏幕的左上角和向导中。 
示例： AppName=My Program 
[Setup]: AppVerName 
说明： 
这个必需的关键字的值应该和 AppName 的值相同（或相似），但是它还应当包含程序的版本号。 
示例： AppVerName=My Program version 3.0
[Setup]: AppId
默认值： 如果没有指定 AppId 或者它是空值，编译器将会把 AppName 的值作为 AppId 来使用。 
说明：
AppId 的值是被存储在卸载记录文件 （unins???.dat） 里面的，以便随后的安装程序检查后决定是否可以被添加到一个特定的已存在的卸载记录，安装程序只有在已存在的卸载记录中的 AppId 和当前的安装程序的 AppId 相同是才能添加到卸载记录。举一个实际的例子，比方说你右两个安装程序，一个叫做《我的程序》而另外一个叫做《我的程序 1.1 升级版》，要想把《我的程序 1.1 升级版》添加到《我的程序》的卸载记录中，你应该设置两个安装程序的 AppId 为相同的值。 
AppId 还决定了卸载注册表键的实际名称，被 Inno Setup 在其末尾附加上“_is1”（因此，如果 AppId 是 “MyProgram”，那么这个键将会被命名为“MyProgram_is1”）。Inno Setup 的早于 1.3 的版本的键的名称是基于 AppVerName 的值的。 
无论什么时候 AppId 都不会被显示出来，因此你要求非常隐讳的感觉很轻松。 
示例： AppId=MyProgram 
[Setup]: AppMutex 
说明：
如果用户要为当前的应用程序升级为新的版本，然而当前的应用程序正在运行，该关键字就是用来防止这类事情的发生的，而且它也可以防止用户卸载正在运行的应用程序。它指定了一个或多个同名互斥体的名称（多个互斥体用逗号隔开），安装程序和卸载程序将会在启动时检查，如果存在，安装程序/卸载程序将显示如下的信息：“[安装程序或卸载程序] 检测到 [应用程序] 现在正在运行。请立即关闭它的全部实例，然后单机‘确定’继续，或者‘取消’退出。” 
如果你要使用这个关键字就必须在你的应用程序中以该关键字指定的名称添加一个同名的互斥体。例如在 Delphi 和 C 中创建如下显示的同名互斥体，该代码应该在应用程序启动是被执行。 
Delphi: 
CreateMutex（nil, False, ’MyProgramsMutexName’）; 
C: 
CreateMutex（NULL, FALSE, "MyProgramsMutexName"）; 
并不是必需在应用程序被结束之前显示的销毁同名互斥体对象，系统会自动完成此功能，也不推荐你这样做，因为理想状态下同名互斥体对象必须存在直到进程被完全终止。 
注意在 Windows 下同名互斥体是大小写敏感的。 
要想获得有关同名互斥体的更多信息请参阅 MS SDK 帮助的 CreateMutex 主题。 
示例： AppMutex=MyProgramsMutexName