O que é o formato de ficheiro MANIFEST?
Um arquivo .manifest é um documento XML usado pelo sistema operacional Windows para fornecer metadados de aplicativos, informações de vinculação de assembly e configuração de segurança. Ele contém dados estruturados em texto simples que descrevem um executável ou pacote de instalação - incluindo privilégios necessários, assemblies dependentes, extensões de arquivo e parâmetros de tempo de execução.
O Windows usa arquivos .manifest em duas funções principais. A primeira é a vinculação de assembly Side-by-Side (SxS), introduzida com o Windows XP: o manifesto informa ao Windows de qual versão das bibliotecas compartilhadas (como a DLL de Controles Comuns) um aplicativo depende, evitando conflitos de «DLL Hell» onde vários programas entram em conflito por componentes compartilhados. Um manifesto também pode ativar o mecanismo de estilos visuais - permitindo a aparência temática dos controles - sem alterar a funcionalidade principal do aplicativo ou os recursos disponíveis.
A segunda função principal, introduzida no Windows Vista, é declarar um nível de privilégio UAC (Controle de Conta de Usuário). Um manifesto especificando requireAdministrator ou asInvoker informa ao Windows qual elevação solicitar quando o usuário inicia o programa.
O nome do arquivo .manifest normalmente corresponde ao executável que ele acompanha, com .manifest anexado - por exemplo, o manifesto para notepad.exe chama-se notepad.exe.manifest e fica na mesma pasta. Alternativamente, o manifesto pode ser compilado diretamente no .EXE ou .DLL como um recurso Win32 incorporado (tipo de recurso RT_MANIFEST), que é a abordagem preferida para aplicativos modernos.
Arquivos .manifest também são comumente compilados em arquivos CDF-MS, dando ao programa subjacente acesso mais rápido aos parâmetros do aplicativo em tempo de execução.
Segurança e proteção
RISCO: LOWUm .manifest é texto XML simples - ele não pode ser executado, portanto, abrir um para leitura é seguro. O risco real está na edição: alterar o manifesto de um programa (especialmente o nível de UAC ou dependências de assembly) pode impedir a inicialização ou causar um erro de «configuração lado a lado incorreta», portanto, faça backup do original primeiro e só edite se entender o que está fazendo. Não exclua um .exe.manifest que esteja ao lado de um programa - alguns aplicativos falham ao iniciar sem seu manifesto externo. Manifestos em si não são um vetor de malware, embora, como em qualquer arquivo, deva-se ter cautela com extensões duplas enganosas.
Detalhes do formato
em resumo- Java JAR MANIFEST.MF - Dentro de arquivos .jar, META-INF/MANIFEST.MF é um manifesto de texto simples (não XML) que lista a classe principal e os atributos.
- Manifesto de Web App - PWAs usam um manifesto JSON (geralmente manifest.json/manifest.webmanifest) que descreve o aplicativo web instalável.
- Manifesto de cache / ativos - Várias ferramentas (HTML5 AppCache, ferramentas de build, engines de jogos) gravam arquivos .manifest em texto/JSON listando os ativos incluídos.
Programas que abrem arquivos MANIFEST
Detalhes técnicos
especificação profunda| Estrutura do arquivo | XML (texto UTF-8); elemento raiz <assembly> no namespace urn:schemas-microsoft-com:asm.v1 |
| Tipo MIME | application/xml |
| Assinatura binária | Nenhuma - texto XML simples; a maioria dos arquivos começa com <?xml version="1.0"?> ou diretamente com <assembly |
| Método de incorporação | Pode ser incorporado como um recurso Win32 (tipo RT_MANIFEST, ID 1 para arquivos .exe, ID 2 para arquivos .dll) dentro do binário host em vez de existir como um arquivo separado |
| Nomenclatura de arquivo externo | Nomeado após o executável associado com .manifest anexado (ex: app.exe.manifest); deve ser colocado no mesmo diretório que o executável |
| Funções principais | Vinculação de versão de assembly Side-by-Side (SxS), declaração de nível de privilégio UAC, ativação de estilos visuais Common Controls v6, ativação de COM sem registro |
| Níveis de confiança UAC | Valores de requestedExecutionLevel suportados: asInvoker, highestAvailable, requireAdministrator |
| Namespaces XML principais | urn:schemas-microsoft-com:asm.v1 (identidade de assembly e SxS); urn:schemas-microsoft-com:asm.v3 (UAC trustInfo) |
| Vinculação de versão SxS | Lista nomes de assembly dependentes e quads de versão exatos (ex: 6.0.0.0) para redirecionar o carregamento de DLL em tempo de execução sem entradas de registro |
| Suporte de plataforma | Windows XP e posterior; UAC requestedExecutionLevel e ativação de estilos visuais requerem Windows Vista ou posterior |
| Mecanismo de tempo de execução | O Windows carrega manifestos em um Contexto de Ativação (actctx) no início do processo para redirecionar vinculações de assembly de forma transparente |
| Alvo de compilação | Pode ser compilado em arquivos .cdf-ms (Catalog Definition Format - Manifest Store) para acesso mais rápido aos parâmetros em tempo de execução |
| Ferramentas de desenvolvedor | Criado e incorporado pelo Visual Studio, MSBuild e a ferramenta mt.exe Manifest Tool (Windows SDK); editável em qualquer editor de texto simples |
| Tamanho de arquivo típico | 1-10 KB; contém apenas declarações de metadados XML sem carga binária |
| Lançado | Windows XP (2001); UAC privilege manifests since Windows Vista (2007) |
| Especificação | learn.microsoft.com |
Conversões de MANIFEST
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos MANIFEST.