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) |