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 |
必須。 結果を格納するプロパティの名前。 このプロパティは、Command 要素の子である、InstallConditions 要素の下にあるテストから参照できます。 詳細については、「<Commands> 要素」をご覧ください。 |
Name |
必須。 チェックするアセンブリの完全修飾名。 |
PublicKeyToken |
必須。 この厳密な名前を持つアセンブリに関連付けられている公開キーの省略形。 GAC に格納されているすべてのアセンブリは、名前、バージョン、および公開キーを持っている必要があります。 |
Version |
必須。 アセンブリのバージョン。 バージョン番号の形式は、<"メジャー バージョン">.<"マイナー バージョン">.<"ビルド バージョン">.<"リビジョン バージョン"> です。 |
Language |
省略可能。 ローカライズされたアセンブリの言語。 既定値は neutral です。 |
ProcessorArchitecture |
省略可能。 このインストールの対象となるコンピューター プロセッサ。 既定値は msil です。 |
ExternalCheck
この要素は、InstallChecks 要素の省略可能な子要素です。 ExternalCheck の各インスタンスについて、ブートストラップは、指定された外部プログラムを別のプロセスで実行し、Property によって示されるプロパティにその終了コードを格納します。 ExternalCheck は、複雑な依存関係のチェックを実装する場合や、コンポーネントの存在を確認する唯一の方法がインスタンス化である場合に便利です。
ExternalCheck には要素は含まれず、次の属性があります。
| 属性 | 説明 |
|---|---|
Property |
必須。 結果を格納するプロパティの名前。 このプロパティは、Command 要素の子である、InstallConditions 要素の下にあるテストから参照できます。 詳細については、「<Commands> 要素」をご覧ください。 |
PackageFile |
必須。 実行する外部プログラム。 プログラムは、セットアップ配布パッケージの一部である必要があります。 |
Arguments |
省略可能。 PackageFile によって指定された実行可能ファイルにコマンドライン引数を渡します。 |
FileCheck
この要素は、InstallChecks 要素の省略可能な子要素です。 FileCheck の各インスタンスについて、ブートストラップは、指定されたファイルが存在するかどうかを判断し、そのファイルのバージョン番号を返します。 ファイルにバージョン番号がない場合、ブートストラップは Property によって指定されたプロパティを 0 に設定します。 ファイルが存在しない場合、Property はどのような値にも設定されません。
FileCheck には要素は含まれず、次の属性があります。
| 属性 | 説明 |
|---|---|
Property |
必須。 結果を格納するプロパティの名前。 このプロパティは、Command 要素の子である、InstallConditions 要素の下にあるテストから参照できます。 詳細については、「<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 インストーラーのインストールが完了まで実行したかどうかを確認します。 プロパティ値は、そのインストールされる製品の状態に応じて設定されます。 正の値は、製品がインストールされていることを示します。0 または -1 は、インストールされていないことを示します。 (詳細については、Windows インストーラー SDK 関数 MsiQueryFeatureState を参照してください)。 コンピューターに Windows インストーラーがインストールされていない場合、Property は設定されません。
MsiProductCheck には要素は含まれず、次の属性があります。
| 属性 | 説明 |
|---|---|
Property |
必須。 結果を格納するプロパティの名前。 このプロパティは、Command 要素の子である、InstallConditions 要素の下にあるテストから参照できます。 詳細については、「<Commands> 要素」をご覧ください。 |
Product |
必須。 インストールされる製品の GUID。 |
Feature |
省略可能。 インストールされるアプリケーションの特定の機能の GUID。 |
RegistryCheck
この要素は、InstallChecks 要素の省略可能な子要素です。 RegistryCheck の各インスタンスについて、ブートストラップは、指定されたレジストリ キーが存在するかどうか、または示された値を持つかどうかを確認します。
RegistryCheck には要素は含まれず、次の属性があります。
| 属性 | 説明 |
|---|---|
Property |
必須。 結果を格納するプロパティの名前。 このプロパティは、Command 要素の子である、InstallConditions 要素の下にあるテストから参照できます。 詳細については、「<Commands> 要素」をご覧ください。 |
Key |
必須。 レジストリ キーの名前。 |
Value |
省略可能。 取得するレジストリ値の名前。 既定では、既定値のテキストが返されます。 Value は、文字列または DWORD のいずれかである必要があります。 |
RegistryFileCheck
この要素は、InstallChecks 要素の省略可能な子要素です。 RegistryFileCheck の各インスタンスについて、ブートストラップは、指定されたファイルのバージョンを取得します。最初に、指定したレジストリ キーからファイル パスを取得しようとします。 これは、レジストリで値として指定されているディレクトリでファイルを検索する場合に特に便利です。
RegistryFileCheck には要素は含まれず、次の属性があります。
| 属性 | 説明 |
|---|---|
Property |
必須。 結果を格納するプロパティの名前。 このプロパティは、Command 要素の子である、InstallConditions 要素の下にあるテストから参照できます。 詳細については、「<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 要素を次の表に示します。
| プロパティ | Notes | 指定できる値 |
|---|---|---|
Version9X |
Windows 9X オペレーティング システムのバージョン番号。 | 4.10 = Windows 98 |
VersionNT |
Windows オペレーティング システムのバージョン番号。 | Major.Minor.ServicePack |
VersionNT64 |
64 ビット Windows オペレーティング システムのバージョン番号。 | Major.Minor.ServicePack。 |
VersionMsi |
Windows インストーラー サービスのバージョン番号。 | 2.0 = Windows インストーラー 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"/>
Note
BeforeInstallChecks 属性は、Visual Studio 2019 Update 9 リリース以降でサポートされます。