com4:Extension

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

要素の階層

<パッケージ>

    <アプリケーション>

         <Application>

              <拡張機能>

                   <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 のいずれかの値を持つ文字列。 Yes
[実行可能ファイル] この属性は基本拡張構文から継承され、com4 拡張機能には適用されません。 構文検証以外の値は無視されます。 1 から 256 文字の長さの.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" は常に使用されます。 省略可能な文字列 は、 windowsApppackagedClassicAppwin32App のいずれかの値を持つことができます。 いいえ
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 この拡張機能の情報を従来の方法で Windows に登録するか (たとえば、パッケージ化されていないアプリがレジストリを介して COM に型を登録する)、またはよりスコープが広い新しい方法で登録するかを指定します。 既定値は "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 の既定のハンドラーではありません) のサポート。 この機能は現在、ポリシーによって機能が制限され、制限されています。
    • これは現在、外部の場所を持つパッケージでのみ使用することを目的としています。インストール場所の ACL によってパッケージの dll がパッケージの外部に読み込まれないため、ほとんどの通常のパッケージでは機能しません。 外部の場所を持つパッケージの詳細については、「外部の場所で パッケージ化してパッケージ ID を付与する」を参照してください。
  • TypeLib をクラス登録に関連付けることができるようになりました。

要件

Item
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (ビルド 20348)