Session.FeatureRequestState 属性

FeatureRequestState 属性是 Session 对象的读写属性。 它可用于获取功能的当前操作状态,或请求更改功能及其子功能的操作。 必须在功能表中命名该功能。 如果请求更改功能的操作状态,则更改的功能的所有组件的操作状态也可能发生更改。 多个功能共享的组件的操作状态将根据新功能操作状态进行适当更改(请参阅“备注”)。 FeatureRequestState 属性还可以通过指定关键字 ALL(而不是特定功能名称)来一次性配置全部功能。

此属性是可读写的。

语法

propVal = Session.FeatureRequestState
Session.FeatureRequestState = propVal 

属性值

指定要配置的功能名称的必需字符串。 若要将所有功能设置为所需的请求状态,请使用不区分大小写的保留字:ALL。

备注

在调用 FeatureRequestState 之前,必须调用 SetInstallLevel 方法。

如果正在请求功能的当前状态,FeatureRequestState 属性将返回以下值之一。

选择状态名称 含义
msiInstallStateUnknown = -1 不对功能执行任何操作。 这相当于 Null。
msiInstallStateAdvertised =1 要播发的功能。
msiInstallStateAbsent = 2 要移除的功能。
msiInstallStateLocal = 3 功能将安装为在本地运行。
msiInstallStateSource = 4 功能将安装为从源运行。
msiInstallStateDefault = 5 功能将使用功能的当前操作状态重新安装。

 

例如,使用以下代码,从 VBScript 自定义操作获取“MyFeature”的当前状态。

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

如果正在配置功能的状态,则 FeatureRequestState 属性应设置为以下值之一。

选择状态名称 含义
msiInstallStateAdvertised = 1 播发功能。
msiInstallStateAbsent = 2 移除功能。
msiInstallStateLocal = 3 将功能安装为在本地运行。
msiInstallStateSource = 4 将功能安装为从源运行。

 

例如,使用以下代码,从 VBScript 自定义操作请求将“MyFeature”安装为在计算机上本地运行。

Session.FeatureRequestState("MyFeature")=3

调用 FeatureRequestState 时,安装程序会尝试尽可能将绑定到指定功能的每个组件的操作状态设置为指定状态。 然而,在一些常见情况下,请求无法完全得到满足。 例如,如果某个功能通过 FeatureComponents 表绑定到两个组件,即组件 A 和组件 B,而组件 A 具有 msidbComponentAttributesLocalOnly 属性,组件 B 具有 msidbComponentAttributesSourceOnly 属性。 在这种情况下,如果调用 FeatureRequestState 时请求的状态为 msiInstallStateLocal 或 msiInstallStateSource,则两个组件都无法接受该请求。 在这种情况下,可以将组件 A 设置为 msiInstallStateLocal,将组件 B 设置为 msiInstallStateSource 来打开这两个组件。

如果多个功能链接到单个组件,则确定该组件的最终操作状态如下:如果至少有一项功能需要在本地安装组件,则会安装 msiInstallStateLocal。 如果至少有一项功能需要从源媒体运行组件,则会安装 msiInstallStateSource。 如果至少有一项功能需要移除组件,则操作状态为 msiInstallStateAbsent。 有关如何选择功能进行安装的详细信息,请参阅功能表。

如果该属性失败,可以使用 LastErrorRecord 方法获取详细的错误信息。

要求

要求
版本
Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer
DLL
Msi.dll
IID
IID_ISession 定义为 000C109E-0000-0000-C000-000000000046

另请参阅

会话

功能