共用方式為


<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,這會將搜尋限制為 SpecialFolderSearchPath 所指定的最上層資料夾。

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 必須是 String 或 DWORD。

RegistryFileCheck

此元素是 InstallChecks 的選用子元素。 針對 RegistryFileCheck 的每個執行個體,啟動載入器會擷取所指定檔案的版本,首先嘗試從指定的登錄機碼擷取檔案的路徑。 如果您想要查詢目錄中哪個檔案指定為登錄中的一值,這樣做特別有用。

RegistryFileCheck 不包含任何元素,並具有下列屬性。

屬性 描述
Property 必要。 要儲存結果的屬性名稱。 您可以從 InstallConditions 元素下方的測試參考這個屬性,此元素是 Command 元素的子系。 如需詳細資訊,請參閱 <Commands> 元素
Key 必要。 登錄機碼的名稱。 除非設定了 File 屬性,否則其值會解譯為檔案的路徑。 如果這個機碼不存在,則不會設定 Property
Value 選擇性。 要擷取的登錄值名稱。 預設為傳回預設值的文字。 Value 必須是 String。
FileName 選擇性。 檔案的名稱。 如果已指定,則從登錄機碼取得的值會假設為目錄路徑,且此名稱會附加至其中。 如果未指定,則從登錄傳回的值會假設為檔案的完整路徑。
SearchDepth 選擇性。 在子資料夾中搜尋具名檔案的深度。 搜尋是深度優先。 預設值為 0,這會將搜尋限制為登錄機碼值所指定的最上層資料夾。

備註

雖然 InstallChecks 下方的元素會定義要執行的測試,但不會執行這些測試。 若要執行這些測試,您必須在 Commands 元素下方建立 Command 元素。

範例

下列程式碼範例示範 InstallChecks 元素,因為其用於 .NET Framework 的產品檔中。

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

InstallConditions

評估 InstallChecks 時,其會產生屬性。 接著 InstallConditions 會使用這些屬性來判斷套件是否應該安裝、略過或失敗。 下表列出 InstallConditions

Condition 描述
FailIf 如果有任何 FailIf 條件評估為 true,則套件將會失敗。 將不會評估其餘條件。
BypassIf 如果有任何 BypassIf 條件評估為 true,則會略過套件。 將不會評估其餘條件。

預先定義的屬性

下表列出 BypassIfFailIf 元素:

屬性 備註 可能的值
Version9X Windows 9X 作業系統的版本號碼。 4.10 = Windows 98
VersionNT Windows 作業系統的版本號碼。 Major.Minor.ServicePack
VersionNT64 64 位 Windows 作業系統的版本號碼。 Major.Minor.ServicePack。
VersionMsi Windows Installer 服務的版本號碼。 2.0 = Windows Installer 2.0
AdminUser 指定使用者是否對 Windows NT 作業系統具有系統管理員權限。 0 = 沒有系統管理員權限

1 = 系統管理員權限

例如,若要封鎖執行 Windows 8 之電腦上的安裝,請使用下列程式代碼:

    <!-- Block install on Windows 8 -->
    <FailIf Property="VersionNT64" Compare="VersionLessThan" Value="6.2" String="InvalidPlatform"/>

若要在符合 FailIf 或 BypassIf 條件時跳過執行安裝檢查,請使用 BeforeInstallChecks 屬性。 例如:

    <!-- Block install and do not evaluate install checks if user does not have admin privileges -->
    <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired" BeforeInstallChecks="true"/>

注意

從 Visual Studio 2019 Update 9 版本開始支援 BeforeInstallChecks 屬性。

另請參閱