Recuperando propriedades públicas de um arquivo MSI

11

Existe uma ferramenta ou mecanismo para recuperar as propriedades públicas disponíveis de um arquivo MSI do Windows?

Alguns fornecedores que fornecem arquivos MSI não documentam eles mesmos, por isso estou curioso para saber se existe uma maneira de expô-los sem o código-fonte.

    
por Ken Barber 01.05.2012 / 15:09

5 respostas

8

O Lessmsi fornece uma linha de comando, bem como um aplicativo interativo para recuperar qualquer atributo do .msi.

Interativamente, abra o arquivo .msi e vá para Vista de tabela e selecione ou digite "Propriedade". No entanto, enquanto isso fornece os nomes das propriedades, ele não fornece os valores válidos para a propriedade mencionada (ou eu não descobri o local correto para procurar).

Linha de comando para listar a tabela Propriedades para o console (frustrante, não pode ser capturada com o simples > output.csv redirect)

lessmsi l -t Property ...\path\to\setup.msi
    
por 15.10.2014 / 21:25
1

Dado que o arquivo MSI armazena propriedades públicas em um banco de dados interno, você pode simplesmente consultá-las usando VBScript e SQL.

Aqui está um script de exemplo que retornará todas as propriedades armazenadas no arquivo MSI. É uma convenção usar letras maiúsculas para definir propriedades públicas, de modo que elas são geralmente identificáveis.

    
por 10.01.2013 / 11:10
0

A maneira que estou fazendo agora é usando o módulo Carbon Powershell. Para instalar o tipo de módulo:

Install-Module -Name 'Carbon' -AllowClobber

Então, simplesmente

msi your_msi_path.msi

Exemplo:

msi putty-64bit-0.70-installer.msi

ProductName                 ProductVersion Manufacturer ProductCode                         

-----------                 -------------- ------------ -----------                         

PuTTY release 0.70 (64-bit) 0.70.0.0       Simon Tatham 45b3032f-22cc-40cd-9e97-4da7095fa5a2
    
por 23.01.2018 / 15:36
0

lessmsi é uma ótima ferramenta que certamente funciona aqui se você estiver disposto a abrir sua GUI e fazer uma investigação manual. No entanto, eu direi que o comando a seguir não apresenta todas as propriedades de forma confiável:

lessmsi l -t Property <msi_name>

Uma maneira de (melhor) garantir que você obtenha todas as propriedades possíveis é executar uma instalação, reparo ou desinstalação com o arquivo MSI e registrar o processo. O comando a seguir registra apenas as propriedades e nada mais:

<msi_name> /lp! <msi_property_logfile>

O comando acima é equivalente a:

msiexec /lp! <msi_property_logfile> /i <msi_name>

Meu método preferido, no entanto, é não , na verdade, instalar / remover / reparar (e simplesmente extrair em seu lugar). As vantagens que este método tem sobre lessmsi é que ele não requer um utilitário de terceiros (isto é, lessmsi ), e não requer que você mexa com nenhuma instalação . Dado que você tem espaço em disco suficiente para instalar o programa, você pode fazer:

msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>

Observe que <absolute_path_to_extract_to> pode apontar para um diretório inexistente (o comando criará os diretórios necessários ou falhará).

Se você odeia a UI de instalação por qualquer motivo, é possível anexar a opção /qr , o que reduzirá e possivelmente eliminará a IU sem prejudicar o processo de registro de propriedade. Esteja avisado, no entanto - se você for "inferior" à interface do usuário reduzida (por exemplo, /qb | /passive ou /qn | /quiet ), talvez o seu <msi_property_logfile> não tenha algumas propriedades.

    
por 22.09.2018 / 23:51
-1

Acho que agora, provavelmente, a melhor maneira de fazer isso é usar o powershell. Aqui está um script que faz o trabalho muito bem: link

    
por 13.05.2016 / 18:31

Tags