<InstallChecks> 元素(ClickOnce 引导程序)

更新:2007 年 11 月

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

<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
        File
        SearchDepth
    />
</InstallChecks>

AssemblyCheck

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

属性

说明

Property

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

Name

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

PublicKeyToken

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

Version

必需。程序集的版本。

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

Language

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

ProcessorArchitecture

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

ExternalCheck

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

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

属性

说明

Property

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

PackageFile

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

Arguments

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

FileCheck

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

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

属性

说明

Property

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

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> 元素(ClickOnce 引导程序)

Product

必需。所安装产品的 GUID。

Feature

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

RegistryCheck

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

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

属性

说明

Property

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

Key

必需。注册表项的名称。

Value

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

RegistryFileCheck

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

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

属性

说明

Property

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

Key

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

Value

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

File

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

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:

InstallIf

所有的 InstallIf 条件都必须计算为 true 才能安装组件。如果有一个或多个 InstallIf 条件计算为 false,则将绕过组件。同时将不再计算其他条件。

FailIf

如果有任何 FailIf 条件计算为 true,数据包将失败。同时将不再计算剩余的条件。即使有一项或多项 InstallIf 检查为 true,数据包也将失败。

BypassIf

如果有任何 BypassIf 条件计算为 true,将绕过数据包。同时将不再计算剩余的条件。即使有一项或多项 InstallIf 检查为 true,也将绕过数据包。

预定义属性

引导程序将自动定义下列属性以供 InstallIf 使用。下表列出了 BypassIf 和 FailIf 元素:

属性

说明

可能的值

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 Win95 -->
    <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatform"/>

请参见

参考

<Commands> 元素(ClickOnce 引导程序)

产品和包架构引用