共用方式為


<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 的每個執行個體,啟動載入器 (Bootstrapper) 將會確認項目所識別的組件是否出現在全域組件快取 (Global Assembly Cache,GAC) 中。它不包含項目,而且具有下列屬性 (Attribute)。

屬性

描述

Property

必要項。要存放結果的屬性名稱。這個屬性可以從 InstallConditions 項目之下的測試加以參考,該項目為 Command 項目的子系。如需詳細資訊,請參閱 <Commands> 項目 (啟動載入器)

Name

必要項。要檢查之組件的完整名稱。

PublicKeyToken

必要項。與此強式名稱 (Strong Name) 組件相關聯之公開金鑰 (Public Key) 的縮寫格式。儲存在 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。目前使用者的通用檔案資料夾。

LocalDataAppFolder。非漫遊應用程式的資料資料夾。

ProgramFilesFolder。32 位元應用程式的標準程式檔案資料夾。

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 的每個執行個體,啟動載入器會檢查是否有指定的登錄機碼 (Registry Key),或者指出的值。

RegistryCheck 不包含項目,而且具有下列屬性。

屬性

描述

Property

必要項。要存放結果的屬性名稱。這個屬性可以從 InstallConditions 項目之下的測試加以參考,該項目為 Command 項目的子系。如需詳細資訊,請參閱 <Commands> 項目 (啟動載入器)

Key

必要項。登錄機碼的名稱。

Value

選擇項。所要擷取登錄值的名稱。預設值是傳回預設值的文字。Value 必須是 String 或 DWORD。

RegistryFileCheck

這個項目是 InstallChecks 的選擇性子項目。對於 RegistryFileCheck 的每個執行個體,啟動載入器會擷取指定檔案的版本,並先嘗試從指定的登錄機碼擷取檔案的路徑。如果要在指定為登錄值的目錄中尋找檔案,這個項目尤其有用。

RegistryFileCheck 不包含項目,而且具有下列屬性。

屬性

描述

Property

必要項。要存放結果的屬性名稱。這個屬性可以從 InstallConditions 項目之下的測試加以參考,該項目為 Command 項目的子系。如需詳細資訊,請參閱 <Commands> 項目 (啟動載入器)

Key

必要項。登錄機碼的名稱。除非有設定 File 屬性,否則其值都會解譯為檔案的路徑。如果沒有這個機碼,就不會設定 Property。

Value

選擇項。所要擷取登錄值的名稱。預設值是傳回預設值的文字。Value 必須是 String。

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 項目。

屬性

備註

可能的值

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> 項目 (啟動載入器)

產品和封裝結構描述參考