MsiGetFeatureValidStatesA 関数 (msiquery.h)
MsiGetFeatureValidStates 関数は、有効なインストール状態を返します。
構文
UINT MsiGetFeatureValidStatesA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szFeature,
[out] LPDWORD lpInstallStates
);
パラメーター
[in] hInstall
DLL カスタム アクションに対して提供されるインストール、または MsiOpenPackage、MsiOpenPackageEx、または MsiOpenProduct を使用して取得されたインストールを処理します。
[in] szFeature
機能名を指定します。
[out] lpInstallStates
有効なインストール状態を保持する場所を受け取ります。 インストーラーは、有効なインストール状態ごとに pInstallState を次の値の組み合わせに設定します。 このパラメーターは null にすることはできません。
戻り値
MsiGetFeatureValidStates 関数は、次の値を返します。
注釈
「プログラムからのデータベース関数の呼び出し」を参照してください。
MsiGetFeatureValidStates 関数は、コンポーネントの現在インストールされている状態を考慮せずに、指定された機能にリンクされているすべてのコンポーネントに対してクエリを実行することで、状態の有効性を判断します。
機能がとりうる有効な状態は、次のように判断されます。
- 機能にコンポーネントが含まれていない場合、INSTALLSTATE_LOCAL と INSTALLSTATE_SOURCE の両方がその機能の有効な状態です。
- 機能の少なくとも 1 つのコンポーネントに msidbComponentAttributesLocalOnly または msidbComponentAttributesOptional の属性がある場合、INSTALLSTATE_LOCAL がその機能の有効な状態です。
- 機能の少なくとも 1 つのコンポーネントに msidbComponentAttributesSourceOnly または msidbComponentAttributesOptional の属性がある場合、INSTALLSTATE_SOURCE がその機能の有効な状態です。
- フィーチャーに属するコンポーネントのファイルに修正プログラムが適用されている場合、または圧縮されたソースからのファイルがある場合、INSTALLSTATE_SOURCEはフィーチャーの有効な状態として含まれません。
- 機能がアドバタイズを許可しない場合 (msidbFeatureAttributesDisallowAdvertise)、または機能にアドバタイズのためのプラットフォーム サポートが必要で (msidbFeatureAttributesNoUnsupportedAdvertise)、プラットフォームがそれをサポートしていない場合、INSTALLSTATE_ADVERTISE は有効な状態ではありません。
- 機能の属性に msidbFeatureAttributesUIDisallowAbsent が含まれていない場合、INSTALLSTATE_ABSENT がその機能の有効な状態です。
- 親機能に従うようにマークされた子機能 (msidbFeatureAttributesFollowParent) の有効な状態は、親機能のアクションまたはインストール状態に基づきます。
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);
Feature1 に値 0 (ローカル優先) の属性があり、Feature1 に値 0 (ローカルのみ) の属性を持つ 1 つのコンポーネントがある場合、呼び出し後の dwValidStates の値は 14 です。 これは、INSTALLSTATE_LOCAL、INSTALLSTATE_ABSENT、およびINSTALLSTATE_ADVERTISEDが Feature1 の有効な状態であることを示します。 local がこの機能の有効な状態である場合、次の条件ステートメントは True に評価されます。
( ( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) == ( 1 << INSTALLSTATE_LOCAL ) )
関数が失敗した場合は、 MsiGetLastErrorRecord を使用して拡張エラー情報を取得できます。
注意
msiquery.h ヘッダーは、MSIGetFeatureValidStates をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー |
対象プラットフォーム | Windows |
ヘッダー | msiquery.h |
Library | Msi.lib |
[DLL] | Msi.dll |