Session.FeatureRequestState プロパティ

FeatureRequestState プロパティは Session オブジェクトの読み取り/書き込みプロパティです。 使用すると、機能に関する現在のアクション状態を取得、または機能とそのサブ機能に関するアクションの変更を要求できます。 機能は Feature テーブルで名前を付ける必要があります。 機能に関するアクション状態への変更が要求された場合は、変更された機能に関するすべてのコンポーネントのアクション状態も変更される場合があります。 複数の機能によって共有されるコンポーネントのアクション状態は、新しい機能のアクション状態に基づいて適宜変更されます (「解説」を参照)。 また、FeatureRequestState プロパティを使用して、特定の機能名ではなくキーワード「ALL」を指定してすべての機能を一括構成できます。

このプロパティは読み取り/書き込み可能です。

構文

propVal = Session.FeatureRequestState
Session.FeatureRequestState = propVal 

プロパティ値

構成する機能の名前を指定する際に必要な文字列。 すべての機能を目的に沿った要求の状態に設定するには、予約済みの大文字/小文字を区別しない単語「ALL」を使用します。

解説

FeatureRequestState を呼び出す前に、SetInstallLevel メソッドを呼び出す必要があります。

機能に関する現在の状態が要求されている場合、FeatureRequestState プロパティは次のいずれかの値を返します。

選択状態の名前 説明
msiInstallStateUnknown = -1 この機能に対してアクションは実行されません。 これは null に相当します。
msiInstallStateAdvertised =1 機能はアドバタイズされます。
msiInstallStateAbsent = 2 機能は削除されます。
msiInstallStateLocal = 3 機能は run-local としてインストールされます。
msiInstallStateSource = 4 機能は run-from-source としてインストールされます。
msiInstallStateDefault = 5 機能は、機能に関する現在のアクション状態で再インストールされます。

 

たとえば、次は「MyFeature」に関する現在の状態を VBScript カスタム アクションから取得します。

Dim iRequestState
iRequestState = Session.FeatureRequestState("MyFeature")

機能の状態が構成されている場合は、FeatureRequestState プロパティを次のいずれかの値に設定する必要があります。

選択状態の名前 説明
msiInstallStateAdvertised = 1 機能をアドバタイズします。
msiInstallStateAbsent = 2 機能を削除します。
msiInstallStateLocal = 3 機能を run-local としてインストールします。
msiInstallStateSource = 4 機能を run-from-source としてインストールします。

 

たとえば、次は「MyFeature」のインストール先である VBScript カスタム アクションから、コンピューター上でローカルで実行するように要求します。

Session.FeatureRequestState("MyFeature")=3

FeatureRequestState が呼び出されると、インストーラーは指定された機能に関連付けられている各コンポーネントのアクション状態を、可能な限り最適な状態に設定するように試します。 ただし、要求を完全には反映できない際の一般的な状況があります。 たとえば機能が FeatureComponents テーブルを介して Component A と Component B のコンポーネント 2 つに関連付けられていて、Component A に msidbComponentAttributesLocalOnly 属性が、Component B に msidbComponentAttributesSourceOnly 属性がそれぞれある場合です。 この場合、FeatureRequestState が msiInstallStateLocal または msiInstallStateSource の要求された状態で呼び出されると、この要求は両方のコンポーネントに対して反映できません。 この場合は、Component A を msiInstallStateLocal に、Component B を msiInstallStateSource にそれぞれ設定すると、両方のコンポーネントを有効にできます。

複数の機能が 1 つのコンポーネントにリンクされている場合、そのコンポーネントの最終的なアクションの状態は次のように決定されます。1 つ以上の機能がコンポーネントをローカルにインストールするように要求している場合は、msiInstallStateLocal がインストールされます。 1 つ以上の機能がコンポーネントをソース メディアから実行するように要求している場合は、msiInstallStateSource がインストールされます。 1 つ以上の機能がコンポーネントの削除を要求している場合、アクションの状態は msiInstallStateAbsent になります。 インストール用に機能を選択する方法に関する詳細については、「機能」のテーブルを参照してください。

プロパティが失敗した場合は、LastErrorRecord メソッドを使用して拡張エラー情報を取得できます。

必要条件

要件
バージョン
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 インストーラー
[DLL]
Msi.dll
IID
IID_ISession が 000C109E-0000-0000-C000-000000000046 として定義されている

こちらもご覧ください

Session

機能