共用方式為


Session.FeatureRequestState 屬性

FeatureRequestState屬性是Session物件的讀寫屬性。 它可以用來取得功能目前的動作狀態,或要求功能動作及其子功能變更。 此功能必須在 Feature 資料表中命名。 如果要求變更功能動作狀態,則變更功能的所有元件動作狀態也可能會變更。 The action state of components shared by more than one feature will be changed as appropriate based on the new feature action state (see Remarks). FeatureRequestState屬性也可以藉由指定關鍵字 ALL 而非特定功能名稱,一次用來設定所有功能。

這是可讀寫的屬性。

Syntax

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 功能是使用功能目前的動作狀態重新安裝。

 

例如,下列會從 VBScript 自訂動作取得 「MyFeature」 的目前狀態。

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

如果設定功能的狀態, FeatureRequestState 屬性應設定為下列其中一個值。

選取狀態名稱 意義
msiInstallStateAdvertised = 1 公告功能。
msiInstallStateAbsent = 2 移除功能。
msiInstallStateLocal = 3 將功能安裝為 run-local。
msiInstallStateSource = 4 將功能安裝為 run-from-source。

 

例如,下列來自 VBScript 自訂動作的要求,該動作會安裝 「MyFeature」 以在本機電腦上執行。

Session.FeatureRequestState("MyFeature")=3

呼叫 FeatureRequestState 時,安裝程式會嘗試盡可能盡可能將系結至指定功能的每個元件動作狀態設定為指定的狀態。 不過,當無法完全接受要求時,有一些常見情況。 例如,如果功能系結至兩個元件:元件 A 和元件 B,則透過FeatureComponents資料表和元件 A 具有msidbComponentAttributesLocalOnly 屬性,而元件 B 具有 msidbComponentAttributesSourceOnly屬性。 在此情況下,如果使用 msiInstallStateLocal 或 msiInstallStateSource 的要求狀態呼叫 FeatureRequestState ,則這兩個元件都無法接受要求。 在此情況下,這兩個元件都可以使用元件 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-0000000000046

另請參閱

工作階段

功能