Вызывает ли запрос класса Win32_Product восстановление msi

MSDN заявляет, что класс Win32_product не оптимизирован для запросов. Процесс также инициирует проверку согласованности установленных пакетов, проверку и восстановление установки. Я попытался выполнить запрос к классу с помощью запроса Select и подделал образец msi-пакета, удалив некоторые установленные файлы, но восстановление не было запущено. Журнал событий показал перенастройку msi, но действий по восстановлению не было. Действительно ли запрос к классу запускает восстановление в случае повреждения установленной программы, и если это так, то есть ли у нас какие-либо примеры, подтверждающие это?


person user2431133    schedule 07.06.2013    source источник
comment
Win32_Product — это зло. Это может привести к перенастройке всех приложений MSI: gregramsey.net/2012/02. /20/win32_product-is-evil   -  person Mick    schedule 09.02.2017


Ответы (2)


Запросы WMI слишком медленные. Запрос Installer.ProductInfo может дать вам результаты за 0,1 секунды, что в 200 раз быстрее, чем WMI на моей машине.

Dim msi : Set msi = CreateObject("WindowsInstaller.Installer")
On Error Resume Next
Dim version : version = msi.ProductInfo("{ProductCode}", "VersionString")
Dim installed : installed = ( Err.Number = 0 )
person Don Gray    schedule 14.10.2013

У вас есть ссылка на источник? Я знаю, что win32_product медленный, потому что он не оптимизирован для запросов, а небольшие запросы занимают у меня около 1 минуты. Если бы он восстанавливал каждый msi, установленный в моей системе (371 согласно «быстрой» проверке с помощью Powershell), я уверен, что это заняло бы гораздо больше времени.

В этом классе есть методы, которые могут инициировать восстановление. Я использую его после установки определенного приложения, чьи ярлыки всегда таинственным образом отсутствуют при установке. Вызов Reinstall(9) позаботится об этом за меня. Это задокументировано здесь: Класс Win32_Product ( окна)

person smooochy    schedule 07.08.2013