修飾されたコンポーネントの使用
修飾されたコンポーネントは間接参照の手法です。並列機能を持つコンポーネントをカテゴリにグループ化するために使用できます。
完全なパスを返して修飾されたコンポーネントをインストールするには、MsiProvideQualifiedComponent または MsiProvideQualifiedComponentEx を呼び出しします。
修飾されたコンポーネントの修飾子と説明文字列をすべて列挙するには、MsiEnumComponentQualifiers を呼び出します。
コンポーネントを修飾されたコンポーネント カテゴリにグループ化するには
- Component テーブルには、修飾されたコンポーネントの新しいカテゴリに含まれる各コンポーネントのレコードが存在する必要があります。 Component テーブルのフィールドは、通常のコンポーネントと同じように作成します。 個々の修飾されたコンポーネントは、Component テーブルの ComponentId 列に入力された一意のコンポーネント ID GUID を持つ必要があることに注意してください。
- 個々の修飾されたコンポーネントの修飾子テキスト文字列を生成します。 修飾子は、修飾されたコンポーネントを検索するときに簡単に生成できる一意のテキスト文字列にする必要があります。 たとえば、カテゴリ内のコンポーネントが言語によって修飾されている場合、数値ロケール識別子 (LCID) は適切な修飾子文字列になります。
- 個々の修飾されたコンポーネントの PublishComponent テーブルにレコードを追加します。 Component テーブルの Component 列にある修飾されたコンポーネントの識別子を、PublishComponent テーブルの Component_ 列に入力します。 個々の修飾されたコンポーネントの修飾子文字列を Qualifier 列に入力します。 ユーザーに表示する、修飾されたコンポーネントを説明するローカライズ済み文字列を、省略可能な AppData 列に入力します。 AppData フィールドには、単なる数値の LCID ではなく、「フランス語の辞書」のような説明の文字列を入力してください。 Feature_ 列には、このコンポーネントを使う機能の名前を入力します。 このフィールドの機能識別子は、Feature テーブルの Feature 列にも格納されている必要があります。
- このカテゴリの修飾されたコンポーネント用にカテゴリ GUID を生成します。 これは有効な GUID である必要があります。 GUIDGEN などのユーティリティを使って GUID を生成する場合は、必ず大文字のみを含めてください。 このカテゴリに含まれるすべての修飾されたコンポーネントについて、PublishComponent テーブルの ComponentId フィールドにカテゴリ GUID を入力します。
次の例は、Component、Feature、PublishComponent の各テーブルに "FAX Templates" (FAX テンプレート) カテゴリの修飾されたコンポーネントを作成する方法を示しています。
ComponentId | 修飾子 | AppData | Feature_ | Component_ |
---|---|---|---|---|
{FAX Template Category GUID} | 1033 | 英語 (米国) テンプレート | FAXTemplate | FAXTemplateENU |
1041 | 日本語テンプレート | FAXTemplate | FAXTemplateJPN | |
1054 | タイ語テンプレート | FAXTemplate | FAXTemplateTHA | |
1031 | ドイツ語テンプレート | FAXTemplate | FAXTemplateDEU |
Component テーブル (部分テーブル)
コンポーネント | ComponentId |
---|---|
FAXTemplateENU | {FAX Template (US English) component GUID} |
FAXTemplateJPN | {FAX Template (Japanese) component GUID} |
FAXTemplateTHA | {FAX Template (Thai) component GUID} |
FAXTemplateDEU | {FAX Template (German) component GUID} |
Feature テーブル (部分テーブル)
特徴量 |
---|
FAXTemplate |
FAXTemplate |
FAXTemplate |
FAXTemplate |