O que é o formato de ficheiro MSI?
Arquivos com a extensão .msi armazenam um pacote de instalação de aplicativo ou um pacote de driver para Microsoft Windows. Os arquivos .msi possuem uma estrutura padronizada definida por metadados e contêm todos os recursos necessários para instalar um aplicativo. O nome MSI vem de Microsoft Installer, o nome original da tecnologia antes da Microsoft renomeá-la para Windows Installer.
Estrutura do pacote MSI
Pacotes .msi são bancos de dados relacionais salvos no formato OLE2 Compound File Binary - o mesmo contêiner usado por documentos binários legados do Office. Devido a esse contêiner compartilhado, os primeiros oito magic bytes (D0 CF 11 E0 A1 B1 1A E1) não são exclusivos do .msi; o formato é distinguido por seus fluxos de banco de dados internos, como _Tables e _Columns. Cada pacote é dividido em:
- Um ou mais produtos a serem instalados
- Componentes do produto - as unidades atômicas de instalação (arquivos, chaves de registro, atalhos)
- Recursos (Features) - estruturas hierárquicas maiores que compreendem componentes; os usuários podem escolher recursos opcionais durante a configuração
- Caminhos de chave (Key paths) para componentes - elementos críticos verificados durante a instalação ou desinstalação do componente
Embora um único instalador possa agrupar vários produtos, ele não pode verificar nativamente dependências entre produtos. O gerenciamento de dependências é tratado por ferramentas de desinstalação ou através da GUI. O .msi continua sendo o formato de instalador dominante para softwares corporativos e legados do Windows.
Criando e usando pacotes do Windows Installer
Pacotes .msi são criados com ferramentas dedicadas, como o WiX Toolset, Orca (incluído no Windows SDK para inspeção e edição de bancos de dados) ou produtos de autoria comerciais. O processo de instalação é conduzido pelo msiexec.exe e dividido em três fases:
- Interface do usuário - os usuários configuram as opções de instalação
- Execução - a instalação real, executada em modo *imediato* ou *adiado* (pendente)
- Rollback - se a instalação falhar, a transação é revertida e nenhuma alteração no sistema persiste
O conteúdo de um pacote .msi pode ser extraído sem executar o instalador usando o 7-Zip ou via msiexec /a (instalação administrativa).
Versões do Windows Installer
Os pacotes .msi estrearam com o Office 2000 em 1999 (Windows Installer 1.0); o runtime também foi integrado ao Windows 2000. A versão 5.0 foi lançada em 2009 junto com o Windows 7 e o Windows Server 2008 R2. Formatos intimamente relacionados incluem .msp (pacotes de patch que entregam diffs binários para produtos instalados) e arquivos de transformação .mst que modificam o comportamento do instalador em tempo de execução. O padrão mais recente .msix, introduzido em 2018, combina tecnologias .msi, .appx, App-V e ClickOnce para melhor segurança, sandboxing e distribuição pela Store - mas o .msi continua a ser amplamente implantado para software corporativo e de desktop tradicional. Os arquivos de carga (payload) dentro de um .msi são normalmente compactados como fluxos .cab incorporados no banco de dados.
Segurança e proteção
RISCO: MEDIUMUm MSI é um instalador de aparência confiável, o que o torna um disfarce favorito para malware: invasores enviam MSIs com trojans (geralmente com Custom Actions maliciosas que executam código durante a instalação) ou atualizações de software falsas. Instale MSIs apenas do site oficial do fornecedor e prefira pacotes assinados - clique com o botão direito > Propriedades > Assinaturas Digitais mostra o editor; um MSI não assinado de uma fonte desconhecida é um sinal de alerta. Como o MSI é executado com privilégios de instalador, um malicioso pode fazer qualquer coisa que um administrador pode. O truque de renomear/7-Zip permite inspecionar o conteúdo antes de executar.
Detalhes do formato
em resumoProgramas que abrem arquivos MSI
Detalhes técnicos
especificação profunda| Formato de contêiner | OLE2 Compound File Binary (CFBF) - mesma estrutura externa dos arquivos binários legados .doc e .xls do Office |
| Magic bytes (offset 0) | D0 CF 11 E0 A1 B1 1A E1 - assinatura OLE2 compartilhada com outros Documentos Compostos; não exclusiva apenas ao MSI |
| Tipo MIME | application/x-msi |
| Tabelas internas do banco de dados | Tabelas relacionais de esquema fixo, incluindo File, Registry, Component, Feature, Property e CustomAction |
| Armazenamento de carga (payload) | Arquivos compactados como fluxos Cabinet (.cab) incorporados no banco de dados ou referenciados como arquivos .cab externos |
| Algoritmos de compressão | Fluxos Cabinet usam compressão LZX ou MSZIP (compatível com zlib) |
| Modelo de transação | Rollback total em caso de falha - todas as alterações de arquivo e registro são desfeitas via um mecanismo de script de cópia de sombra |
| Mecanismo de execução | msiexec.exe (integrado ao Windows); instalar: /i, remover: /x {ProductCode}, reparar: /f, extração administrativa: /a |
| Modelo de privilégios | Suporta modos de instalação por máquina (elevado, ALLUSERS=1) e por usuário (não elevado) |
| Instalação anunciada (Advertised) | Classes COM e atalhos podem ser anunciados - registrados, mas não implantados até o primeiro uso (instalação sob demanda) |
| Suporte a patches | Arquivos de patch .msp entregam diffs binários e dados de tabela suplementares visando um código de produto MSI específico |
| Suporte a transformações | Arquivos de transformação .mst substituem valores de propriedade e dados de tabela no momento da instalação sem modificar o .msi base |
| Módulos de mesclagem (Merge modules) | Pacotes de módulos de mesclagem .msm encapsulam componentes reutilizáveis para inclusão em múltiplos bancos de dados .msi |
| Ações personalizadas (Custom actions) | Lógica pré e pós-instalação pode executar VBScript, JScript, pontos de entrada de DLL ou processos EXE externos |
| Registro de desinstalação | Grava automaticamente entradas em HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} |
| Versões de runtime | Windows Installer 1.0 (1999) até 5.0 (2009, incluído no Windows 7 e Server 2008 R2) |
| Lançado | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Especificação | learn.microsoft.com |
Conversões de MSI
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos MSI.