功能數據表
功能數據表會定義特徵的邏輯樹狀結構,並包含下表所示的數據行。
列 | 類型 | 鑰匙 | 空 |
---|---|---|---|
特徵 | 識別碼 | Y | N |
Feature_Parent | 識別碼 | N | Y |
標題 | 文字 | N | Y |
描述 | 文字 | N | Y |
顯示 | 整數 | N | Y |
水準 | 整數 | N | N |
目錄_ | 識別碼 | N | Y |
屬性 | 整數 | N | N |
列
-
功能
-
用來識別特定功能記錄的主鍵。 此欄位中的值不能超過長度上限 38 個字元。
-
Feature_Parent
-
相同數據表中父記錄的選擇性索引鍵。
索引鍵指向 [功能] 資料行。 如果未選取父功能,則不會安裝此功能。 此欄位中的 Null 值表示這項功能沒有父代,而且是根專案。 Feature_Parent數據行不得等於相同記錄的Feature數據行。
注意
任何特徵的最大深度為 16。 如果超過此最大深度的功能存在,則 錯誤 2701 結果。
-
標題
-
識別功能的簡短文字字串。
此字串會依 選取對話框的 SelectionTree 控件 來列為專案。
-
描述
-
描述功能之文字的較長字串。
-
顯示
-
此欄位中的數位會指定要在使用者介面中顯示的功能順序。
值也會決定功能一開始是否顯示展開或折疊。 如果值為 null 或 0(零),則不會顯示記錄。
- 如果值是奇數,則功能節點一開始會展開。
- 如果值是偶數,則功能節點一開始會折疊。
-
層級
-
這項功能的初始安裝層級。 處理 條件數據表 可以修改層級值。
安裝層級 0 (零) 會停用專案,並防止它顯示。 任何安裝期間都不會安裝安裝層級為 0(零)的功能,包括系統管理安裝。 如需詳細資訊,請參閱本主題一節中的資訊。
-
Directory_
-
Directory_數據行會指定 選取對話框可以設定的目錄名稱。
由於此欄位是目錄資料表 中索引鍵,因此指定的目錄必須列在目錄資料表的第一個數據行中。 您必須在此數據行中輸入 Public Property,才能設定目錄,並在 [選取對話框]上顯示 [流覽] 按鈕。
-
屬性
-
未安裝之功能的遠端執行選項,且未使用下列任何屬性提出任何功能狀態要求。
- ADDLOCAL 屬性
- ADDSOURCE 屬性
- ADDDEFAULT 屬性
- COMPADDLOCAL 屬性
- COMPADDSOURCE 屬性
- FILEADDLOCAL 屬性
- FILEADDSOURCE 屬性
- REMOVE 屬性
- REINSTALL 屬性
- ADVERTISE 屬性
將指定的位新增至此數據行的總值,以包含遠端執行選項。
- 如果此欄位空白,則值預設為 0 (零),msidbFeatureAttributesFavorLocal。
- 如果功能安裝層級為0(零),或大於或等於目前的安裝層級,則不會變更功能狀態。
名字 十進位 十六進位 描述 msidbFeatureAttributesFavorLocal 0 0x0000 未標示要從來源安裝之此功能的元件會安裝在本機。 由兩個或多個功能共用的元件,其中一些元件會設定為 msidbFeatureAttributesFavorLocal,有些則設定為 msidbFeatureAttributesFavorSource。 元件數據表 中標示為 msidbComponentAttributesSourceOnly 的元件一律會從來源 CD/server 執行。 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 位會使用 ADVERTISE 屬性未列出的功能。 msidbFeatureAttributesFavorSource 1 0x0001 這項功能未標示為本機安裝的元件會安裝為從來源 CD-ROM 或伺服器執行。 由兩個或多個功能共用的元件,其中有些元件會設定為 msidbFeatureAttributesFavorLocal,有些則設定為 msidbFeatureAttributesFavorSource,以在本機執行。 元件數據表 中標示為 msidbComponentAttributesLocalOnly 的元件一律會在本機安裝。 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 位會使用 ADVERTISE 屬性未列出的功能。 msidbFeatureAttributesFollowParent 2 0x0002 設定此屬性和功能的狀態與功能父系的狀態相同。 如果功能位於特徵樹狀結構的根目錄,則無法使用此選項。 省略此屬性,功能狀態會根據 msidbFeatureAttributesDisallowAdvertise 和 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 來決定。
若要保證子功能的狀態一律遵循其父系的狀態,即使子系和父系一開始設定為 SelectionTree 控件中不存在,您也必須在子功能的屬性中包含 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent。
請注意,如果您設定 msidbFeatureAttributesFollowParent 而不設定 msidbFeatureAttributesUIDisallowAbsent,安裝程式就無法強制子功能脫離不存在的狀態。 在此情況下,子功能只有在子系設定為不存在以外的專案時,才會符合父系的安裝狀態。
設定 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 以確保子功能遵循父功能的狀態。msidbFeatureAttributesFavorAdvertise 4 0x0004 設定此屬性,功能狀態為 [公告]。 如果 ADDDEFAULT 屬性列出此功能,則會忽略此位,並根據 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 決定功能狀態。 省略此屬性,功能狀態會根據 msidbFeatureAttributesDisallowAdvertise 和 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 來決定。 msidbFeatureAttributesDisallowAdvertise 8 0x0008 請注意,此位僅適用於 ADVERTISE 屬性所列出的功能。 設定這個屬性以防止功能被公告。
設定此屬性,如果列出的功能不是父系或子系,則會根據 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 安裝此功能。
為列出的功能父代設定此屬性,並安裝父代。
為列出的功能子系設定此屬性,而子系的狀態為 Absent。
省略此屬性,如果列出的功能不是父系或子系,則功能狀態為 [公告]。
省略這個屬性,如果列出的功能是父系或子系,則這兩個功能的狀態都是通告。msidbFeatureAttributesUIDisallowAbsent 16 0x0010 設定此屬性,而使用者介面不會顯示將功能狀態變更為 Absent 的選項。 設定此屬性會將功能強制安裝狀態,不論此功能是否顯示在UI中。 省略此屬性,而使用者介面會顯示將功能狀態變更為 Absent 的選項。
設定 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 以確保子功能遵循父功能的狀態。
設定此屬性不僅會影響UI,也會強制功能安裝狀態,不論此功能是否顯示在UI中。msidbFeatureAttributesNoUnsupportedAdvertise 32 0x0020 如果作系統殼層不支援 Windows Installer 描述項,則會停用此功能的此屬性和廣告。 省略此屬性,且不會停用廣告。 某些屬性彼此互斥。 試著在相同的功能上將這些屬性設定在一起,會導致安裝套件失敗,套件驗證。
- 請勿搭配 msidbFeatureAttributesFavorAdvertise 搭配 msidbFeatureAttributesDisallowAdvertise 使用。
- 請勿搭配 msidbFeatureAttributesNoUnsupportedAdvertise 與 msidbFeatureAttributesDisallowAdvertise 搭配使用。
- 請勿搭配 msidbFeatureAttributesFollowParent 搭配 msidbFeatureAttributesFavorSource 使用。
- 請注意,msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesFavorLocal 值互斥。 如果使用 msidbFeatureAttributesFollowParent 值,則會假設 msidbFeatureAttributesFavorLocal 值不存在。
請注意,如果已安裝子功能,也會安裝其父功能。 如果已安裝父功能,除非已設定其 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 屬性,否則其子功能不一定安裝。 這個父和子功能的安裝階層式關聯性也用於使用命令行屬性的 GUI 安裝和安裝。
言論
將數個額外的暫存數據行載入記憶體中,以供成本與使用者介面 (UI) 選取專案使用的計算時,新增至此數據表。
元件可以在兩個或多個功能或應用程式之間共用。 如果兩個或多個功能參考相同的元件,則如果選取任何相關聯的功能,則會選取該元件進行安裝。 這也是移除父功能時不會卸載子功能的原因。 如果子功能是由其他功能或應用程式所需的元件所組成,Windows Installer 不會移除子功能。
如需詳細資訊,請參閱 控制特徵選取狀態。
安裝層級:
- 對於任何安裝,都有一個定義的安裝層級,這是從 1 到 32,767 的整數值。 初始值是由 INSTALLLEVEL 屬性所決定,這個屬性是在 Property Table中設定。
- 只有在功能層級值小於或等於目前的安裝層級時,才會安裝功能。 您可以撰寫 UI,以便在安裝初始化時,安裝程式可讓使用者修改功能數據表中任何功能的安裝層級。 例如,作者可以定義代表特定安裝選項的安裝層級值,例如 自定義、一般或 Minimum,然後建立一個對話框來 使用 setInstallLevel ControlEvents,讓使用者選取其中一種狀態。
- 根據用戶選取的狀態,對話框會將安裝層級屬性設定為對應的值。 如果作者指派 一般 層級為 100,且使用者選取 一般,則只會安裝層級為 100 或更低層級的功能。 此外,自定義 選項可能會導致另一個對話框,其中包含 SelectionTree 控制件。 SelectionTree 控制項接著可讓使用者個別變更是否已安裝每項功能。
驗證
ICE03
ICE06
ICE10
ICE14
ICE21
ICE32
ICE41
ICE45
ICE47
ICE50
ICE57
ICE59
ICE62
ICE67
ICE79
ICE86
ICE94