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 にすることはできません。

10 進値 意味
2
INSTALLSTATE_ADVERTISED
この機能はアドバタイズできます。
4
INSTALLSTATE_ABSENT
この機能は存在しない可能性があります。
8
INSTALLSTATE_LOCAL
この機能は、ローカル ドライブにインストールできます。
16
INSTALLSTATE_SOURCE
この機能は、ソース、CD-ROM、またはネットワークから実行するように構成できます。
32
INSTALLSTATE_DEFAULT
この機能は、既定の場所 (ローカルまたはソース) を使用するように構成できます。

戻り値

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 を呼び出した後、条件付きステートメントを使用して、機能の有効なインストール状態をテストできます。 たとえば、 次に示す MsiGetFeatureValidStates の呼び出しでは、Feature1 のインストール状態が取得されます。
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

こちらもご覧ください

インストーラーの選択関数

Windows インストーラー関数の引数として Null を渡す