Из установленного файла, как узнать, какой msi установил файл?

Мой менеджер дал мне список файлов конфигурации с машины, на которой установлен msi.

И он попросил меня найти, от какого msi они пришли. (потому что нам нужно написать некоторую логику для этого msi).

Как узнать, из какого msi пришли эти файлы?

Открытие в orca вручную и поиск затруднены, так как количество msi больше.

есть ли другой альтернативный подход? мы используем Wix для создания msi.


person Samselvaprabu    schedule 26.03.2013    source источник


Ответы (3)


Я бы получил хэш MD5 файлов .config, а затем запросил таблицу MsiFileHash в вашем .msis, пока не нашел соответствующий хэш.

person Rob Mensching    schedule 26.03.2013
comment
Жаль, что у MSI нет такой функции, как RPM (rpm -qf). - person Christopher Painter; 27.03.2013

Нет никакой гарантии, что MSI установил файл. Тем не менее, один быстрый хак, который я часто использовал, — это команда ms-dos findstr.

На машине с установленными файлами конфигурации:

CD %WINDIR%\Installer
FINDSTR -i -m dark.exe *.msi *.msi

Это будет выполнять нечувствительный к регистру поиск по всем файлам MSI для строки dark.exe. Затем используйте ORCA для проверки полученных MSI, чтобы определить, является ли попадание точным и что это за продукт. Напоминание: имя MSI будет представлять собой короткий шестнадцатеричный хэш, поскольку это очищенные / кэшированные MSI, а не исходные MSI.

person Christopher Painter    schedule 26.03.2013

Если вы можете запустить код на машине, то утилита, использующая API установщика Windows, даст вам ответы. Такие утилиты легко пишутся на VC++.

Отправной точкой для работы с API установщика Windows является MsiEnumComponents, который предоставит вам код компонента для каждого компонента, установленного в системе. Оттуда MsiEnumClients даст вам код продукта для каждого продукта, который включает в себя определенный компонент. Затем вы можете использовать MsiGetComponentPath, чтобы получить путь к компоненту. Если вас интересует этот путь, используйте MsiGetProductInfoEx, чтобы узнать о продукте, который его установил, например INSTALLPROPERTY_INSTALLSOURCE и INSTALLPROPERTY_PACKAGENAME.

Звучит сложно, но это не так.

person Tom Blodget    schedule 30.03.2013