Existe uma ferramenta ou mecanismo para recuperar as propriedades públicas disponíveis de um arquivo Windows MSI?
Alguns fornecedores que fornecem arquivos MSI não os documentam, então estou curioso para saber se há uma maneira de expô-los sem o código-fonte.
Property
tabela. Você teve um fluxo de trabalho ou caso de uso específico fora apenas bisbilhotando no MSI?Respostas:
Lessmsi fornece uma linha de comando e um aplicativo interativo para recuperar qualquer atributo do .msi.
Interativamente, abra o arquivo .msi, vá para o modo de exibição Tabela e selecione ou digite "Propriedade". No entanto, enquanto isso fornece os nomes das propriedades, não fornece os valores válidos para a propriedade (ou ainda não descobri o lugar certo para procurar).
Linha de comando para listar a tabela Propriedades para o console (frustrantemente, não pode ser capturada com
> output.csv
redirecionamento simples )fonte
Como o arquivo MSI armazena propriedades públicas em um banco de dados interno, você pode realmente consultá-las usando VBScript e SQL.
Aqui está um exemplo de script que retornará todas as propriedades armazenadas no arquivo MSI. É convenção usar letras maiúsculas para definir propriedades públicas, e é assim que elas geralmente são identificáveis.
fonte
lessmsi é uma ótima ferramenta que certamente funciona aqui se você deseja abrir sua GUI e fazer alguma investigação manual. No entanto, direi que o seguinte comando não apresenta todas as propriedades de maneira confiável:
Uma maneira de (melhor) garantir que você obtenha todas as propriedades possíveis é realmente executar uma instalação, reparar ou desinstalar com o arquivo MSI e registrar o processo. O comando a seguir registra apenas as propriedades e nada mais:
O comando acima é equivalente a:
Meu método preferido, no entanto, é realmente não instalar / remover / reparar (e simplesmente extrair). As vantagens que esse método possui sobre lessmsi é que ele não requer um utilitário de terceiros (ou seja, lessmsi ) e não requer que você mexa com nenhuma instalação. Como você tem espaço em disco suficiente para instalar o programa, você pode:
Observe que o
<absolute_path_to_extract_to>
ponto pode apontar para um diretório inexistente (o comando criará os diretórios necessários ou falhará).Se você odeia a interface do usuário da instalação por qualquer motivo, pode anexar a
/qr
opção, que 'reduzirá' e possivelmente eliminará a interface do usuário sem prejudicar o processo de registro de propriedades. Entretanto, esteja avisado - se você ficar "mais baixo" do que a UI reduzida (viz./qb
|/passive
Ou/qn
|/quiet
),<msi_property_logfile>
poderá haver algumas propriedades ausentes.fonte
A maneira como estou fazendo isso agora é usando o módulo Carbon Powershell. Para instalar o tipo de módulo:
Então simplesmente
Exemplo:
fonte
Eu acho que agora provavelmente a melhor maneira de fazer isso é usando o PowerShell. Aqui está um script que faz o trabalho muito bem: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
fonte