Как программно найти место установки установленного приложения в Windows - PullRequest
4 голосов
/ 31 января 2011

Я хочу найти установленное местоположение для установки на основе MSI программным способом.Приложение не делает запись места установки в разделе удаления в реестре.Приложение не заполняет свойство ARPINSTALLLOCATION.(Это то же значение, которое указано в «Установка и удаление программ» и хранится в ключе удаления).Однако, деинсталляция все еще находит, где она находится, и может удалить ее.Где хранится эта информация?Windows использует кэшированный установщик MSI для удаления приложения, однако место установки определяется впервые при установке, поэтому эта информация не является частью пакета установщика.

Ответы [ 2 ]

2 голосов
/ 21 марта 2013

Вот версия VBScript, которая использует WindowsInstaller.Installer COM-интерфейс:

Dim installer
Set installer = CreateObject("WindowsInstaller.Installer")
Dim productCode, productName
For Each productCode In installer.Products
    WScript.Echo "ProductCode: " & productCode
    WScript.Echo "ProductName: " & installer.ProductInfo(productCode, "ProductName")
    WScript.Echo "InstallLocation: " & installer.ProductInfo(productCode, "InstallLocation")
    WScript.Echo "LocalPackage: " & installer.ProductInfo(productCode, "LocalPackage")
Next

Узнайте больше об объекте Installer от http://msdn.microsoft.com/en-us/library/windows/desktop/aa369432(v=vs.85).aspx#methods

2 голосов
/ 31 января 2011

Я предполагаю, что когда вы говорите «место установки», вы действительно имеете в виду «в каком каталоге находится EXE-файл приложения?» В противном случае вопрос неоднозначен, потому что MSI не обязательно должен устанавливать «приложение». Он может установить компонент, который не имеет EXE. И он может установить его в нескольких каталогах ...

Но это, вероятно, сработает:

Позвоните MsiGetProductInfo , чтобы получить ARPINSTALLLOCATION. Вам нужно будет знать «название продукта», как оно установлено. в качестве первого парам. Позвоните MsiEnumProducts , чтобы перечислить все установленные "продукты", если необходимо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...