<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 必須是 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,則會略過套件。 將不會評估其餘條件。 |
預先定義的屬性
下表列出 BypassIf
和 FailIf
元素:
屬性 | 備註 | 可能的值 |
---|---|---|
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
屬性。