Ниже используются VBScript и COM .Вы также можете сделать то же самое с помощью функций Win32 (C ++) .Я полагаю, что COM по сути является оберткой поверх реальных функций Win32.
Хмм, это звучит странно, но вы можете легко получить функции и их состояние:
Set i = Wscript.CreateObject("WindowsInstaller.Installer")
state = i.FeatureState("{PRODUCT-CODE-GUID-HERE}", "FeatureName")
MsgBox state
Состояние объекта: 3
- это нормальная локальная установка.Остальное: Что означает номер состояния функции? ( пример использования ).
Если вам необходимо получить код продукта из кода обновления:
Set installer = CreateObject("WindowsInstaller.Installer")
Set upgrades = installer.RelatedProducts("{UPGRADE-CODE-GUID-HERE}")
For Each u In upgrades
MsgBox u, vbOKOnly, "Product Code: "
Next
Обратите внимание, что многие продукты могут использовать один и тот же код обновления.
Фрагмент для удаления функции. Используйте Orca, чтобы найти реальное имя функции :
Set i = Wscript.CreateObject("WindowsInstaller.Installer")
config = i.ConfigureFeature ("{PRODUCT-CODE-GUID-HERE}", "FeatureName", 2)
Чтобы установить функцию, значение должно быть 3
(msiInstallStateLocal
), для удаления 2
(msiInstallStateAbsent
).
Ссылки :