Manifestos de aplicativo
Um manifesto do aplicativo (também conhecido como um manifesto de aplicativo lado a lado ou um manifesto de fusão ) é um arquivo XML que descreve e identifica os assemblies compartilhados e privados lado a lado 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 do aplicativo também podem descrever metadados para arquivos privados do aplicativo.
Para obter uma listagem completa do esquema XML, consulte 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 | |
Aplicativo | Não | |
supportedOS | Não | |
Id | Sim | |
maxversiontested | Não | |
Id | Sim | |
Dependência | Não | |
dependentAssembly | Não | |
Arquivo | Não | |
name | Sim | |
Hashalg | Não | |
hash | Não | |
activatableClass | Não | |
name | Sim | |
Threadingmodel | Sim | |
activeCodePage | Não | |
autoElevar | 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 | |
Trustinfo | Não |
Local do arquivo
Se possível, você deve inserir o manifesto do aplicativo como um recurso no arquivo do .exe
aplicativo ou .dll
. Se você não puder fazer isso, poderá 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 arquivo
Por convenção, um manifesto do aplicativo deve ter o mesmo nome que o arquivo executável do aplicativo, com a .manifest
extensão acrescentada a ele.
Por exemplo, um manifesto do aplicativo que se refere example.exe
ou example.dll
deve usar a sintaxe de nome de arquivo a seguir (se a ID do recurso for 1, você poderá omitir o < segmento de ID> do recurso da sintaxe).
example.exe.<ID do> recurso. Manifesto
example.dll.<ID do> recurso. Manifesto
Elementos
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 pelo valor do atributo de tipo.
assembly
Um elemento container. Seu primeiro subelemento deve ser um elemento noInherit ou assemblyIdentity . Obrigatórios.
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.
O elemento 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 do manifesto com o sinalizador "não herdar". 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. Definir esse 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 não herdado 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 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 nos manifestos do assembly.
assemblyIdentity
Como o primeiro subelemento de um elemento assembly , 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 uma assemblyIdentity que corresponda exatamente à assemblyIdentity no manifesto do assembly do próprio assembly referenciado.
O elemento assemblyIdentity tem os seguintes atributos. Ele não tem subelementos.
Atributo | Descrição |
---|---|
tipo | Especifica o tipo de aplicativo ou assembly. O valor deve ser win32 e todos em letras minúsculas. Obrigatórios. |
name | Nomeia exclusivamente o aplicativo ou assembly. Use o seguinte formato para o nome: Organization.Division.Name . Por exemplo, Microsoft.Windows.mysampleApp . Obrigatórios. |
linguagem | Identifica o idioma do aplicativo ou assembly. Se o aplicativo ou assembly for específico do idioma, especifique o código de linguagem DHTML. Na assemblyIdentity de um aplicativo destinado ao uso mundial (idioma neutro) omita o atributo de linguagem. Em uma assemblyIdentity de um assembly destinado ao uso mundial (idioma neutro) defina o valor da linguagem como * . Opcional. |
Processorarchitecture | Especifica o processador. Os valores válidos incluem x86 , amd64 , arm e arm64 . Você também pode especificar * , que garante que todas as plataformas sejam direcionadas. Opcional. |
version | Especifica a versão do aplicativo ou do 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 obter mais informações, consulte Versões do assembly. Obrigatórios. |
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 ter 2.048 bits ou mais. Necessário para todos os assemblies lado a lado compartilhados. |
<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 de aplicativo sem um elemento de compatibilidade padrão para compatibilidade do 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 COM SUPORTE . A partir do Windows 10, versão 1903, ele também pode conter um elemento maxversiontested opcional. Ele não tem atributos. Opcional.
supportedOS
O elemento com suporte doOS tem o atributo a seguir. Ele 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 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 dão suporte à funcionalidade do Windows Vista, do Windows 7 e do 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 Guia de Compatibilidade do Windows 8 e do Windows Server 2012. Os seguintes GUIDs 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 no Windows 8.x executando o Monitor de Recursos (resmon), acessando a guia CPU, clicando com o botão direito do mouse nos rótulos de coluna, "Selecionar Coluna..." e verificando "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 o padrão. |
maxversiontested
O elemento maxversiontested especifica as versões do Windows em que o aplicativo foi testado em relação à versão mínima do sistema operacional à qual o aplicativo dá suporte até a versão máxima. O conjunto completo de versões pode ser encontrado aqui. Isso se destina a ser usado por aplicativos da área de trabalho que usam Ilhas XAML e que não são implantados em um pacote MSIX. Esse elemento tem suporte no Windows 10, versão 1903 e versões posteriores.
O elemento maxversiontested tem o atributo a seguir. Ele 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 em que o aplicativo foi testado. Por exemplo, "10.0.18362.1" para Windows 10, versão 1903. Obrigatórios. |
<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 elemento 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.
file
Especifica arquivos que são privados para o aplicativo. Opcional.
O elemento file tem os atributos mostrados na tabela a seguir.
Atributo | Descrição |
---|---|
name | Nome do arquivo. Por exemplo, Comctl32.dll. Obrigatórios. |
Hashalg | Algoritmo usado para criar um hash do arquivo. Esse valor deve ser SHA1. Opcional. |
hash | Um hash do arquivo referenciado pelo nome. Uma cadeia de caracteres hexadecimal de comprimento, dependendo do algoritmo de hash. Opcional. |
activatableClass
Permite que aplicativos da área de trabalho não empacotados usem componentes do WinRT (Windows Runtime definidos pelo usuário). Esse elemento tem suporte 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 |
---|---|
name | Especifica o identificador de classe para a classe ativável. Obrigatórios. |
Threadingmodel | Representa o modelo de threading apartment 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. Obrigatórios. |
<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 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.
Começando no 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. Os aplicativos modernos são altamente incentivados a usar Unicode. Em Windows 11, activeCodePage também pode ser definido como o valor Legacy ou um nome de localidade, como en-US ou ja-JP.
- Em computadores configurados 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 de página de código herdada só tem suporte em manifestos fusion e apenas começando com Windows 11.
- Quando um nome de localidade como en-US for 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-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 destino/executar em builds anteriores do Windows, mas deve lidar com a detecção e a conversão de página de código herdadas como de costume. 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 ele está habilitado. Ele não tem atributos. O arquivo executável deve ser assinado digitalmente pelo Windows Publisher. Para uso interno.
disableTheming
Especifica se a atribuição de elementos de interface do usuário a um tema está desabilitada. TRUE indica desabilitado. Ele não tem atributos.
disableWindowFiltering
Especifica se a filtragem de janela deve ser desabilitada. TRUE desabilita a filtragem de janela 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 tem reconhecimento de 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 |
---|---|
Absent | O processo atual não tem conhecimento do dpi por padrão. Você pode alterar essa configuração programaticamente chamando a função SetProcessDpiAwareness ou SetProcessDPIAware . |
Contém "true" | O processo atual tem reconhecimento de 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 tem conhecimento do dpi e você não pode alterar essa configuração programaticamente chamando a função SetProcessDpiAwareness ou SetProcessDPIAware. |
Contém "true/pm" | Windows Vista, Windows 7 e Windows 8: O processo atual tem reconhecimento de dpi do sistema. Windows 8.1 e Windows 10: o processo atual tem reconhecimento de dpi por monitor. |
Contém "por 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 tem reconhecimento de dpi por 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 tem conhecimento do dpi e você não pode alterar essa configuração programaticamente chamando a função SetProcessDpiAwareness ou SetProcessDPIAware. |
Para obter mais informações sobre as configurações de reconhecimento de dpi, consulte Desenvolvimento de aplicativos de área de trabalho de DPI alto 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 tem reconhecimento de pontos por polegada (dpi).
A versão mínima do sistema operacional que dá suporte ao elemento dpiAwareness é o Windows 10, versão 1607. Para versões que dão suporte ao 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írgulas. No último caso, o primeiro item (mais à esquerda) na lista reconhecida pelo sistema operacional é usado. Dessa forma, você pode especificar comportamentos diferentes com suporte 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 mais à esquerda reconhecido. O texto dentro do elemento não diferencia maiúsculas de minúsculas.
elemento dpiAwareness status: | Descrição |
---|---|
O elemento está ausente | O elemento dpiAware especifica se o processo está ciente do dpi. |
Não contém itens reconhecidos | O processo atual não tem conhecimento do dpi por padrão. Você pode alterar essa configuração programaticamente chamando a função SetProcessDpiAwareness ou SetProcessDPIAware . |
O primeiro item reconhecido é "system" | O processo atual tem reconhecimento de dpi do sistema. |
O primeiro item reconhecido é "permonitor" | O processo atual tem reconhecimento 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. |
O primeiro item reconhecido é "inconsciente" | O processo atual não tem conhecimento do DPI. Não é possível alterar essa configuração programaticamente 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, 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>
gdiScaling
Especifica se o dimensionamento de GDI está habilitado. A versão mínima do sistema operacional que dá suporte ao elemento gdiScaling é o Windows 10 versão 1703.
A estrutura GDI (interface de dispositivo gráfico) pode aplicar o dimensionamento de DPI a primitivos e texto por monitor sem atualizações para o próprio aplicativo. Isso pode ser útil para que os aplicativos GDI não sejam mais atualizados ativamente.
Elementos 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 textos que aparecem em bitmaps construídos dinamicamente por aplicativos também não podem ser dimensionados por esse elemento.
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 ele está habilitado. Ele não tem atributos.
longPathAware
Habilita caminhos longos que excedem MAX_PATH de comprimento. Esse elemento tem suporte 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 da impressora está habilitado. TRUE indica que ele está habilitado. 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 em que o spooler de impressão é executado. Suporte para isolamento de driver de impressora 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 alta resolução está habilitado. TRUE indica que ele está habilitado. Ele 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). Esse elemento tem suporte 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 |
---|---|
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 o 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 o 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 o 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 reduzirá o uso geral de memória. Esse elemento tem suporte no Windows 10, versão 2004 (build 19041) e posterior.
- 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>
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 UAC (Controle de Conta de Usuário) afeta seu aplicativo.
O nível de execução solicitado é especificado com o atributo level do requestedExecutionLevel descendent do elemento trustInfo . Os valores permitidos para o 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 êxito com os usuários que são membros do grupo Administradores e aqueles que não são. Se o aplicativo só puder funcionar com acesso administrativo ao sistema, marcar o aplicativo com um nível de execução solicitado de 'requireAdministrator' garante que o sistema identifique esse programa como um aplicativo administrativo e execute as etapas de elevação necessárias.
Por padrão, o vinculador do Visual C++ insere um fragmento UAC no manifesto de um aplicativo com um nível de execução de 'asInvoker'.
O elemento requestedExecutionLevel também tem um atributo 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 direcionar a entrada para janelas de permissão mais alta na área de trabalho; caso contrário, uiAccess='false'
. O padrão é uiAccess='false'. Defina esse argumento como uiAccess='true'
apenas para aplicativos de acessibilidade da interface do usuário. Para obter mais informações, consulte Considerações de segurança para tecnologias adaptativas.
Especificar o nó requestedExecutionLevel desabilitará a virtualização de arquivo e registro. 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
Veja a seguir 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" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<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>
<assemblyIdentity type="win32"
name="myOrganization.myDivision.mySampleApp"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="Proseware.Research.SampleAssembly"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Comentários
Enviar e exibir comentários de