Найти / Predict *.msi место установки файла, читая базу данных *.msi
Всякий раз, когда мы устанавливаем программное обеспечение, ОС Windows будет сохранять резервную копию установщика *.msi в папке C:\Windows\Installer\ location.
Итак, я перебираю все файлы MSI, присутствующие в "C:\Windows\Installer\"
Я хочу подготовить список сопоставления, где список будет иметь файл *.msi и его расположение по умолчанию.
Допустим, C:\Windows\Installer[ключ продукта]\123xR23.msi Предположим, что "123xR23.msi" - это файл резервной копии для установки WinZip. И установщик установил WinZip в папку "C:\Program Files(x86)\WinZip"
Таким образом, список будет иметь следующую запись "123xR23.msi","C:\Program Files(x86)\WinZip"
Пожалуйста, помогите мне.
Спасибо
1 ответ
Прежде всего, зачем вам это нужно?
Существует сопоставление этих *.msi-файлов, которые уже существуют в реестре по адресу HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\\Products\\InstallerProperties, тогда значение msi находится в LocalPackage
S-1-5-18 - это идентификатор безопасности локальной системы.
ProductGUID также немного странный. В вашем установщике вы увидите что-то вроде
2F7DBBE6-8EBC-495C-9041-46A772F4E311
но GUID продукта в пути реестра будет выглядеть так
6EBBD7F2CBE8C5940914647A274F3E11
Есть определенная причина для этого, но я не знаю, что это такое. Вам просто нужно преобразовать руководство по вашему продукту в другое представление при поиске в реестре.
Существует также раздел реестра с именем InstallLocation, который должен содержать место установки пакета msi. Это не всегда заполняется, хотя. Возможно, каталог установки хранится где-то еще в реестре. Не знаю, возможно, вам придется осмотреться.
Редактировать: похоже, что каждый компонент установки получает запись по GUID в реестре, которая также содержит путь, по которому он был установлен. Это может помочь вам найти место установки определенного MSI, если оно не указано в разделе "Установка", упомянутом выше. Согласно комментарию Майкла, я бы предложил воспользоваться функциями, связанными с Msi ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa372420(v=vs.85).aspx)