com4:Extension

COM 登録をアプリ パッケージの外部のクライアントに公開する機能を提供します。 com4 拡張機能は、以前の COM スキーマ バージョンのスーパーセットであり、置き換わる新しいバージョンです。 詳細については、「解説」セクションを参照してください。

要素階層

<パッケージの>

     <アプリケーションの>

          <アプリケーション>

               <拡張機能の>

                    <com4:Extension>

     <拡張機能の>

          <com4:Extension>

構文

<com4:Extension
  Category = 'A string that can have one of the following values: "windows.comServer" or "windows.comInterface".'
  Executable = 'An optional string with a value between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *.'
  EntryPoint = 'An optional string with a value between 1 and 256 characters in length that cannot start or end with a whitespace character.'
  RuntimeType = 'An optional string with a value between 1 and 255 characters in length that cannot start or end with a period or contain these characters: <, >, :, ", /, \, |, ?, or *.'
  StartPage = 'An optional string with a value between 1 and 256 characters in length that cannot contain these characters: <, >, :, ", |, ?, or *.'
  ResourceGroup = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  TrustLevel = 'An optional string the can have one of the following values: "appContainer" or "mediumIL".'
  RuntimeBehavior = 'An optional string the can have one of the following values: "windowsApp", "packagedClassicApp", or "win32App".'
  HostId = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  Parameters = 'An optional string with a value between 1 and 32767 characters in length with a non-whitespace character at its beginning and end.'
  uap11:Id = 'An optional string with a value between 1 and 255 characters in length with a non-whitespace character at its beginning and end.'
  uap11:Subsystem = 'An optional string that can have one of the following values: "console" or "windows".'
  uap11:SupportsMultipleInstances = 'An optional boolean value.'
  uap11:ResourceGroup = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  uap11:CurrentDirectoryPath = 'An optional string that cannot contain these characters: <, >, |, ?, or *. >'
  uap11:Parameters = 'An optional string with a value between 1 and 32767 characters in length with a non-whitespace character at its beginning and end.'
  desktop7:CompatMode = 'An optional string the can have one of the following values: "classic" or "modern".'
  desktop7:Scope = 'An optional string that can have one of the following values: "machine" or "user".' />

  <!-- Child elements -->
  com4:ComServer
  com4:ComInterface

</com4:Extension>

属性と要素

属性

属性 形容 データ型 必須 既定値
カテゴリの アプリ拡張ポイントの種類。 windows.comServer または windows.comInterfaceを 、次のいずれかの値を持つ文字列。 はい
実行可能ファイルの この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 .exe で終わる必要があり、<>:"|?、または *の文字を含めることはできません。 いいえ
EntryPoint を する この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 空白文字で開始または終了できない長さが 1 ~ 256 文字の省略可能な文字列。 いいえ
RuntimeType この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 1 から 255 文字の長さの値を持つ省略可能な文字列で、ピリオドで開始または終了できないか、または次の文字を含みます: <>:"/\|?、または * いいえ
StartPage の この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 <>:"|?、または *の文字を含むことができない長さが 1 ~ 256 文字の省略可能な文字列。 いいえ
ResourceGroup リソース管理のために拡張機能のアクティブ化をグループ化するために使用できるタグ (CPU やメモリなど)。 ResourceGroup に設定できる値は自由形式で柔軟です。 Application@ResourceGroupを参照してください。 1 ~ 255 文字の長さの値を持つ省略可能な英数字文字列。 文字で始まる必要があります。 いいえ
uap10:TrustLevel 拡張機能の信頼レベルを指定します。 現在のリリースでは、この属性は com4 拡張機能ではサポートされていません。 値 "mediumIL" は常に使用されます。 省略可能な文字列には、appContainer または mediumILのいずれかの値を指定できます。 いいえ
uap10:RuntimeBehavior を する 拡張機能の実行時の動作を指定します。 現在のリリースでは、この属性は com4 拡張機能ではサポートされていません。 値 "packagedClassicApp" は常に使用されます。 省略可能な文字列には、windowsApp、packagedClassicApp、または win32Appのいずれかの値を指定できます。 いいえ
uap10:HostId の この値拡張機能のホスト ランタイムの ID を指定します。 1 ~ 255 文字の長さの値を持つ省略可能な英数字文字列。 文字で始まる必要があります。 いいえ
uap10:Parameters この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 1 ~ 32767 文字の長さの値を持つ省略可能な文字列で、先頭と末尾に空白文字以外の文字が含まれます。 いいえ
uap11:Id この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 1 ~ 255 文字の長さの値を持つ省略可能な文字列で、先頭と末尾に空白以外の文字が含まれます。 いいえ
uap11:Subsystem この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 次のいずれかの値を持つ省略可能な文字列: コンソール または ウィンドウ いいえ
uap11:SupportsMultipleInstances インスタンスを異なるプロセスで実行するかどうかを指定します。 既定値は false です。 省略可能なブール値。 いいえ
uap11:ResourceGroup の リソース管理のために拡張機能のアクティブ化をグループ化するために使用できるタグ (CPU やメモリなど)。 ResourceGroup に設定できる値は自由形式で柔軟です。 Application@ResourceGroupを参照してください。 1 ~ 255 文字の長さの値を持つ省略可能な英数字文字列。 文字で始まる必要があります。 いいえ
uap11:CurrentDirectoryPath この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 この属性はマクロをサポートします。 詳細については、パッケージ マニフェスト スキーマのマクロの を参照してください。 <>|?、または *の文字を含めることができない省略可能な文字列。 > いいえ
uap11:Parameters この属性は基本拡張構文から継承され、com4 拡張には適用されません。 構文検証以外の値は無視されます。 この属性はマクロをサポートします。 詳細については、パッケージ マニフェスト スキーマのマクロの を参照してください。 1 ~ 32767 文字の長さの値を持つ省略可能な文字列で、先頭と末尾に空白文字以外の文字が含まれます。 いいえ
desktop7:CompatMode この拡張機能の情報を従来の方法 (パッケージ化されていないアプリがレジストリを介して COM に型を登録するなど) で Windows に登録するか、新しいスコープの新しい方法で登録するかを指定します。 既定値は "modern" です。 CompatMode="classic" には、Microsoft.classicAppCompat_8wekyb3d8bbwe 機能が必要です。 省略可能な文字列には、クラシック またはモダンのいずれかの値を指定できます。 いいえ
desktop7:Scope 登録が、このパッケージが登録されているユーザー (ユーザー) として実行されている他のアプリケーションにのみ表示されるかどうか、またはマシン (マシン) 上のすべてのユーザーとサービスに表示されるかどうかを指定します。 既定値は "user" です。 Scope="machine" には、Microsoft.classicAppCompatElevated_8wekyb3d8bbwe 機能が必要です。 コンピューターの またはユーザー、次のいずれかの値を持つ省略可能な文字列。 いいえ

子要素

子要素 形容
com4:ComServer comServer 拡張機能には、これらのクラスを実装するサーバーのアクティブ化の詳細、実行時にこれらのクラスを参照するために使用される追加の識別子を提供する ProgId と TreatAsClass の登録など、クラスの登録が含まれる場合があります。
com4:ComInterface windows.comInterface (com4:ComInterface) 型のパッケージ拡張ポイントを宣言します。

親要素

子要素 形容
拡張機能の アプリの 1 つ以上の拡張ポイントを定義します。

備考

com4 拡張機能は、基本的に古い windows.comServer/windows.comInterface 拡張構文の書き換えです。 この拡張機能は、継承された構文と同じ動作を持つ、以前の com 拡張機能のスーパーセットです。 パッケージ化で使用される新しい構文のマニフェスト検証は、拡張機能のセマンティック要件に合わせて調整されます。

  • 以前のバージョンでは、各拡張機能は個別のドキュメントとして扱われ、一意でないキーと未解決の参照を検証できます。
  • 以前のバージョンでは、一意/キー制約の対象となる属性の重複は、重複した属性が拡張機能の同じインスタンスに表示される場合にのみ、マニフェスト検証によってキャッチされていました。 これらの属性を複製したパッケージはデプロイに失敗し、問題を特定するための診断情報が制限されます。
  • 以前のバージョンでは、参照先が拡張機能の別のインスタンスにある keyref はマニフェスト検証によってブロックされます。これは、配置/ランタイム動作でサポートされる内容に対する人為的な制限です。

すべての windows.comServer/windows.comInterface 拡張機能に新しい com4 名前空間を使用できる Windows 11 を対象とするアプリケーションでは、それを使用する必要があります。 次のような理由から、新しい名前空間と古い名前空間の混在はお勧めしません。

  • 新しい名前空間をサポートするバージョンにパッケージをデプロイすると、すべての名前空間の拡張機能が処理され、異なる名前空間バージョンを使用する拡張機能間で重複するすべての一意識別子が失敗します。 以前の名前空間を使用すると、マニフェストの検証でこれらのエラーが検出されなくなります。
  • 古い名前空間スキーマの制限により、古い構文の keyref は、拡張機能の異なるインスタンスにあるため、新しい構文のキーを参照できません。

次の com4 構文セマンティクスの使用には、機能の要件があります。

  • CompatMode="classic" にはMicrosoft.classicAppCompat_8wekyb3d8bbweが必要です
  • Scope="machine" にはMicrosoft.classicAppCompatElevated_8wekyb3d8bbweが必要です

次の例は、同じクラスのアウトプロセスおよびインプロセス サーバー実装を登録する方法を示しています。

<com4:Class Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx" DisplayName="CLSID_Foo"/> 
<com:ExeServer Executable="MyServer.exe" DisplayName="My server">  
  <com4:ClassReference Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx"/>  
</com:ExeServer> 
<com4:InProcessServer Path="MyServer.dll">  
  <com4:ClassReference Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx"/>  
</com4:InProcessServer> 

com4 拡張機能の新機能

  • インプロセス サーバー (アンマネージドとマネージドの両方) とカスタムインプロセス ハンドラー (つまり、OLE の既定のハンドラーではない) のサポート。 この機能は現在、ポリシーによって機能が制限され、制限されています。
    • これは現在、外部の場所を持つパッケージでのみ使用することを目的としています。パッケージの dll がパッケージの外部に読み込まれるのを妨げるインストール場所の ACL が原因で、ほとんどの通常のパッケージでは機能しません。 外部の場所を持つパッケージの詳細については、「外部の場所でパッケージ化してパッケージ ID を付与する」を参照してください。
  • TypeLib をクラス登録に関連付けることができるようになりました。

必要条件

アイテム 価値
名前空間の http://schemas.microsoft.com/appx/manifest/com/windows10/4
最小 OS バージョン Windows 10 (ビルド 20348)