<InstallChecks> 元素(引导程序)

InstallChecks 元素支持对本地计算机进行多种测试,以确保已经为应用程序安装了所有适当的必备组件。

<InstallChecks>
    <AssemblyCheck 
        Property
        Name
        PublicKeyToken
        Version
        Language
        ProcessorArchitecture
    />
    <RegistryCheck
        Property
        Key
        Value
    />
    <ExternalCheck 
        PackageFile
        Property
        Arguments
    />
    <FileCheck 
        Property
        FileName
        SearchPath
        SpecialFolder
        SearchDepth
    />
    <MsiProductCheck 
        Property
        Product
        Feature
    />
    <RegistryFileCheck 
        Property
        Key
        Value
        FileName
        SearchDepth
    />
</InstallChecks>

AssemblyCheck

此元素是 InstallChecks 的可选子元素。 对于 AssemblyCheck 的每个实例,引导程序都将确保该元素标识的程序集存在于全局程序集缓存 (GAC) 中。 它不包含任何元素,但具有下列特性。

特性

说明

Property

必选。 用于存储结果的属性的名称。 可以从 InstallConditions 元素下的测试引用此属性,该元素是 Command 元素的子元素。 有关更多信息,请参见 <Commands> 元素(引导程序)

Name

必选。 要检查的程序集的完全限定名。

PublicKeyToken

必选。 与此强名称程序集关联的公钥的缩写形式。 存储在 GAC 中的所有程序集都必须具有名称、版本和公钥。

Version

必选。 程序集的版本。

版本号的格式为:<主版本>.<次版本>.<内部版本>.<修订版本>。

Language

可选。 本地化程序集的语言。 默认值为 neutral。

ProcessorArchitecture

可选。 此安装的目标计算机处理器。 默认值为 msil。

ExternalCheck

此元素是 InstallChecks 的可选子元素。 对于 ExternalCheck 的每个实例,引导程序都将在单独的进程中执行指定的外部程序,并将其退出代码存储在 Property 所指示的属性中。 ExternalCheck 在下列情况下非常有用:当要实现复杂的依赖项检查时,或者当检查组件是否存在的唯一方法是对其进行实例化时。

ExternalCheck 不包含任何元素,但具有下列特性。

特性

说明

Property

必选。 用于存储结果的属性的名称。 可以从 InstallConditions 元素下的测试引用此属性,该元素是 Command 元素的子元素。 有关更多信息,请参见 <Commands> 元素(引导程序)

PackageFile

必选。 要执行的外部程序。 该程序必须是安装程序分发包的一部分。

Arguments

可选。 为 PackageFile 指定的可执行文件提供命令行参数。

FileCheck

此元素是 InstallChecks 的可选子元素。 对于 FileCheck 的每个实例,引导程序都将确定指定的文件是否存在,并返回该文件的版本号。 如果文件没有版本号,则引导程序会将 Property 指定的属性设置为 0。 如果文件不存在,则 Property 不会设置为任何值。

FileCheck 不包含任何元素,但具有下列特性。

特性

说明

Property

必选。 用于存储结果的属性的名称。 可以从 InstallConditions 元素下的测试引用此属性,该元素是 Command 元素的子元素。 有关更多信息,请参见 <Commands> 元素(引导程序)

FileName

必选。 要查找的文件的名称。

SearchPath

必选。 文件的查找位置(磁盘或文件夹)。 如果分配了 SpecialFolder,则此位置必须是相对路径;否则,必须是绝对路径。

SpecialFolder

可选。 对 Windows 或 ClickOnce 具有特殊意义的文件夹。 默认情况下将 SearchPath 解释为绝对路径。 有效值包括:

AppDataFolder。 此 ClickOnce 应用程序的应用程序数据文件夹;特定于当前用户。

CommonAppDataFolder。 供所有用户使用的应用程序数据文件夹。

CommonFilesFolder。 当前用户的 Common Files 文件夹。

LocalDataAppFolder。 非漫游应用程序的数据文件夹。

ProgramFilesFolder。 32 位应用程序的标准 Program Files 文件夹。

StartUpFolder。 包含系统启动时启动的所有应用程序的文件夹。

SystemFolder。 包含 32 位系统 DLL 的文件夹。

WindowsFolder。 包含 Windows 系统安装的文件夹。

WindowsVolume。 包含 Windows 系统安装的驱动器或分区。

SearchDepth

可选。 在子文件夹中搜索指定文件时可达到的深度。 该搜索为深度优先。 默认值为 0,这会将搜索范围限定为 SpecialFolder 和 SearchPath 指定的顶级文件夹。

MsiProductCheck

此元素是 InstallChecks 的可选子元素。 对于 MsiProductCheck 的每个实例,引导程序都会进行相应的检查,以确定指定的 Microsoft Windows Installer 安装是否已运行完毕。 将根据该安装产品的状态来设置属性值。 正值指示产品已安装,0 或 -1 指示产品未安装。 (有关更多信息,请参见 Windows Installer SDK 函数 MsiQueryFeatureState。). 如果计算机上没有安装 Windows Installer,将不会设置 Property。

MsiProductCheck 不包含任何元素,但具有下列特性。

特性

说明

Property

必选。 用于存储结果的属性的名称。 可以从 InstallConditions 元素下的测试引用此属性,该元素是 Command 元素的子元素。 有关更多信息,请参见 <Commands> 元素(引导程序)

Product

必选。 所安装产品的 GUID。

Feature

可选。 所安装应用程序的特定功能的 GUID。

RegistryCheck

此元素是 InstallChecks 的可选子元素。 对于 RegistryCheck 的每个实例,引导程序都会进行相应的检查,以确定指定的注册表项是否存在,或者它是否具有指示的值。

RegistryCheck 不包含任何元素,但具有下列特性。

特性

说明

Property

必选。 用于存储结果的属性的名称。 可以从 InstallConditions 元素下的测试引用此属性,该元素是 Command 元素的子元素。 有关更多信息,请参见 <Commands> 元素(引导程序)

Key

必选。 注册表项的名称。

Value

可选。 要检索的注册表值的名称。 默认设置为返回默认值的文本。 Value 必须是字符串或 DWORD。

RegistryFileCheck

此元素是 InstallChecks 的可选子元素。 对于 RegistryFileCheck 的每个实例,引导程序都将检索指定文件的版本,并首先尝试从指定的注册表项检索该文件的路径。 当要在指定为注册表中的值的某个目录中查找文件时,这一点尤其有用。

RegistryFileCheck 不包含任何元素,但具有下列特性。

特性

说明

Property

必选。 用于存储结果的属性的名称。 可以从 InstallConditions 元素下的测试引用此属性,该元素是 Command 元素的子元素。 有关更多信息,请参见 <Commands> 元素(引导程序)

Key

必选。 注册表项的名称。 除非设置了 File 特性,否则它的值将解释为文件的路径。 如果此项不存在,则不会设置 Property。

Value

可选。 要检索的注册表值的名称。 默认设置为返回默认值的文本。 Value 必须是字符串。

FileName

可选。 文件的名称。 如果已指定,则假定从注册表项中获取的值为目录路径,并将此名称追加到该路径的后面。 如果未指定,则假定从注册表返回的值为文件的完整路径。

SearchDepth

可选。 在子文件夹中搜索指定文件时可达到的深度。 该搜索为深度优先。 默认值为 0,这会将搜索范围限定为该注册表项的值指定的顶级文件夹。

备注

虽然 InstallChecks 下的元素定义了要运行的测试,但它们并不执行这些测试。 要执行这些测试,必须在 Commands 元素下创建 Command 元素。

示例

下面的代码示例演示在 .NET Framework 的产品文件中使用的 InstallChecks 元素。

<InstallChecks>
    <ExternalCheck Property="DotNetInstalled" PackageFile="dotnetchk.exe" />
    <RegistryCheck Property="IEVersion" Key="HKLM\Software\Microsoft\Internet Explorer" Value="Version" />
</InstallChecks>

InstallConditions

计算 InstallChecks 时,它们将生成一些属性。 接下来,InstallConditions 将使用这些属性确定是应安装数据包、绕过数据包还是令其安装失败。 下表列出了 InstallConditions:

FailIf

如果有任何 FailIf 条件计算为 true,数据包将失败。 同时将不再计算剩余的条件。

BypassIf

如果有任何 BypassIf 条件计算为 true,将绕过数据包。 同时将不再计算剩余的条件。

预定义属性

下表列出了 BypassIf 和 FailIf 元素:

Property

注释

可能的值

Version9X

Windows 9X 操作系统的版本号。

4.10 = Windows 98

VersionNT

基于 Windows NT 的操作系统的版本号。

Major.Minor.ServicePack

5.0 = Windows 2000

5.1.0 = Windows XP

5.1.2 = Windows XP Professional SP2

5.2.0 = Windows Server 2003

VersionNT64

基于 64 位 Windows NT 的操作系统的版本号。

与上述内容相同。

VersionMsi

Windows Installer 服务的版本号。

2.0 = Windows Installer 2.0

AdminUser

指定用户在基于 Windows NT 的操作系统上是否具有管理员特权。

0 = 无管理员特权

1 = 管理员特权

例如,若要在运行 Windows 95 的计算机上阻止安装,请使用诸如以下内容的代码:

<!-- Block install on Windows 95 -->
    <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatform"/>

请参见

参考

<Commands> 元素(引导程序)

产品和包架构引用