Como descobrir em qual pacote do instalador um determinado exe / dll pertence

10

Eu gostaria de saber o que o MSI instalou uma determinada dll ou exe no meu sistema. Eu sei que o Windows corrige arquivos excluídos se eles pertencerem a um pacote instalado. Posso consultar essas informações sem realmente excluir o arquivo? Existe uma ferramenta ou API do Win32 para verificar a qual pacote um arquivo pertence?

    
por wigy 06.06.2013 / 10:54

2 respostas

5

Parece que pode haver um jeito afinal de contas! Recentemente, descobri entradas de registro para arquivos instalados pelo Windows Installers na seguinte subárvore:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

Eu escrevi um pequeno script Python para procurar no instalador por um arquivo usando as informações armazenadas lá:

> python windows-installer-file-search.py opus.dll
File: C:\Program Files (x86)\Mumble\opus.dll
Product: Mumble 1.2.13
Install user: S-1-5-18
Cached installer: C:\Windows\Installerf6b072.msi

Está disponível aqui: link

    
por 27.01.2016 / 20:09
4

Se você está certo em encontrar apenas agulhas plausíveis no palheiro, este rápido e sujo abuso de 7-Zip funcionará :

7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt

Em seguida, abra needlelist.txt em qualquer editor de texto, pesquise needlename.dll e você encontrará o pacote .msi correspondente nas listagens geradas pelo 7-Zip.

(Nota: Esse método é 'sujo' porque apenas informa quais pacotes .msi contém um arquivo chamado needlename.dll . Mas provavelmente é bom para a maioria dos casos de uso.)

    
por 08.07.2013 / 00:27