功能表

Feature 表定义功能的逻辑树状结构,包含下表中所示的列。

类型 密钥 Nullable
功能 Identifier Y N
Feature_Parent Identifier N Y
标题 文本 N Y
说明 文本 N Y
显示 整数 N Y
级别 整数 N N
Directory_ Identifier N Y
特性 整数 N N

 

Feature

用于标识特定功能记录的主键。 此字段中的值不得超过 38 个字符的最大长度。

Feature_Parent

同一表中父记录的可选键。

该键指向 Feature 列。 如果未选择父功能,则不会安装此功能。 此字段中的 null 值表示此功能没有父项,是根项。 Feature_Parent 列不得等于同一记录的 Feature 列。

注意

任何功能的最大深度为 16。 如果存在超过此最大深度的功能,则会导致错误 2701

 

Title

用于标识功能的较短文本字符串。

此字符串由选择对话框SelectionTree 控件列为项。

Description

用于描述功能的较长文本字符串。

这个可本地化的字符串由选择对话框Text 控件显示。

Display

此字段中的数字指定功能在用户界面中的显示顺序。

该值还确定功能最初显示时是展开的还是折叠的。 如果值为 null 或 0(零),则不显示该记录。

  • 如果值为奇数,则功能节点最初是展开的。
  • 如果值为偶数,则功能节点最初是折叠的。

Level

此功能的初始安装级别。 处理 Condition 表可以修改级别值。

安装级别为 0(零)将禁用该项并阻止其显示。 安装级别为 0(零)的功能在任何安装(包括管理安装)期间都不会安装。 有关详细信息,请参阅本主题的“备注”部分中的“安装级别”信息。

Directory_

Directory_ 列指定可由选择对话框配置的目录的名称。

由于此字段是 Directory 表中的键,因此指定的目录必须列在 Directory 表的第一列中。 必须在此列中输入公共属性,使目录可配置,并在选择对话框上显示“浏览”按钮。

Attributes

未安装且未使用以下任何属性发出功能状态请求的功能的远程执行选项。

将指示的位添加到此列的总值中,以包含远程执行选项。

  • 如果此字段为空,则值默认为 0(零),msidbFeatureAttributesFavorLocal。
  • 如果功能安装级别为 0(零)或者大于或等于当前安装级别,则不会对功能状态进行更改。
名称 小数 十六进制 说明
msidbFeatureAttributesFavorLocal 0 0x0000 未标记为从源安装此功能的组件将在本地安装。 如果某个组件由两个或多个功能共享,其中有些功能设置为 msidbFeatureAttributesFavorLocal,有些功能设置为 msidbFeatureAttributesFavorSource,则该组件将在本地安装。 Component 表中标记为 msidbComponentAttributesSourceOnly 的组件始终从源 CD/服务器运行。 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 位适用于未由 ADVERTISE 属性列出的功能。
msidbFeatureAttributesFavorSource 1 0x0001 未标记为本地安装的此功能的组件安装为从源 CD-ROM 或服务器运行。 如果某个组件由两个或多个功能共享,其中有些功能设置为 msidbFeatureAttributesFavorLocal,有些功能设置为 msidbFeatureAttributesFavorSource,则该组件将安装为在本地运行。 Component 表中标记为 msidbComponentAttributesLocalOnly 的组件始终在本地安装。 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 位适用于未由 ADVERTISE 属性列出的功能。
msidbFeatureAttributesFollowParent 2 0x0002 设置此属性,功能的状态与功能父项的状态相同。 如果功能位于功能树的根目录中,则不能使用此选项。 忽略此属性,根据 msidbFeatureAttributesDisallowAdvertise、msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 确定功能状态。
若要保证子功能的状态始终遵循其父功能的状态,即使子功能和父功能最初在 SelectionTree 控件中设置为不存在,也必须在子功能的属性中包含 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent。
请注意,如果在未设置 msidbFeatureAttributesUIDisallowAbsent 的情况下设置 msidbFeatureAttributesFollowParent,安装程序将无法强制子功能退出不存在状态。 在这种情况下,仅当子功能设置为“不存在”以外的其他选项时,子功能才与父功能的安装状态匹配。
设置 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent,以确保子功能遵循父功能的状态。
msidbFeatureAttributesFavorAdvertise 4 0x0004 设置此属性,功能状态为 Advertise。 如果功能由 ADDDEFAULT 属性 列出,则忽略此位,并根据 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 确定功能状态。 忽略此属性,根据 msidbFeatureAttributesDisallowAdvertise、msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 确定功能状态。
msidbFeatureAttributesDisallowAdvertise 8 0x0008 请注意,此位仅适用于由 ADVERTISE 属性列出的功能。 设置此属性将阻止播发该功能。
设置此属性,如果列出的功能不是父项或子项,则根据 msidbFeatureAttributesFavorLocal 和 msidbFeatureAttributesFavorSource 安装该功能。
为列出的功能的父项设置此属性,将安装父项。
为列出的功能的子项设置此属性,子项的状态为 Absent。
忽略此属性,如果列出的功能不是父项或子项,则功能状态为 Advertise。
忽略此属性,如果列出的功能是父项或子项,则两个功能的状态都是 Advertise。
msidbFeatureAttributesUIDisallowAbsent 16 0x0010 设置此属性,用户界面将不显示将功能状态更改为 Absent 的选项。 设置此属性将强制功能进入安装状态,无论该功能在 UI 中是否可见。 忽略此属性,用户界面将显示将功能状态更改为 Absent 的选项。
设置 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent,以确保子功能遵循父功能的状态。
设置此属性不仅会影响 UI,而且会强制该功能进入安装状态,无论该功能在 UI 中是否可见。
msidbFeatureAttributesNoUnsupportedAdvertise 32 0x0020 如果操作系统 shell 不支持 Windows Installer 描述符,则设置此属性,禁用功能的播发。 忽略此属性,不禁用播发。

 

某些属性是互斥的。 尝试在同一功能上同时设置这些属性会导致安装包的包验证失败。

  • 不要将 msidbFeatureAttributesFavorAdvertise 与 msidbFeatureAttributesDisallowAdvertise 配合使用。
  • 不要将 msidbFeatureAttributesNoUnsupportedAdvertise 与 msidbFeatureAttributesDisallowAdvertise 配合使用。
  • 不要将 msidbFeatureAttributesFollowParent 与 msidbFeatureAttributesFavorSource 配合使用。
  • 请注意,msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesFavorLocal 值是互斥的。 如果使用 msidbFeatureAttributesFollowParent 值,则假定 msidbFeatureAttributesFavorLocal 值不存在。

请注意,如果安装了子功能,也会安装其父功能。 如果安装了父功能,则不一定安装其子功能,除非设置了其 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 属性。 父功能和子功能安装的这种层次关系也适用于 GUI 安装和使用命令行属性的安装。

备注

当此表加载到内存中以用于成本计算和用户界面 (UI) 选择所使用的计算时,会向表中添加几个额外的临时列。

一个组件可以在两个或多个功能或应用程序之间共享。 如果两个或多个功能引用同一组件,只要选择了任何关联的功能,就会选择该组件进行安装。 这也是移除父功能时不卸载子功能的原因。 如果子功能包含其他功能或应用程序所需的组件,则 Windows Installer 不会移除子功能。

有关详细信息,请参阅控制功能选择状态

安装级别:

  • 对于任何安装,都有一个定义的安装级别,即 1 到 32,767 之间的一个整数值。 初始值由 INSTALLLEVEL 属性确定,该属性在 Property 表中进行设置。
  • 仅当功能级别值小于或等于当前安装级别时,才安装功能。 可以创作 UI,以便在初始化安装时,安装程序允许用户修改功能表中任何功能的安装级别。 例如,作者可以定义表示特定安装选项(例如“自定义”、“典型”或“最少”)的安装级别值,然后创建一个对话框,该对话框使用 SetInstallLevel ControlEvents 使用户能够选择其中一种状态。
  • 根据用户选择的状态,对话框将安装级别属性设置为相应的值。 如果作者为“典型”分配了级别 100,而用户选择“典型”,则仅安装级别为 100 或更低级别的功能。 此外,“自定义”选项可能导致显示另一个包含 SelectionTree 控件的对话框。 然后,SelectionTree 控件允许用户分别更改是否安装每项功能。

验证

ICE03
ICE06
ICE10
ICE14
ICE21
ICE32
ICE41
ICE45
ICE47
ICE50
ICE57
ICE59
ICE62
ICE67
ICE79
ICE86
ICE94