使用 Directory 表

Directory 表指定安装的布局。 在 CostFinalize 操作期间解析目录时,Directory 表中的键将变为设置为目录路径的属性。 请注意,安装程序将许多标准属性设置为系统文件夹路径。 有关设置为系统文件夹的属性的列表,请参阅属性参考

要指定目录目标位置,最佳方法是在安装包中创作 Directory 表,以提供本节中所述的正确位置。 如果需要在安装时更改目录位置,另请参阅以下章节:更改目录的目标位置

以下是 Directory 表的示例。

Directory Directory_Parent DefaultDir
TARGETDIR SourceDir
EXEDIR TARGETDIR 应用
DLLDIR EXEDIR 分箱
DesktopFolder TARGETDIR 桌面

 

Directory 表的每一行都指示源和目标中的一个目录。 例如,假设安装包位于 \\applications\source\。 由于第一行的 Directory_Parent 字段为 Null,因此此记录指示源和目标的根目录。 对于源,此目录的值由 DefaultDir 字段提供。 SourceDir 属性默认为安装包的位置。 因此,除非重写 SourceDir 属性,否则根源目录为 \\applications\source\。

第一条记录的 Directory 字段指示根目标目录的位置。 在这种情况下,TARGETDIR 属性的值指示此目录。 通常,TARGETDIR 属性的值是在命令行或通过用户界面设置的。 在这种情况下,假定 TARGETDIR 属性设置为 C:\Program Files\Target\。

对于第二条记录,Directory_Parent 字段不为 Null。 因此,此记录指示源和目标的非根目录。 对于非根源目录,Directory_Parent 段中所述记录所指示的源目录是父目录。 对于第二条记录,Directory_Parent 字段为 TARGETDIR。 如前所示,TARGETDIR 记录指示的源目录解析为 \\applications\source\。 因此,第二条记录指示的源目录为 \\applications\source\App\。

类似的过程也适用于目标目录。 第二条记录中所述的目标目录的父目录值是由 Directory_Parent 字段解析的目标目录。 同样,Directory_Parent字段包含值 TARGETDIR。 这表示解析为目标目录 C:\Program Files\Target\ 的第一条记录。 Directory 字段包含由作者定义属性,名为 EXEDIR。 如果设置了此属性,则其值会提供目录的完整路径。 因此,如果此属性设置为 C:\Data\Common\,则第二条记录指示的目标目录的值为 C:\Data\Common\。 如果未设置,目标目录将采用 DefaultDir 字段提供的名称。 在这种情况下,目标目录为 C:\Program Files\Target\App\。

相同的过程适用于第三条记录。 如果未设置 EXEDIR 和 DLLDIR,则目标目录为 C:\Program Files\Target\App\Bin,源目录为 \\applications\source\App\Bin\。

第四条记录使用 DesktopFolder 属性。 如果用户桌面的位置为 C:\Winnt\Profiles\User\Desktop\,则目标目录解析为 C:\Winnt\Profiles\User\Desktop\。 源目录解析为 \\applications\source\Desktop\。

在 Directory 表的 DefaultDir 列中可以使用另外两个语法功能。 对于非根源目录,在 DefaultDir 列中输入的句点 (.) 表示该目录应位于其父目录中,不能有子目录。 若要指定不同的源目录路径和目标目录路径,请使用冒号分隔 DefaultDir 列中的目标路径和源路径,如下所示:[目标路径]:[源路径]。 这些功能可以一起使用,以将级别添加到单个目录的源路径或目标路径。 请参阅 Directory 表的以下示例。

Directory Directory_Parent DefaultDir
TARGETDIR SourceDir
MyAppDir TARGETDIR MyApp
BinDir MyAppDir 分箱
Binx86Dir BinDir .:x86
BinAlphaDir BinDir .:Alpha

 

MyAppDir、BinDir、Binx86Dir 和 BinAlphaDir 行的源路径和目标路径解析方式如下。

记录 目标路径 源路径
MyAppDir: [TARGETDIR]MyApp [SourceDir]MyApp
BinDir: [TARGETDIR]MyApp\Bin [SourceDir]MyApp\Bin
Binx86Dir: [TARGETDIR]MyApp\Bin [SourceDir]MyApp\Bin\x86
BinAlphaDir: [TARGETDIR]MyApp\Bin [SourceDir]MyApp\Bin\Alpha

 

注意

Windows Installer 不支持 Alpha 平台。