{app}是常量



脚本中的项目大部分可以嵌入常量。这些预定义的字符被包含在括弧 { } 中。安装程序或卸载程序会根据用户选择和系统配置将这些常量翻译为文字值。例如,{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}
系统的 Windows System 目录 (在 NT 平台上是 System32)。
例如: 如果你在条目中使用了 {sys}\CTL3D32.DLL,且系统的 Windows System 目录是“C:\WINDOWS\SYSTEM”,安装程序或卸载程序将它传送到“C:\WINDOWS\SYSTEM\CTL3D32.DLL”。
{syswow64}
在 64 位 Windows 中,系统的 SysWOW64 目录,一般是“C:\WINDOWS\SysWOW64”。这是在 32 位系统文件驻留的真实目录。在 32 位 Windows 中,32 位系统文件驻留在“System32”或“System”中,不是在单独的的“ SysWOW64 目录,因此如果在这种情况下使用,这个常量将解析到与 {sys} 相同的目录。

{src}
安装程序文件所在目录。
例如: 你在条目中使用了 {src}\MYPROG.EXE,且用户正在从“S:\”进行安装,安装程序将它传送到“S:\MYPROG.EXE”。



{sd}
Windows 系统所在的驱动器。一般来说是“C:”。在 Windows NT 平台,这个目录常量等同于 SystemDrive 环境变量。


{pf}
程序文件位置。系统的 Program Files 目录的路径。{pf} 等于 {pf32},除非安装程序运行于 64 位模式,在这种情况下它等于 {pf64}。
{pf32}
32 位程序文件。系统的 32 位程序文件目录路径。一般来说它在 32 位 Windows 是“C:\Program Files”,在 64 位 Windows 中是“C:\Program Files (x86)”。
{pf64}
仅指 64 位 Windows: 64 位程序文件。系统的 64 位程序文件目录路径,一般来说是“C:\Program Files”。如果尝试在 32 位的 Windows 中展开这个常量,将会出现异常。
{cf}
公共文件。系统公共文件目录路径。{cf} 等于 {cf32},除非安装程序运行于 64 位模式,在这种情况下它等于 {cf64}。
{cf32}
32 位公共文件。系统的 32 位公共文件目录路径。一般来说它在 32 位 Windows 是“C:\Program Files\Common Files”,在 64 位 Windows 中是“C:\Program Files (x86)\Common Files”。
{cf64}
仅指 64 位 Windows: 64 位公共文件。系统的 64 位公共文件目录路径,一般来说是“C:\Program Files\Common Files”。如果尝试在 32 位的 Windows 中展开这个常量,将会出现异常。
{tmp}
用于安装程序或卸载程序的临时目录。这不是用户的 TEMP 环境变量值。它是在安装程序启动后在用户临时目录中创建的子目录 (象名为“C:\WINDOWS\TEMP\IS-xxxxx.tmp”)。目录中的所有文件和子目录在安装程序或卸载程序退出时删除。在安装时,这主要用于提取在 [Run] 段运行、但安装后不再需要的文件。



{fonts}
字体目录。通常是在 Windows 下面的名字“FONTS”的目录。


{dao}
DAO 目录,等同于 {cf}\Microsoft Shared\DAO。



外壳文件夹常量

Inno Setup 支持其它目录常量设置,作为外壳文件夹常量引用。它们可以与其它目录常量相同方法使用。
下面的“user”常量引用到当前登录的用户配置文件,“common”常量引用到所有用户配置文件。
除非有另外的注释,外壳文件夹常量工作于 Inno Setup 支持的所有 Windows 版本,包括 Windows 95 和 NT 4.0。
* = 如果登录的用户缺少管理员权限,或操作系统是 Windwos 95/98/Me,“common”结构映射到“user”结构。


{group}
开始菜单文件夹路径,由用户在安装程序的选择开始菜单文件夹向导页中选定。在 Windows NT/2000/XP/2003,这个文件夹总是创建在所有用户配置文件下,除非非用户安装程序的用户没有管理员权限,这种情况下它将创建在用户配置文件下。
{localappdata}
本地应用程序数据文件夹。
{sendto}
当前用户的 Send To 文件夹路径。(这里不是指公共 Send To 文件夹。)
{userappdata} 和 {commonappdata}
应用程序数据文件夹路径。
{userdesktop} 和 {commondesktop} *
桌面文件夹路径。
{userdocs} 和 {commondocs}
我的文档 (My Documents) 文件夹路径 (在 NT 4.0,私人文件夹)。
{userfavorites} 和 {commonfavorites} *
收藏夹文件夹路径。这些常量设置必须 至少“4.1, 4” MinVersion 设置。只在 Windows 2000 和更高版本支持 {commonfavorites};如果在先前的 Windows 版本中使用,它将翻译为等同于 {userfavorites} 目录。
{userprograms} 和 {commonprograms} *
开始菜单中程序文件夹路径。
{userstartmenu} 和 {commonstartmenu} *
开始菜单顶层路径。
{userstartup} 和 {commonstartup} *
开始菜单启动文件夹路径。
{usertemplates} 和 {commontemplates} *
模板文件夹路径。仅在 Windows 2000 和更高版本支持 {commontemplates},如果使用的是先前的 Windows 版本,它将被翻译为等同于 {usertemplates} 目录。



其它常量


{\}
反斜杠字符。查阅本页顶部的注释获取使用 {\} 和只使用一个 \ 字符之间的差异。
{%NAME|DefaultValue}
嵌入一个环境变量值。

★ NAME 用于指定要使用的环境变量的名字。

★ DefaultValue 确定如果指定的变量在用户系统中不存在时置入的字符串。

★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
★ NAME 和 DefaultValue 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。

示例:
{%COMSPEC}
{%PROMPT|$P$G}
{cmd}
系统标准命令解释器的完整路径名。在 Windows NT/2000/XP/2003,是 Windows\System32\cmd.exe。在 Windows 95/98/Me,是 Windows\COMMAND.COM。注意当展开这个常量时 COMSPEC 环境变量不使用。
{computername}
正在运行安装程序或卸载程序的电脑名 (等同于由 GetComputerName 函数返回的值)。

{drive:Path}
从指定的路径中提取并返回驱动器卷标和冒号 (例如“C:”)在 UNC 路径的场合中,它返回服务器和共享名 (例如“\\SERVER\SHARE”)。


★ Path 指定路径。

★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。

★ 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。

示例:
{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 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。


示例:
{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program}


{language}
选定语言的内部名字。查阅 [Languages] 段帮助文档获取更多信息。

{cm:MessageName}
{cm:MessageName,Arguments}
根据活动语言嵌入一个自定义消息值。

★ MessageName 用于指定要读取的自定义消息名。查阅 [CustomMessages] 段帮助文档获取更多信息。
★ Arguments 可随意在消息值中指定逗号分隔的声明列表。
★ 如果你想在常量内部包含一个逗号,垂直条 (“|”),或括号 (“}”),你必须使用“%-encoding.”避开它,用“%”字符,后面跟随它的两位数十六进制代码替换。逗号是“%2c”,垂直条是“%7c”,括号是“%7d”,如果你想包含一个实际的“%”字符,用“%25”。
★ 每个 Arguments 中的声明可以包含常量。注意,你不需要避开上面描述的常量中的括号,只有在别处使用这种括号时需要避开。
示例:
{cm:LaunchProgram,Inno Setup}
如果活动语言是简体中文,上面的示例被翻译为“运行 Inno Setup”。
{reg:HKxx\SubkeyName,ValueName|DefaultValue}
插入一个注册表值。


★ HKxx 指定注册表根键;查阅 [Registry] 段帮助文档获取可用根键列表。

★ SubkeyName 指定要读取的子键名。

★ ValueName 指定要读取的值名;如果你想读取键的“默认”值,将 ValueName 留空。

★ DefaultValue 确定在指定的注册表值不存在,或不是一个字符串类型的值 (REG_SZ 或 REG_EXPAND_SZ) 时要插入的字符。


★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。

★ SubkeyName,ValueName 和 DefaultValue 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。

示例:
{reg:HKLM\Software\My Program,Path|{pf}\My Program}


{param:ParamName|DefaultValue}
插入一个命令行参数值。


★ ParamName 指定要读取的命令行参数名。

★ DefaultValue 确定如果指定的命令行参数不存在,或它的值不能确定时要插入的字符。

★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。


★ ParamName 和 DefaultValue 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。


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

如果指定命令行 /Path="c:\My Program",上面的例子翻译为 c:\My Program。
{srcexe}
安装程序文件的完整路径名,例如“C:\SETUP.EXE”。

{uninstallexe}
由安装程序提取的卸载程序的完整路径名,例如“C:\Program Files\My Program\unins000.exe”。这个常量一般用于在 [Icons] 段条目创建一个卸载图标。它只在 Uninstallable 设为 yes (默认设置) 时有效。0

{sysuserinfoname}
{sysuserinfoorg}
Windows 已许可的名字和组织,这个信息从注册表中读取。

{userinfoname}
{userinfoorg}
{userinfoserial}
用户在用户信息向导页 (可以通过 UserInfoPage 指示来启用) 中分别输入的名字,组织和序列号。一般来说,这些常量用于在 [Registry] 或 [INI] 条目中保存它们以后要使用的值。

{username}
正在运行安装程序或卸载程序的用户的名字 (也可以用 GetUserName 函数返回)。