com4:Extension

Fornece funcionalidade para expor registros COM a clientes fora do pacote do aplicativo. A extensão com4 é uma nova versão que é um superconjunto de e substituição para as versões anteriores do esquema COM. Consulte a seção Comentários para obter mais informações.

Hierarquia de elementos

<Pacote>

    <Aplicativos>

         <Aplicativo>

              <Extensões>

                   <com4:Extension>

Syntax

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

Atributos

Atributo Descrição Tipo de dados Obrigatório Valor padrão
Categoria O tipo de ponto de extensibilidade do aplicativo. Uma cadeia de caracteres que pode ter um dos seguintes valores: windows.comServer ou windows.comInterface. Yes
Executável Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional com um valor entre 1 e 256 caracteres de comprimento que deve terminar com .exe e não pode conter esses caracteres: <, , :>, , "|, ?ou *. No
EntryPoint Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional com um valor entre 1 e 256 caracteres de comprimento que não pode iniciar ou terminar com um caractere de espaço em branco. No
Runtimetype Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional com um valor entre 1 e 255 caracteres de comprimento que não pode iniciar ou terminar com um período ou conter esses caracteres: <, >, , :, ", \/, |, ?ou *. No
StartPage Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional com um valor entre 1 e 256 caracteres de comprimento que não pode conter esses caracteres: <, >, , :, ", |?ou *. No
ResourceGroup Uma marca que você pode usar para agrupar ativações de extensão para fins de gerenciamento de recursos (por exemplo, CPU e memória). O valor que você pode definir ResourceGroup é de forma livre e flexível. Consulte Application@ResourceGroup. Uma cadeia de caracteres alfanumérica opcional com um valor entre 1 e 255 caracteres de comprimento. Deve começar com uma letra. No
uap10:TrustLevel Especifica o nível de confiança da extensão. Na versão atual, esse atributo não tem suporte para a extensão com4. O valor "mediumIL" é sempre usado. Uma cadeia de caracteres opcional que pode ter um dos seguintes valores: appContainer ou mediumIL. No
uap10:RuntimeBehavior Especifica o comportamento de tempo de execução da extensão. Na versão atual, esse atributo não tem suporte para a extensão com4. O valor "packagedClassicApp" é sempre usado. Uma cadeia de caracteres opcional que pode ter um dos seguintes valores: windowsApp, packagedClassicApp ou win32App. No
uap10:HostId Esse valor Especifica a ID do runtime do host para a extensão. Uma cadeia de caracteres alfanumérica opcional com um valor entre 1 e 255 caracteres de comprimento. Deve começar com uma letra. No
uap10:Parameters Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional com um valor entre 1 e 32767 caracteres de comprimento com um caractere não whitespace no início e no final. No
uap11:Id Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional com um valor entre 1 e 255 caracteres de comprimento com um caractere não whitespace no início e no final. No
uap11:Subsistema Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Uma cadeia de caracteres opcional que pode ter um dos seguintes valores: console ou janelas. No
uap11:SupportsMultipleInstances Especifica se as instâncias devem ser executadas em processos diferentes. O valor padrão é false. Um valor booliano opcional. No
uap11:ResourceGroup Uma marca que você pode usar para agrupar ativações de extensão para fins de gerenciamento de recursos (por exemplo, CPU e memória). O valor que você pode definir ResourceGroup é de forma livre e flexível. Consulte Application@ResourceGroup. Uma cadeia de caracteres alfanumérica opcional com um valor entre 1 e 255 caracteres de comprimento. Deve começar com uma letra. No
uap11:CurrentDirectoryPath Esse atributo é herdado da sintaxe da extensão base e não é aplicável à extensão com4. Além da validação sintactica, esse valor é ignorado. Esse atributo dá suporte a macros. Para obter mais informações, consulte Macros no esquema de manifesto do pacote. Uma cadeia de caracteres opcional que não pode conter estes caracteres: <, >, |, ?ou *. > No
uap11:Parameters Esse atributo é herdado da sintaxe de extensão base e não é aplicável à extensão com4. Além da validação sintática, esse valor é ignorado. Esse atributo dá suporte a macros. Para obter mais informações, consulte Macros no esquema de manifesto do pacote. Uma cadeia de caracteres opcional com um valor entre 1 e 32.767 caracteres de comprimento com um caractere não em branco no início e no final. No
desktop7:CompatMode Especifica se as informações dessa extensão são registradas no Windows de maneiras clássicas (por exemplo, aplicativos não empacotados registram tipos com COM por meio do registro) ou de novas maneiras mais com escopo. O valor padrão é "moderno". CompatMode="classic" requer a funcionalidade Microsoft.classicAppCompat_8wekyb3d8bbwe . Uma cadeia de caracteres opcional que pode ter um dos seguintes valores: clássico ou moderno. No
desktop7:Scope Especifica se os registros só são visíveis para outros aplicativos em execução como um usuário que tem esse pacote registrado (usuário) ou se estão visíveis para todos os usuários e serviços no computador (computador). O valor padrão é "user". Scope="machine" requer a funcionalidade Microsoft.classicAppCompatElevated_8wekyb3d8bbwe . Uma cadeia de caracteres opcional que pode ter um dos seguintes valores: computador ou usuário. No

Elementos filho

Elemento filho Descrição
com4:ComServer A extensão comServer pode incluir registros de classe, incluindo detalhes de ativação para os servidores que implementam essas classes, e registros ProgId e TreatAsClass, que fornecem identificadores adicionais usados para referenciar essas classes em runtime.
com4:ComInterface Declara um ponto de extensão de pacote do tipo windows.comInterface (com4:ComInterface).

Elementos pai

Elemento filho Descrição
Extensões Define um ou mais pontos de extensibilidade para o aplicativo.

Comentários

A extensão com4 é essencialmente uma reescrita da sintaxe antiga da extensão windows.comServer/windows.comInterface. Essa extensão é um superconjunto da funcionalidade de extensão com anterior, com comportamento idêntico para a sintaxe herdada. A validação de manifesto para a nova sintaxe, conforme usada no empacotamento, está melhor alinhada com os requisitos semânticos da extensão.

  • Na versão anterior, cada extensão era tratada como um documento separado, permitindo que chaves não exclusivas e referências pendentes fossem validadas.
  • Na versão anterior, a duplicação de atributos sujeitos a restrições exclusivas/de chave só foi capturada pela validação de manifesto se os atributos duplicados aparecerem na mesma instância da extensão. Os pacotes que duplicaram esses atributos não seriam implantados, com informações de diagnóstico limitadas para identificar o problema.
  • Na versão anterior, um keyref cujo referencial está em uma instância diferente da extensão seria bloqueado pela validação de manifesto, que é uma restrição artificial em relação ao suporte ao comportamento de implantação/runtime.

Os aplicativos direcionados Windows 11 que podem usar o novo namespace com4 para todas as extensões windows.comServer/windows.comInterface devem usá-lo. A combinação do novo namespace com os namespaces mais antigos não é recomendada, por motivos que incluem:

  • A implantação do pacote em versões que dão suporte ao novo namespace tratará extensões de todos os namespaces e quaisquer identificadores exclusivos duplicados entre extensões que usam versões de namespace diferentes resultarão em uma falha. O uso dos namespaces mais antigos impede que a validação de manifesto detecte esses erros.
  • Devido a limitações dos esquemas de namespace mais antigos, um keyref na sintaxe antiga não pode se referir a uma chave na nova sintaxe porque eles estão em instâncias diferentes da extensão.

O uso da seguinte semântica de sintaxe com4 tem requisitos de funcionalidade:

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

O exemplo a seguir mostra como registrar uma implementação de servidor fora do processo e em processo para a mesma classe.

Exemplos

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

Novos recursos na extensão com4

  • Suporte para servidores em processo (não gerenciados e gerenciados) e manipuladores personalizados em processo (ou seja, não o manipulador padrão OLE). Atualmente, essa funcionalidade é limitada e restrita por política:
    • Atualmente, isso se destina a ser usado apenas por pacotes com localização externa; ele não funciona para a maioria dos pacotes normais devido a ACLs no local de instalação que impedem que as dlls do pacote sejam carregadas fora do pacote. Para obter mais informações sobre pacotes com local externo, consulte Conceder identidade do pacote empacotando com local externo.
  • Agora é possível associar um TypeLib a um registro de classe.

Requisitos

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