使用限定组件

限定组件是一种间接方法,可用于将具有并行功能的组件分组到类别中。

若要返回完整路径并安装限定的组件,请调用 MsiProvideQualifiedComponentMsiProvideQualifiedComponentEx

若要枚举所有限定的组件限定符和描述性字符串,请调用 MsiEnumComponentQualifiers

将组件组合到限定组件类别中

  1. 对于新类别的限定组件中包含的每个组件,Component 表中必须有一条记录。 在 Component 表中创作字段与普通组件相同。 请注意,每个合格的组件都必须有一个唯一的组件 ID,即在组件表的 ComponentID 列中输入的 GUID。
  2. 为每个限定组件生成限定符文本字符串。 限定符必须是在搜索限定组件时可以轻松生成的唯一文本字符串。 例如,如果类别中的组件由语言限定,则合理的限定符字符串是数字区域设置标识符 (LCID)。
  3. PublishComponent 表中针对每个限定组件添加一条记录。 在 PublishComponent 表的 Component_ 列中输入 Component 表中的 Component 列中的限定组件标识符。 在 Qualifier 列中输入每个限定组件的限定符字符串。 在可选的 AppData 列中输入要向用户显示的本地化字符串(用于描述限定组件)。 应在 AppData 字段中输入解释性字符串,例如“法语词典”,而不仅仅是数字 LCID。 在 Feature_ 列中输入使用此组件的功能的名称。 此字段中的功能标识符也必须在 Feature 表的 Feature 列中列出。
  4. 为此类别的合格组件生成类别 GUID。 这必须是有效的 GUID。 如果使用 GUIDGEN 等实用工具生成 GUID,请确保 GUID 仅包含大写字母。 对于此类别中的每个限定组件,请在 PublishComponent 表的 ComponentId 字段中输入类别 GUID。

以下示例演示如何将限定组件的“FAX 模板”类别编写到 Component、Feature 和 PublishComponent 表中。

PublishComponent 表

ComponentId 限定符 AppData Feature_ Component_
{FAX 模板类别 GUID} 2052 美国英语模板 FAXTemplate FAXTemplateENU
  1041 日语模板 FAXTemplate FAXTemplateJPN
  1054 泰语模板 FAXTemplate FAXTemplateTHA
  1031 德语模板 FAXTemplate FAXTemplateDEU

 

Component 表(非完整表)

组件 ComponentId
FAXTemplateENU {FAX 模板(美国英语)组件 GUID}
FAXTemplateJPN {FAX 模板(日语)组件 GUID}
FAXTemplateTHA {FAX 模板(泰语)组件 GUID}
FAXTemplateDEU {FAX 模板(德语)组件 GUID}

 

Feature 表(非完整表)

功能
FAXTemplate
FAXTemplate
FAXTemplate
FAXTemplate