com4:Extension

Предоставляет функциональные возможности для предоставления регистрации COM клиентам за пределами пакета приложения. Расширение com4 — это новая версия, которая является надмножеством и заменой предыдущих версий схемы COM. Дополнительные сведения см. в разделе "Примечания".

Иерархия элементов

<Пакет>

    <Приложения>

         <Приложение>

              <Расширения>

                   <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. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка со значением длиной от 1 до 256 символов, которая должна заканчиваться .exe на и не может содержать следующие символы: <, >, :, ", |?, или *. Нет
EntryPoint Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка со значением от 1 до 256 символов, которая не может начинаться или заканчиваться символом пробела. Нет
Тип среды выполнения Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка со значением длиной от 1 до 255 символов, которая не может начинаться или заканчиваться точкой или содержать следующие символы: <, >, :, ", |?/\, или .* Нет
StartPage Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка со значением от 1 до 256 символов в длину, которая не может содержать следующие символы: <, >, :, ", |?, или *. Нет
ResourceGroup Тег, который можно использовать для группирования активаций расширений в целях управления ресурсами (например, ЦП и памяти). Значение ResourceGroup можно задать в свободной форме и является гибким. См . Application@ResourceGroup. Необязательная буквенно-цифровая строка со значением от 1 до 255 символов. Должен начинаться с буквы. Нет
uap10:TrustLevel Указывает уровень доверия расширения. В текущем выпуске этот атрибут не поддерживается для расширения com4. Всегда используется значение mediumIL. Необязательная строка может иметь одно из следующих значений: appContainer или mediumIL. Нет
uap10:RuntimeBehavior Указывает поведение расширения во время выполнения. В текущем выпуске этот атрибут не поддерживается для расширения com4. Всегда используется значение packagedClassicApp. Необязательная строка может иметь одно из следующих значений: windowsApp, packagedClassicApp или win32App. Нет
uap10:HostId Это значение указывает идентификатор среды выполнения узла для расширения. Необязательная буквенно-цифровая строка со значением от 1 до 255 символов. Должен начинаться с буквы. Нет
uap10:Parameters Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка со значением от 1 до 32767 символов в длину с символом, не являющиеся пробелами, в начале и конце. Нет
uap11:Id Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка со значением от 1 до 255 символов в длину с символом без пробелов в начале и конце. Нет
uap11:Subsystem Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Необязательная строка, которая может иметь одно из следующих значений: консоль или окна. Нет
uap11:SupportsMultipleInstances Указывает, должны ли экземпляры выполняться в разных процессах. Значением по умолчанию является false. Необязательное логическое значение. Нет
uap11:ResourceGroup Тег, который можно использовать для группирования активаций расширений в целях управления ресурсами (например, ЦП и памяти). Значение ResourceGroup можно задать в свободной форме и является гибким. См . Application@ResourceGroup. Необязательная буквенно-цифровая строка со значением от 1 до 255 символов. Должен начинаться с буквы. Нет
uap11:CurrentDirectoryPath Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Этот атрибут поддерживает макросы. Дополнительные сведения см. в разделе Макросы в схеме манифеста пакета. Необязательная строка, которая не может содержать следующие символы: <, >, |, ?или *. > Нет
uap11:Parameters Этот атрибут наследуется от базового синтаксиса расширения и неприменим к расширению com4. Кроме синтаксической проверки, это значение игнорируется. Этот атрибут поддерживает макросы. Дополнительные сведения см. в разделе Макросы в схеме манифеста пакета. Необязательная строка со значением от 1 до 32767 символов в длину с символом, не являющиеся пробелами, в начале и конце. Нет
desktop7:CompatMode Указывает, регистрируются ли сведения этого расширения в Windows классическими способами (например, неупакованные приложения регистрируют типы в COM через реестр) или новыми способами с более ограниченной областью. Значение по умолчанию — modern. CompatMode="classic" требует возможности Microsoft.classicAppCompat_8wekyb3d8bbwe . Необязательная строка может иметь одно из следующих значений: classic или modern. Нет
desktop7:Scope Указывает, видны ли регистрации только другим приложениям, работающим от имени пользователя, у которого зарегистрирован этот пакет (пользователь), или же они видны всем пользователям и службам на компьютере (компьютере). Значение по умолчанию — user. Scope="machine" требует возможности Microsoft.classicAppCompatElevated_8wekyb3d8bbwe . Необязательная строка, которая может иметь одно из следующих значений: machine или user. Нет

Дочерние элементы

Дочерний элемент Описание
com4:ComServer Расширение comServer может включать регистрации классов, включая сведения об активации для серверов, реализующих эти классы, а также регистрации ProgId и TreatAsClass, которые предоставляют дополнительные идентификаторы, используемые для ссылки на эти классы во время выполнения.
com4:ComInterface Объявляет точку расширения пакета типа windows.comInterface (com4:ComInterface).

Родительские элементы

Дочерний элемент Описание
Расширения Определяет одну или несколько точек расширяемости для приложения.

Комментарии

Расширение com4 по сути является переписыванием старого синтаксиса расширения windows.comServer/windows.comInterface. Это расширение является надмножеством предыдущих функций расширения com с одинаковым поведением для наследуемого синтаксиса. Проверка манифеста для нового синтаксиса, используемого в упаковке, лучше согласуется с семантические требования расширения.

  • В предыдущей версии каждое расширение рассматривалось как отдельный документ, что позволяло проверять неуникальный ключ и висячие ссылки.
  • В предыдущей версии дублирование атрибутов с ограничениями уникальности или ключа перехватывалось проверкой манифеста, только если повторяющиеся атрибуты отображаются в том же экземпляре расширения. Пакеты, дублирующие эти атрибуты, не удастся развернуть, и для выявления проблемы потребуется ограниченная диагностическая информация.
  • В предыдущей версии ссылка на ключ, ссылка на которую находится в другом экземпляре расширения, будет блокироваться проверкой манифеста, что является искусственным ограничением относительно того, что поддерживается в поведении развертывания или среды выполнения.

Приложения, предназначенные для Windows 11, которые могут использовать новое пространство имен com4 для всех расширений windows.comServer/windows.comInterface, должны использовать его. Смешивать новое пространство имен со старыми пространствами имен не рекомендуется по следующим причинам:

  • Развертывание пакета в версиях, поддерживающих новое пространство имен, будет обрабатывать расширения из всех пространств имен, а любые уникальные идентификаторы, дублирующиеся между расширениями с использованием разных версий пространств имен, приведут к сбою. Использование старых пространств имен предотвращает обнаружение этих ошибок при проверке манифеста.
  • Из-за ограничений старых схем пространства имен ссылка на ключ в старом синтаксисе не может ссылаться на ключ в новом синтаксисе, так как они находятся в разных экземплярах расширения.

Использование следующей семантики синтаксиса 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-файлов пакета за пределами пакета. Дополнительные сведения о пакетах с внешним расположением см. в разделе Предоставление удостоверения пакета путем упаковки с внешним расположением.
  • Теперь можно связать TypeLib с регистрацией класса.

Требования

Элемент Значение
Пространство имен http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (сборка 20348)