Manifestos de aplicação
Um manifesto de aplicativo (também conhecido como manifesto de aplicativo lado a lado ou manifesto de fusão ) é um arquivo XML que descreve e identifica os assemblies lado a lado compartilhados e privados aos quais um aplicativo deve se vincular em tempo de execução. Estas devem ser as mesmas versões de assembly que foram usadas para testar o aplicativo. Os manifestos do aplicativo também podem descrever metadados para arquivos que são privados para o aplicativo.
Para obter uma lista completa do esquema XML, consulte Esquema de arquivo de manifesto.
Os manifestos do aplicativo têm os seguintes elementos e atributos.
Elemento | Atributos | Necessário |
---|---|---|
de montagem | Sim | |
manifestVersion | Sim | |
noInherit | Não | |
assemblyIdentity | Sim | |
tipo | Sim | |
nome | Sim | |
língua | Não | |
processorArchitecture | Não | |
versão | Sim | |
publicKeyToken | Não | |
compatibilidade | Não | |
aplicação | Não | |
supportedOS | Não | |
ID | Sim | |
maxversiontested | Não | |
ID | Sim | |
dependência | Não | |
dependentesAssembleia | Não | |
arquivo | Não | |
nome | Sim | |
hashalg | Não | |
hash | Não | |
activatableClass | Não | |
nome | Sim | |
threadingModelo | Sim | |
activeCodePage | Não | |
autoElevate | Não | |
desativarTheming | 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 | |
supportedArchitectures | Não | |
trustInfo | Não |
Localização do ficheiro
Se possível, você deve incorporar o manifesto do aplicativo como um recurso no arquivo de .exe
ou .dll
do aplicativo. Se você não pode fazer isso, então você pode colocar o arquivo de manifesto do aplicativo no mesmo diretório que o .exe
ou .dll
.
Para obter mais informações, consulte Instalando assemblies lado a lado.
Nome do ficheiro
Por convenção, um manifesto do aplicativo deve ter o mesmo nome do arquivo executável do aplicativo, com a extensão .manifest
anexada a ele.
Por exemplo, um manifesto de aplicativo que se refere a example.exe
ou example.dll
deve usar a seguinte sintaxe de nome de arquivo (se ID de recurso for 1, você poderá omitir a ID de recurso <> segmento da sintaxe).
example.exe.<ID do recurso> .manifest
example.dll.<ID do recurso> .manifest
Elementos
Os nomes dos elementos e atributos diferenciam maiúsculas de minúsculas. Os valores dos elementos e atributos não diferenciam maiúsculas de minúsculas, exceto para o valor do atributo type.
montagem
Um elemento de contêiner. Seu primeiro subelemento deve ser um noInherit ou assemblyIdentity elemento. Necessário.
O assembly elemento 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.
O assembly elemento tem os seguintes atributos.
Atributo | Descrição |
---|---|
manifestVersion | O atributo manifestVersion deve ser definido como 1.0 . |
noHerdar
Inclua esse elemento em um manifesto do aplicativo para definir os contextos de ativação gerados a partir do 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 herdar porque o assembly deve ser explicitamente projetado para gerenciar a propagação de seu próprio contexto de ativação. O uso do elemento noInherit requer que todos os assemblies dependentes referenciados pelo manifesto do aplicativo tenham um elemento noInherit em seu manifesto de assembly .
Se noInherit for usado em um manifesto, ele deverá ser o primeiro subelemento do assembly elemento. 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 em assembleia se manifesta.
assemblyIdentity
Como o primeiro subelemento de um assembly elemento, assemblyIdentity descreve e identifica exclusivamente o aplicativo que possui esse manifesto do aplicativo. Como o primeiro subelemento de um elemento dependentAssembly, assemblyIdentity descreve um assembly lado a lado exigido pelo aplicativo. Observe que cada assembly referenciado no manifesto do aplicativo requer um assemblyIdentity que corresponda exatamente ao assemblyIdentity no próprio manifesto do assembly referenciado.
O elemento 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. Necessário. |
nome | Nomeia exclusivamente o aplicativo ou assembly. Use o seguinte formato para o nome: Organization.Division.Name . Por exemplo, Microsoft.Windows.mysampleApp . Necessário. |
língua | Identifica o idioma do aplicativo ou assembly. Se o aplicativo ou assembly for específico do idioma, especifique o código do idioma DHTML. No assemblyIdentity de um aplicativo destinado ao uso mundial (idioma neutro) omitir o atributo language. Em um assemblyIdentity de um assembly destinado ao uso mundial (idioma neutro) defina o valor do idioma 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. |
versão | Especifica a versão do aplicativo ou do assembly. Use o formato de versão em quatro partes: mmmmm.nnnnn.ooooo.ppppp . Cada uma das partes separadas por pontos pode ser 0-65535 inclusive. Para obter mais informações, consulte Assembly Versions. Necessário. |
publicKeyToken | Uma cadeia de caracteres hexadecimal de 16 caracteres que representa os últimos 8 bytes do hash SHA-1 da chave pública sob a qual o aplicativo ou assembly está assinado. A chave pública usada para assinar o catálogo deve ser de 2048 bits ou superior. Necessário para todas as montagens lado a lado compartilhadas. |
<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 uma aplicação. Não tem atributos. Opcional. O aplicativo se manifesta sem um elemento de compatibilidade padrão para a compatibilidade do Windows Vista no Windows 7.
O elemento de compatibilidade deve estar no namespace urn:schemas-microsoft-com:compatibility.v1
. Os elementos filho do de compatibilidade também devem estar nesse namespace, por herança ou marcação.
Aplicação
Contém pelo menos um elemento supportedOS. A partir do Windows 10, versão 1903, ele também pode conter um elemento opcional maxversiontested. Não tem atributos. Opcional.
SO suportado
O elemento supportedOS tem o seguinte atributo. Não tem subelementos.
Atributo | Descrição |
---|---|
ID | Defina o atributo Id como {e2011457-1546-43c5-a5fe-008deee3d3f0} executar o aplicativo usando a funcionalidade Vista. Isso pode permitir que um aplicativo projetado 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 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, consulte o Windows 8 and Windows Server 2012 Compatibility Cookbook. 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} -> 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), indo para a guia CPU, clicando com o botão direito do mouse nos rótulos das colunas, "Selecionar coluna...", e marque "Contexto do sistema operacional". No Windows 8.x, também pode encontrar esta coluna disponível no Gestor de Tarefas (taskmgr). O conteúdo da coluna mostra o valor mais alto encontrado ou "Windows Vista" como padrão. |
maxversiontestado
O elemento maxversiontested especifica as versões do Windows nas quais o aplicativo foi testado, começando com a versão mínima do sistema operacional que o aplicativo suporta até a versão máxima. O conjunto completo de versões pode ser encontrado aqui. Isso destina-se a ser usado por aplicativos de área de trabalho que usam Ilhas XAML e que não são implantados em um pacote MSIX. Este elemento é suportado no Windows 10, versão 1903 e versões posteriores.
O elemento maxversiontested tem o seguinte atributo. 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 contra a qual o aplicativo foi testado. Por exemplo, "10.0.18362.1" para Windows 10, versão 1903. Necessá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. Não tem atributos. Opcional.
dependenteAssembleia
O primeiro subelemento de dependentAssembly deve ser um elemento assemblyIdentity que descreve um assembly lado a lado exigido pelo aplicativo. Cada dependente deve estar dentro exatamente de uma dependência. Não tem atributos.
arquivo
Especifica os arquivos que são privados para o aplicativo. Opcional.
O arquivo elemento tem os atributos mostrados na tabela a seguir.
Atributo | Descrição |
---|---|
nome | Nome do ficheiro. Por exemplo, Comctl32.dll. Necessá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 componentes do Tempo de Execução do Windows (WinRT) definidos pelo usuário. Este elemento é suportado no 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
.
O elemento activatableClass tem os seguintes atributos.
Atributo | Descrição |
---|---|
nome | Especifica o identificador de classe para a classe ativável. Necessário. |
threadingModelo | Representa o modelo de threading de apartamento a ser usado para ativar um servidor em processo. Os valores válidos incluem both , STA ou MTA . Consulte este artigo para obter mais informações. Necessá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 para usar UTF-8 como a página de código do processo. Para obter mais informações, consulte 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 não UTF-8 herdada ou páginas de código para uma localidade específica para compatibilidade de aplicativos herdados. As aplicações modernas são fortemente encorajadas a usar Unicode. No Windows 11, activeCodePage também pode ser definida com o valor Legacy ou um nome de localidade, como en-US ou ja-JP.
- Em máquinas configuradas para uma página de código ativo do sistema UTF-8, herdado 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 página de código herdada só é suportada em manifestos do Fusion e apenas a partir do Windows 11.
- Quando um nome de localidade como en-US é fornecido, a página de código do processo será definida adequadamente para essa página de código de localidade. Por exemplo, Windows-1252 e 437 para en-USou 932 para ja-JP.
Este elemento foi adicionado pela primeira vez no Windows 10 versão 1903 (Atualização de maio de 2019). Você pode declarar essa propriedade e destino/execução em compilações anteriores do Windows, mas deve lidar com a deteção e conversão de páginas de código herdadas como de costume. Este 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á habilitado. Não tem atributos. O arquivo executável deve ser assinado digitalmente pelo Windows Publisher. Para uso interno.
desativarTemática
Especifica se a atribuição de um tema a elementos da IU está desativada. TRUE indica desativado. Não tem atributos.
disableWindowFiltering
Especifica se a filtragem de janelas deve ser desabilitada. TRUE desativa a filtragem de janelas para que você possa enumerar janelas imersivas da á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 pontos por polegada (dpi).
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 quiser especificar um comportamento diferente para o Windows 10, versão 1607 do que para uma versão anterior do sistema operacional.
A tabela a seguir descreve o comportamento que resulta com base na presença do elemento dpiAware e no texto que ele contém. O texto dentro do elemento não diferencia maiúsculas de minúsculas.
Estado do elemento dpiAware | Descrição |
---|---|
Ausente | O processo atual é dpi inconsciente por padrão. Você pode alterar essa configuração programaticamente chamando o SetProcessDpiAwareness ou função de SetProcessDPIAware. |
Contém "true" | O processo atual é o sistema dpi consciente. |
Contém "falso" |
Windows Vista, Windows 7 e Windows 8: O comportamento é o mesmo que quando o dpiAware está ausente. Windows 8.1 e Windows 10: O processo atual é dpi inconsciente e você não pode alterar programaticamente essa configuração chamando o SetProcessDpiAwareness ou função SetProcessDPIAware. |
Contém "true/pm" |
Windows Vista, Windows 7 e Windows 8: O processo atual é do sistema dpi consciente. Windows 8.1 e Windows 10: O processo atual é ciente de dpi por monitor. |
Contém "por monitor" |
Windows Vista, Windows 7 e Windows 8: O comportamento é o mesmo que quando o dpiAware está ausente. Windows 8.1 e Windows 10: O processo atual é ciente de dpi por monitor. |
Contém qualquer outra cadeia de caracteres |
Windows Vista, Windows 7 e Windows 8: O comportamento é o mesmo que quando o dpiAware está ausente. Windows 8.1 e Windows 10: O processo atual é dpi inconsciente e você não pode alterar programaticamente essa configuração chamando o SetProcessDpiAwareness ou função SetProcessDPIAware. |
Para obter mais informações sobre configurações de reconhecimento de dpi, consulte High DPI Desktop Application Development on Windows.
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>
dpiConsciência
Especifica se o processo atual reconhece pontos por polegada (dpi).
A versão mínima do sistema operacional que suporta o elemento dpiAwareness é o Windows 10, versão 1607. Para versões que suportam o elemento dpiAwareness, o dpiAwareness substitui o elemento dpiAware. Você pode incluir ambos os elementos em um manifesto se quiser especificar um comportamento diferente para o Windows 10, versão 1607 do que para 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, é utilizado o primeiro item (mais à esquerda) da lista reconhecido pelo sistema operativo. Dessa forma, você pode especificar diferentes comportamentos suportados em versões futuras do sistema operacional Windows.
A tabela a seguir descreve o comportamento que resulta com base na presença do elemento dpiAwareness e no texto que ele contém em seu item reconhecido mais à 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 dpi. |
Não contém itens reconhecidos | O processo atual é dpi inconsciente por padrão. Você pode alterar essa configuração programaticamente chamando o SetProcessDpiAwareness ou função de SetProcessDPIAware. |
Primeiro item reconhecido é "sistema" | O processo atual é o sistema dpi consciente. |
Primeiro item reconhecido é "permonitor" | O processo atual é ciente de dpi por monitor. |
O primeiro item reconhecido é "permonitorv2" | O processo atual usa o contexto de reconhecimento de dpi por monitor-v2. Este item só será reconhecido no Windows 10 versão 1703 ou posterior. |
Primeiro item reconhecido é "inconsciente" | O processo atual é dpi inconsciente. Não é possível alterar programaticamente essa configuração chamando o SetProcessDpiAwareness ou função SetProcessDPIAware. |
Para obter mais informações sobre as configurações de reconhecimento de dpi suportadas por esse elemento, consulte DPI_AWARENESS e DPI_AWARENESS_CONTEXT.
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>
gdiDimensionamento
Especifica se o dimensionamento GDI está habilitado. A versão mínima do sistema operacional que suporta o elemento gdiScaling é o Windows 10 versão 1703.
A estrutura GDI (graphics device interface) pode aplicar o dimensionamento de DPI a primitivos e texto por monitor sem atualizações no próprio aplicativo. Isso pode ser útil para aplicativos 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 dimensionados por esse elemento. Além disso, gráficos e texto que aparecem em bitmaps construídos dinamicamente por aplicativos também não podem ser dimensionados por esse elemento. Para obter mais informações, consulte Improving the high-DPI experience in GDI based Desktop Apps.
Você pode alterar programaticamente essa configuração chamando o SetThreadDpiAwarenessContext ou função SetProcessDpiAwarenessContext com DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
valor.
TRUE indica que esse elemento está habilitado. 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á habilitado. Não tem atributos.
longPathAware
Permite caminhos longos que excedem MAX_PATH de comprimento. Este elemento é suportado no Windows 10, versão 1607 e posterior. 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á habilitado. 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 em seu manifesto de aplicativo para se isolar do driver de impressora e melhorar sua 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 resolução ultra-alta está habilitado. TRUE indica que está habilitado. Não tem atributos.
Msix
Especifica as informações de identidade de um pacote com local externo para o aplicativo atual (consulte Conceder identidade do pacote empacotando com local externo). Este elemento é suportado no Windows 10, versão 2004 e versões posteriores.
O elemento msix deve estar no namespace urn:schemas-microsoft-com:msix.v1
. Ele tem os atributos mostrados na tabela a seguir.
Atributo | Descrição |
---|---|
editora | Descreve as informações do editor. Esse valor deve corresponder ao atributo Publisher no elemento Identity no manifesto do pacote do seu 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 seu 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 seu 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 o que as APIs de heap do Win32 usar.
- O valor SegmentHeap indica que a pilha de segmento será usada. O heap de segmento é uma implementação de heap moderna que geralmente reduzirá o uso geral de memória. Este elemento é suportado no Windows 10, versão 2004 (compilação 19041) e posterior.
- Todos os outros valores são ignorados.
Este 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>
supportedArchitectures
Para executáveis .NET Framework somente IL, especifica uma lista de arquiteturas de processador nativas com as quais o aplicativo é compatível. Pode conter um ou mais dos seguintes valores, separados por espaços:
- amd64
- arm64
Este 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 UAC devem ter um nível de execução solicitado adicionado ao manifesto do aplicativo. Os níveis de execução solicitados especificam os privilégios necessários para um aplicativo. Para obter mais informações, consulte Como o controle de conta de usuário (UAC) afeta seu aplicativo.
O nível de execução solicitado é especificado com o atributo de nível do requestedExecutionLevel descendente 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 a 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 membro do grupo Administradores. Se o processo de abertura não estiver sendo executado com permissões administrativas, o sistema solicitará credenciais. |
mais altoDisponível | O aplicativo é executado no nível de permissão mais alto possível. Se o usuário que inicia 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 êxito 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, marcar o aplicativo com um nível de execução solicitado de requireAdministrator
garante que o sistema identifique este programa como um aplicativo administrativo e execute as etapas de elevação necessárias.
Por padrão, o vinculador do Visual C++ incorpora um fragmento do UAC no manifesto de um aplicativo com um nível de execução de asInvoker
.
O elemento requestedExecutionLevel também tem um atributo opcional uiAccess. Defina esse valor como true
se desejar que o aplicativo ignore os níveis de proteção da interface do usuário e direcione 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. O padrão é false
. Restrições adicionais de configurações de diretiva de segurança podem ser aplicadas, consulte Controle de Conta de Usuário: Elevar somente aplicativos UIAccess instalados em locais seguros. Para obter mais informações, consulte Considerações de segurança para tecnologias assistivas.
Especificar nó requestedExecutionLevel desabilitará a virtualização de arquivos e registros. Se você quiser utilizar a virtualização de arquivo e registro 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
A seguir está um exemplo de um manifesto de aplicativo para um aplicativo chamado MySampleApp.exe. O aplicativo consome o assembly lado a lado SampleAssembly.
<?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>