com4:Extension

Proporciona funcionalidad para exponer registros COM a clientes fuera del paquete de la aplicación. La extensión com4 es una nueva versión que es un superconjunto de y reemplazo de las versiones anteriores del esquema COM. Vea la sección Comentarios para obtener más información.

Jerarquía de elemento

<Paquete>

    <APLICACIONES>

         <Application>

              <Extensiones>

                   <com4:Extension>

Sintaxis

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

Atributos y elementos

Atributos

Atributo Descripción Tipo de datos Obligatorio Valor predeterminado
Categoría Tipo de punto de extensibilidad de la aplicación. Cadena que puede tener uno de los siguientes valores: windows.comServer o windows.comInterface.
Executable Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional con un valor de entre 1 y 256 caracteres de longitud que debe terminar con .exe y no puede contener estos caracteres: <, >, ":, |, ?, o *. No
EntryPoint Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional con un valor de entre 1 y 256 caracteres de longitud que no puede iniciar o terminar con un carácter de espacio en blanco. No
RuntimeType Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Una cadena opcional con un valor de entre 1 y 255 caracteres de longitud que no puede iniciar o terminar con un punto o contener estos caracteres: <, >, /\"|:, ?o .* No
StartPage Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional con un valor entre 1 y 256 caracteres de longitud que no puede contener estos caracteres: <, , :>, "|, , ?o *. No
ResourceGroup Etiqueta que puede usar para agrupar activaciones de extensión con fines de administración de recursos (por ejemplo, CPU y memoria). El valor que puede establecer ResourceGroup es de forma libre y flexible. Consulte Application@ResourceGroup. Cadena alfanumérica opcional con un valor entre 1 y 255 caracteres de longitud. Debe comenzar con una letra. No
uap10:TrustLevel Especifica el nivel de confianza de la extensión. En la versión actual, este atributo no es compatible con la extensión com4. El valor "mediumIL" siempre se usa. Una cadena opcional puede tener uno de los siguientes valores: appContainer o mediumIL. No
uap10:RuntimeBehavior Especifica el comportamiento en tiempo de ejecución de la extensión. En la versión actual, este atributo no es compatible con la extensión com4. El valor "packagedClassicApp" siempre se usa. Una cadena opcional puede tener uno de los siguientes valores: windowsApp, packagedClassicApp o win32App. No
uap10:HostId Este valor Especifica el identificador del tiempo de ejecución del host para la extensión. Cadena alfanumérica opcional con un valor entre 1 y 255 caracteres de longitud. Debe comenzar con una letra. No
uap10:Parameters Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional con un valor entre 1 y 32767 caracteres de longitud con un carácter que no es de espacio en blanco al principio y al final. No
uap11:Id Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional con un valor entre 1 y 255 caracteres de longitud con un carácter de espacio no en blanco al principio y al final. No
uap11:Subsystem Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional que puede tener uno de los siguientes valores: consola o ventanas. No
uap11:SupportsMultipleInstances Especifica si las instancias deben ejecutarse en procesos diferentes. El valor predeterminado es false. Valor booleano opcional. No
uap11:ResourceGroup Etiqueta que puede usar para agrupar activaciones de extensión con fines de administración de recursos (por ejemplo, CPU y memoria). El valor que puede establecer ResourceGroup es de forma libre y flexible. Consulte Application@ResourceGroup. Cadena alfanumérica opcional con un valor entre 1 y 255 caracteres de longitud. Debe comenzar con una letra. No
uap11:CurrentDirectoryPath Este atributo se hereda de la sintaxis de extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, este valor se omite. Cadena opcional que no puede contener estos caracteres: <, >, |, ?o *. > No
uap11:Parameters Este atributo se hereda de la sintaxis de la extensión base y no es aplicable a la extensión com4. Aparte de la validación sintáctica, se omite este valor. Cadena opcional con un valor entre 1 y 32767 caracteres de longitud con un carácter que no es de espacio en blanco al principio y al final. No
desktop7:CompatMode Especifica si la información de esta extensión se registra con Windows de maneras clásicas (por ejemplo, los tipos de registro de aplicaciones sin empaquetar con COM a través del Registro) o de nuevas formas más limitadas. El valor predeterminado es "modern". CompatMode="classic" requiere la funcionalidad Microsoft.classicAppCompat_8wekyb3d8bbwe . Una cadena opcional puede tener uno de los siguientes valores: clásico o moderno. No
desktop7:Scope Especifica si los registros solo son visibles para otras aplicaciones que se ejecutan como un usuario que tiene este paquete registrado (usuario), o si son visibles para todos los usuarios y servicios del equipo (máquina). El valor predeterminado es "user". Scope="machine" requiere la funcionalidad Microsoft.classicAppCompatElevated_8wekyb3d8bbwe . Cadena opcional que puede tener uno de los siguientes valores: máquina o usuario. No

Elementos secundarios

Elemento secundario Descripción
com4:ComServer La extensión comServer puede incluir registros de clases, incluidos los detalles de activación de los servidores que implementan estas clases y los registros ProgId y TreatAsClass, que proporcionan identificadores adicionales que se usan para hacer referencia a estas clases en tiempo de ejecución.
com4:ComInterface Declara un punto de extensión de paquete de tipo windows.comInterface (com4:ComInterface).

Elementos primarios

Elemento secundario Descripción
Extensiones Define uno o varios puntos de extensibilidad para la aplicación.

Comentarios

La extensión com4 es básicamente una reescritura de la antigua sintaxis de extensión windows.comServer/windows.comInterface. Esta extensión es un superconjunto de la funcionalidad de extensión com anterior, con un comportamiento idéntico para la sintaxis heredada. La validación del manifiesto para la nueva sintaxis que se usa en el empaquetado se alinea mejor con los requisitos semánticos de la extensión.

  • En la versión anterior, cada extensión se trataba como un documento independiente, lo que permite validar las claves no únicas y las referencias pendientes.
  • En la versión anterior, la duplicación de atributos sujetos a restricciones unique/key solo se detectó mediante la validación del manifiesto si los atributos duplicados aparecen en la misma instancia de la extensión. Los paquetes que duplicaron estos atributos no se implementarían, con información de diagnóstico limitada para identificar el problema.
  • En la versión anterior, un elemento keyref cuyo referente se encuentra en una instancia diferente de la extensión se bloquearía mediante la validación del manifiesto, que es una restricción artificial relativa a lo que admite el comportamiento de implementación o tiempo de ejecución.

Las aplicaciones destinadas a Windows 11 que pueden usar el nuevo espacio de nombres com4 para todas sus extensiones windows.comServer/windows.comInterface deben usarla. No se recomienda mezclar el nuevo espacio de nombres con los espacios de nombres anteriores, por motivos como:

  • La implementación del paquete en versiones que admiten el nuevo espacio de nombres controlará las extensiones de todos los espacios de nombres y los identificadores únicos duplicados entre extensiones que usen versiones de espacios de nombres diferentes producirán un error. El uso de los espacios de nombres anteriores impide que la validación del manifiesto detecte estos errores.
  • Debido a las limitaciones de los esquemas de espacio de nombres anteriores, una clave de la sintaxis anterior no puede hacer referencia a una clave en la nueva sintaxis porque se encuentran en instancias diferentes de la extensión.

El uso de la siguiente semántica de sintaxis com4 tiene requisitos de funcionalidad:

  • CompatMode="classic" requiere Microsoft.classicAppCompat_8wekyb3d8bbwe
  • Scope="machine" requiere Microsoft.classicAppCompatElevated_8wekyb3d8bbwe

En el ejemplo siguiente se muestra cómo registrar una implementación de servidor fuera de proceso y en proceso para la misma clase.

Ejemplos

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

Nuevas características de la extensión com4

  • Compatibilidad con servidores en proceso (tanto administrados como no administrados) y controladores personalizados en proceso (es decir, no el controlador predeterminado OLE). Esta funcionalidad está actualmente limitada funcionalmente y está restringida por directiva:
    • Actualmente, esto está pensado para su uso solo por paquetes con ubicación externa; no funciona para la mayoría de los paquetes normales debido a las ACL en la ubicación de instalación que impiden que los archivos DLL del paquete se carguen fuera del paquete. Para obtener más información sobre los paquetes con ubicación externa, consulte Concesión de identidad de paquete mediante el empaquetado con ubicación externa.
  • Ahora es posible asociar un TypeLib a un registro de clase.

Requisitos

Elemento Value
Espacio de nombres http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (compilación 20348)