Compartilhar via


Manifestos de aplicativo

Um manifesto do aplicativo (também conhecido como manifesto do aplicativo lado a lado ou manifesto de fusão) é um arquivo XML que descreve e identifica os assemblies lado a lado particulares e compartilhados aos quais um aplicativo deve se associar em tempo de execução. Elas devem ser as mesmas versões de assembly que foram usadas para testar o aplicativo. Os manifestos de aplicativo também podem descrever metadados para arquivos que são particulares ao aplicativo.

Para obter uma lista completa do esquema XML, confira Esquema de arquivo de manifesto.

Os manifestos do aplicativo têm os seguintes elementos e atributos.

Elemento Atributos Obrigatório
assembly Sim
manifestVersion Sim
noInherit Não
assemblyIdentity Sim
tipo Sim
name Sim
linguagem Não
processorArchitecture Não
version Sim
publicKeyToken Não
compatibilidade Não
application Não
supportedOS Não
Id Sim
maxversiontested Não
Id Sim
dependência Não
dependentAssembly Não
file Não
name Sim
hashalg Não
hash Não
activatableClass Não
name Sim
threadingModel Sim
activeCodePage Não
autoElevate Não
disableTheming Não
disableWindowFiltering Não
dpiAware Não
dpiAwareness Não
gdiScaling Não
highResolutionScrollingAware Não
longPathAware Não
printerDriverIsolation Não
ultraHighResolutionScrollingAware Não
msix Não
heapType Não
supportedArquiteturas Não
trustInfo Não

Local do arquivo

Se possível, você deve inserir o manifesto do aplicativo como recurso no arquivo .exe do aplicativo ou .dll. Se isso não for possível, você pode colocar o arquivo de manifesto do aplicativo no mesmo diretório que o .exe ou .dll.

Para obter mais informações, confira Como instalar assemblies lado a lado.

Nome do arquivo

Por convenção, um manifesto do aplicativo deve ter o mesmo nome que o arquivo executável do aplicativo, com a extensão .manifest anexada a ele.

Por exemplo, um manifesto do aplicativo que se refere a example.exe ou example.dll deve usar a seguinte sintaxe de nome de arquivo (se a ID do recurso for 1, você poderá omitir o segmento de <ID do recurso> da sintaxe).

example.exe.<ID do recurso>.manifest

example.dll.<ID do recurso>.manifest

Elementos

Os nomes de elementos e atributos diferenciam maiúsculas de minúsculas. Os valores de elementos e atributos não diferenciam maiúsculas de minúsculas, exceto o valor do atributo de tipo.

assembly

Um elemento de contêiner. Seu primeiro subelemento deve ser um elemento noInherit ou assemblyIdentity. Obrigatório.

O elemento assembly deve estar no namespace urn:schemas-microsoft-com:asm.v1. Os elementos filho do assembly também devem estar nesse namespace, por herança ou marcação.

Cada elemento do assembly tem os seguintes atributos.

Atributo Descrição
manifestVersion O atributo manifestVersion deve ser definido como 1.0.

noInherit

Inclua esse elemento em um manifesto do aplicativo para definir os contextos de ativação gerados no manifesto com o sinalizador "no inherit". Quando esse sinalizador não é definido em um contexto de ativação e o contexto de ativação está ativo, ele é herdado por novos threads no mesmo processo, janelas, procedimentos de janela e Chamadas de Procedimento Assíncrono. A definição desse sinalizador impede que o novo objeto herde o contexto ativo.

O elemento noInherit é opcional e normalmente é omitido. A maioria dos assemblies não funciona corretamente usando um contexto de ativação sem herança, pois o assembly deve ser criado explicitamente para gerenciar a propagação do seu próprio contexto de ativação. O uso do elemento noInherit exige dos os assemblies dependentes referenciados pelo manifesto do aplicativo tenham um elemento noInherit no manifesto do assembly.

Se noInherit for usado em um manifesto, ele deverá ser o primeiro subelemento do elemento assembly. O elemento assemblyIdentity deve vir imediatamente após o elemento noInherit. Se noInherit não for usado, assemblyIdentity deverá ser o primeiro subelemento do elemento assembly. O elemento noInherit não tem elementos filho. Não é um elemento válido no manifestos do assembly.

assemblyIdentity

Como o primeiro subelemento de um elemento assembly, o assemblyIdentity descreve e identifica exclusivamente o aplicativo que possui esse manifesto do aplicativo. Como o primeiro subelemento de um elemento dependentAssembly, o assemblyIdentity descreve um assembly lado a lado exigido pelo aplicativo. Observe que cada assembly referenciado no manifesto do aplicativo exige um assemblyIdentity que corresponda exatamente ao assemblyIdentity no próprio manifesto do assembly referenciado.

Cada elemento do assemblyIdentity tem os seguintes atributos. Não tem subelementos.

Atributo Descrição
tipo Especifica o tipo de aplicativo ou assembly. O valor deve ser win32 e tudo em minúsculas. Obrigatório.
name Nomeia exclusivamente o aplicativo ou o assembly. Use o seguinte formato para o nome: Organization.Division.Name. Por exemplo, Microsoft.Windows.mysampleApp. Obrigatório.
linguagem Identifica a linguagem do aplicativo ou assembly. Se o aplicativo ou assembly for específico da linguagem, especifique o código de linguagem DHTML. No assemblyIdentity de um aplicativo destinado ao uso mundial (linguagem neutra) omita o atributo de linguagem.
Em um assemblyIdentity de um assembly destinado ao uso mundial (linguagem neutra), defina o valor de linguagem como *. Opcional.
processorArchitecture Especifica o processador. Os valores válidos incluem x86, amd64, arm e arm64. Você também pode especificar *, o que garante que todas as plataformas sejam direcionadas. Opcional.
version Especifica a versão do aplicativo ou assembly. Use o formato de versão de quatro partes: mmmmm.nnnnn.ooooo.ppppp. Cada uma das partes separadas por períodos pode ser 0-65535 inclusive. Para saber mais, confira Versões do Assembly. Obrigatório.
publicKeyToken Uma cadeia de caracteres hexadecimal de 16 caracteres que representa os últimos 8 bytes do hash SHA-1 da chave pública na qual o aplicativo ou assembly está assinado. A chave pública usada para assinar o catálogo deve ter 2.048 bits ou mais. Obrigatório para todos os assemblies compartilhados lado a lado.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 ...
<dependency>
   <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

compatibilidade

Contém pelo menos um aplicativo. Ele não tem atributos. Opcional. Manifestos do aplicativo sem um elemento de compatibilidade padrão para compatibilidade com o Windows Vista no Windows 7.

O elemento de compatibilidade deve estar no namespace urn:schemas-microsoft-com:compatibility.v1. Os elementos filho da compatibilidade também devem estar nesse namespace, por herança ou marcação.

aplicativo

Contém pelo menos um elemento supportedOS. A partir do Windows 10, versão 1903, também pode conter um elemento maxversiontested opcional. Ele não tem atributos. Opcional.

supportedOS

O elemento supportedOS tem o atributo a seguir. Não tem subelementos.

Atributo Descrição
Id Defina o atributo Id como {e2011457-1546-43c5-a5fe-008deee3d3f0} para executar o aplicativo usando a funcionalidade do Vista. Isso pode permitir que um aplicativo criado para o Windows Vista seja executado em um sistema operacional posterior.
Defina o atributo Id como {35138b9a-5d96-4fbd-8e2d-a2440225f93a} para executar o aplicativo usando a funcionalidade do Windows 7.
Os aplicativos que oferecem suporte à funcionalidade do Windows Vista, Windows 7 e Windows 8 não exigem manifestos separados. Nesse caso, adicione os GUIDs para todos os sistemas operacionais Windows.
Para obter informações sobre o comportamento do atributo Id no Windows, confira o Guia de compatibilidade do Windows 8 e do Windows Server 2012.
Os GUIDs a seguir correspondem aos sistemas operacionais indicados:
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} –> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 e Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} –> Windows 8.1 e Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} –> Windows 8 e Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a} e> Windows 7 e Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} –> Windows Vista e Windows Server 2008
Você pode testar isso no Windows 7 ou Windows 8.x executando o Monitor de Recursos (resmon). Vá para a guia CPU, clique com o botão direito do mouse nos rótulos de coluna "Selecionar coluna..." e marque "Contexto do sistema operacional". No Windows 8.x, você também pode encontrar essa coluna disponível no Gerenciador de Tarefas (taskmgr). O conteúdo da coluna mostra o valor mais alto encontrado ou "Windows Vista" como padrão.

maxversiontested

O elemento maxversiontested especifica as versões do Windows nas quais o aplicativo foi testado, a partir da versão mínima do sistema operacional compatível com o aplicativo até a versão máxima. O conjunto completo de versões pode ser encontrado aqui. Isso deve ser usado pelos aplicativos da área de trabalho que usam Ilhas XAML e que não são implantados em um pacote MSIX. Este elemento é compatível com o Windows 10, versão 1903 e versões posteriores.

O elemento maxversiontested tem o atributo a seguir. Não tem subelementos.

Atributo Descrição
Id Defina o atributo Id como uma cadeia de caracteres de versão de 4 partes, que especifica a versão máxima do Windows na qual o aplicativo foi testado. Por exemplo, "10.0.18362.1" para Windows 10, versão 1903. Obrigatório.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependência

Contém pelo menos um dependentAssembly. Ele não tem atributos. Opcional.

dependentAssembly

O primeiro subelemento de dependentAssembly deve ser um assemblyIdentity que descreve um assembly lado a lado exigido pelo aplicativo. Cada dependentAssembly deve estar dentro de exatamente uma dependência. Ele não tem atributos.

arquivo

Especifica arquivos que são privados para o aplicativo. Opcional.

O elemento arquivo tem os atributos mostrados na tabela a seguir.

Atributo Descrição
name Nome do arquivo. Por exemplo, Comctl32.dll. Obrigatório.
hashalg Algoritmo usado para criar um hash do arquivo. Esse valor deve ser SHA1. Opcional.
hash Um hash do arquivo referido pelo nome. Uma cadeia hexadecimal de comprimento dependendo do algoritmo de hash. Opcional.

activatableClass

Permite que aplicativos da área de trabalho não empacotados usem os componentes do WinRT (Tempo de Execução do Windows) definidos pelo usuário. Este elemento é compatível com o Windows 10, versão 1903 e versões posteriores. Para obter mais informações, consulte este artigo.

O elemento activatableClass deve estar no namespace urn:schemas-microsoft-com:winrt.v1.

Cada elemento do activatableClass tem os seguintes atributos.

Atributo Descrição
name Especifica o identificador de classe da classe ativada. Obrigatório.
threadingModel Representa o modelo Apartment Threading a ser usado para ativar um servidor em processo. Os valores válidos incluem both, STA ou MTA. Confira este artigo para obter mais informações. Obrigatório.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

No Windows 10, esse elemento força um processo a usar UTF-8 como a página de código do processo. Para saber mais, confira Usar a página de código UTF-8. No Windows 10, o único valor válido para activeCodePage é UTF-8.

A partir do Windows 11, esse elemento também permite a seleção da página de código herdada não UTF-8 ou páginas de código para uma localidade específica para compatibilidade de aplicativos herdados. Os aplicativos modernos são encorajados enfaticamente a usar o Unicode. No Windows 11, activeCodePage também pode ser definido como o valor Legacy ou um nome de localidade como en-US ou ja-JP.

  • Nos com configurados para uma página de código ativa do sistema UTF-8, o Legacy reverterá o processo para as páginas de código de localidade do sistema. Se a localidade do sistema não tiver páginas de código definidas, o Windows-1252/437 será usado. A configuração da página de código Herdada só é compatível com os manifestos do Fusion e somente a partir do Windows 11.
  • Quando um nome de localidade como en-US é fornecido, a página de código do processo é definida apropriadamente para essa página de código de localidade. Por exemplo, Windows-1252 e 437 para en-US ou 932 para ja-JP.

Esse elemento foi adicionado pela primeira vez no Windows 10 versão 1903 (atualização de maio de 2019). Você pode declarar essa propriedade e direcionar/executar nas compilações anteriores do Windows, mas deve lidar com a detecção e conversão da página de código herdada normalmente. Esse elemento não tem atributos.

O exemplo a seguir demonstra como usar esse elemento para forçar o processo atual a usar UTF-8 como a página de código do processo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

Especifica se a elevação automática está habilitada. TRUE indica que está habilitada. Ele não tem atributos. O arquivo executável deve ser assinado digitalmente pelo Windows Publisher. Para uso interno.

disableTheming

Especifica se a função de fornecer um tema aos elementos da interface do usuário está desabilitada. TRUE indica desabilitada. Ele não tem atributos.

disableWindowFiltering

Especifica se a filtragem de janela deve ser desabilitada. TRUE desativa a filtragem de janela para que você possa enumerar as janelas imersivas na área de trabalho. disableWindowFiltering foi adicionado no Windows 8 e não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

Especifica se o processo atual reconhece o DPI (pontos por polegada).

Windows 10, versão 1607: o elemento dpiAware será ignorado se o elemento dpiAwareness estiver presente. Você pode incluir ambos os elementos em um manifesto, se desejar especificar um comportamento diferente para o Windows 10, versão 1607, em relação a uma versão anterior do sistema operacional.

A tabela a seguir descreve o comportamento resultante da presença do elemento dpiAware e o texto que ele contém. O texto dentro do elemento não diferencia maiúsculas de minúsculas.

Estado do elemento dpiAware Descrição
Absent O processo atual não reconhece o DPI por padrão. Você pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.
Contém "true" O processo atual reconhece o DPI do sistema.
Contém "false" Windows Vista, Windows 7 e Windows 8: o comportamento é o mesmo de quando o dpiAware está ausente.
Windows 8.1 e Windows 10: o processo atual não reconhece o DPI e você não pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.
Contém "true/pm" Windows Vista, Windows 7 e Windows 8: o processo atual reconhece o DPI do sistema.
Windows 8.1 e Windows 10: o processo atual reconhece o DPI do monitor.
Contém "do monitor" Windows Vista, Windows 7 e Windows 8: o comportamento é o mesmo de quando o dpiAware está ausente.
Windows 8.1 e Windows 10: o processo atual reconhece o DPI do monitor.
Contém qualquer outra cadeia de caracteres Windows Vista, Windows 7 e Windows 8: o comportamento é o mesmo de quando o dpiAware está ausente.
Windows 8.1 e Windows 10: o processo atual não reconhece o DPI e você não pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.

Para obter mais informações sobre as configurações de reconhecimento de DPI, confira Desenvolvimento de aplicativos da área de trabalho com alto DPI no Windows.

O dpiAware não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAwareness

Especifica se o processo atual reconhece o DPI (pontos por polegada).

A versão mínima do sistema operacional que oferece suporte ao elemento dpiAwareness é o Windows 10, versão 1607. Para versões que oferecem suporte ao elemento dpiAwareness, o dpiAwareness substitui o elemento dpiAware. Você pode incluir ambos os elementos em um manifesto, se desejar especificar um comportamento diferente para o Windows 10, versão 1607, em relação a uma versão anterior do sistema operacional.

O elemento dpiAwareness pode conter um único item ou uma lista de itens separados por vírgula. Neste último caso, o primeiro item (à esquerda) da lista reconhecido pelo sistema operacional é usado. Dessa forma, você pode especificar comportamentos diferentes com suporte nas versões futuras do sistema operacional Windows.

A tabela a seguir descreve o comportamento resultante da presença do elemento dpiAwareness e o texto que ele contém no item reconhecido à esquerda. O texto dentro do elemento não diferencia maiúsculas de minúsculas.

Status do elemento dpiAwareness: Descrição
O elemento está ausente O elemento dpiAware especifica se o processo reconhece o DPI.
Não contém itens reconhecidos O processo atual não reconhece o DPI por padrão. Você pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.
O primeiro item reconhecido é "system" O processo atual reconhece o DPI do sistema.
O primeiro item reconhecido é "permonitor" O processo atual reconhece o DPI do monitor.
O primeiro item reconhecido é "permonitorv2" O processo atual usa o contexto de reconhecimento de DPI do monitor v2. Este item só será reconhecido no Windows 10 versão 1703 ou posterior.
O primeiro item reconhecido é "unaware" O processo atual não reconhece o DPI. Você não pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.

Para obter mais informações sobre as configurações de reconhecimento de DPI compatíveis com esse elemento, confira DPI_AWARENESS e DPI_AWARENESS_CONTEXT.

O dpiAwareness não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiScaling

Especifica se o ajuste de GDI está habilitado. A versão mínima do sistema operacional que oferece suporte ao elemento gdiScaling é o Windows 10 versão 1703.

A estrutura de GDI (interface de dispositivo gráfico) pode aplicar o ajuste de DPI a primitivas e texto do monitor sem atualizações no próprio aplicativo. Isso pode ser útil para aplicativos de GDI que não estão mais sendo atualizados ativamente.

Gráficos não vetoriais (como bitmaps, ícones ou barras de ferramentas) não podem ser ajustados por esse elemento. Além disso, os gráficos e o texto que aparecem em bitmaps construídos dinamicamente por aplicativos também não podem ser ajustados por esse elemento. Para obter mais informações, consulte Melhorando a experiência de alto DPI em aplicativos de área de trabalho baseados em GDI.

Você pode alterar programaticamente essa configuração chamando a função SetThreadDpiAwarenessContext ou SetProcessDpiAwarenessContext com DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED valor.

TRUE indica que esse elemento está habilitado. Ele não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Especifica se o reconhecimento de rolagem de alta resolução está habilitado. TRUE indica que está habilitada. Ele não tem atributos.

longPathAware

Permite caminhos longos que excedem MAX_PATH de comprimento. Este elemento é compatível com o Windows 10, versão 1607 e posteriores. Para obter mais informações, consulte este artigo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

Especifica se o isolamento do driver de impressora está habilitado. TRUE indica que está habilitada. Ele não tem atributos. O isolamento do driver de impressora melhora a confiabilidade do serviço de impressão do Windows, permitindo que os drivers de impressora sejam executados em processos separados do processo no qual o spooler de impressão é executado. O suporte para isolamento de driver de impressora foi iniciado no Windows 7 e no Windows Server 2008 R2. Um aplicativo pode declarar o isolamento do driver de impressora no manifesto do aplicativo para se isolar do driver de impressora e melhorar a confiabilidade. Ou seja, o aplicativo não falhará se o driver da impressora tiver um erro.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

Especifica se o reconhecimento de rolagem de ultra-alta resolução está habilitado. TRUE indica que está habilitada. Ele não tem atributos.

MSIX

Especifica as informações de identidade de um pacote com local externo para o aplicativo atual (confira Conceder identidade de pacote empacotando com local externo). Este elemento é compatível com o Windows 10, versão 2004 e versões posteriores.

O elemento msix deve estar no namespace urn:schemas-microsoft-com:msix.v1. Tem os atributos mostrados na tabela a seguir.

Atributo Descrição
Publicador Descreve as informações do editor. Esse valor deve corresponder ao atributo Publisher no elemento Identity no manifesto do pacote do aplicativo empacotado com local externo.
packageName Descreve o conteúdo do pacote. Esse valor deve corresponder ao atributo Name no elemento Identity no manifesto do pacote do aplicativo empacotado com local externo.
applicationId O identificador exclusivo do aplicativo. Esse valor deve corresponder ao atributo Id no elemento Application no manifesto do pacote do aplicativo empacotado com local externo.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

heapType

Substitui a implementação de heap padrão para as APIs de heap do Win32 a serem usadas.

  • O valor SegmentHeap indica que o heap de segmento será usado. O heap de segmento é uma implementação de heap moderna que geralmente reduz o uso geral de memória. Este elemento é compatível com o Windows 10, versão 2004 (build 19041) e posteriores.
  • Todos os outros valores são ignorados.

Esse elemento não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArquiteturas

Para executáveis somente IL do .NET Framework, especifica uma lista de arquiteturas de processador nativo com as quais o aplicativo é compatível. Pode conter um ou mais dos seguintes valores, separados por espaços:

  • amd64
  • arm64

Esse elemento não tem atributos.

Este elemento é suportado no Windows 11, versão 24H2 e posterior.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

trustInfo

Todos os aplicativos compatíveis com o UAC devem ter um nível de execução solicitado adicionado ao manifesto de aplicativos. Níveis de execução solicitados especificam os privilégios necessários para um aplicativo. Para obter mais informações, confira Como o UAC (Controle de Conta de Usuário) afeta seu aplicativo.

O nível de execução solicitado é especificado com o atributo level do descendente requestedExecutionLevel do elemento trustInfo. Os valores permitidos para nível são:

Valor Descrição
asInvoker O aplicativo é executado no mesmo nível de permissão que o processo que o iniciou. Você pode elevar o aplicativo para um nível de permissão mais alto selecionando Executar como Administrador.
requireAdministrator O aplicativo é executado usando permissões de administrador. O usuário que inicia o aplicativo deve ser um membro do grupo Administradores. Se o processo de abertura não estiver em execução com permissões administrativas, o sistema solicitará credenciais.
highestAvailable O aplicativo é executado no nível de permissão mais alto possível. Se o usuário que iniciou o aplicativo for membro do grupo Administradores, essa opção será a mesma que level="requireAdministrator". Se o nível de permissão mais alto disponível for maior do que o nível do processo de abertura, o sistema solicitará credenciais.

Definir o nível como highestAvailable garante que o aplicativo será executado com os usuários que são membros do grupo Administradores e aqueles que não são. Se o aplicativo só pode funcionar com acesso administrativo ao sistema, marcá-lo com um nível de execução solicitado de requireAdministrator garante que o sistema identifique esse programa como aplicativo administrativo e realiza as etapas de elevação necessárias.

Por padrão, o vinculador do Visual C++ insere um fragmento do UAC no manifesto de um aplicativo com o nível de execução de asInvoker.

O elemento requestedExecutionLevel também tem um atributo opcional uiAccess. Defina esse valor como true, se você quiser que o aplicativo ignore os níveis de proteção da interface do usuário e conduza a entrada para janelas de permissão mais alta na área de trabalho. Defina esse atributo como true somente para aplicativos de acessibilidade da interface do usuário. Assume o padrão de false. Restrições adicionais das configurações de política de segurança podem ser aplicadas, confira Controle de Conta de Usuário: eleve somente os aplicativos UIAccess instalados em locais seguros. Para obter mais informações, confira Considerações de segurança para tecnologias adaptativas.

Especificar o nó requestedExecutionLevel desabilitará a virtualização de arquivos e registros. Se você quiser utilizar a Virtualização de Arquivos e Registros para compatibilidade com versões anteriores, omita o nó requestedExecutionLevel.

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

Exemplo

Veja a seguir um exemplo de um manifesto do aplicativo para um aplicativo chamado MySampleApp.exe. O aplicativo consome o assembly SampleAssembly lado a lado.

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>