1

MSDN 声明 Win32_product 类未进行查询优化。该过程还启动对已安装包的一致性检查,验证和修复安装。我尝试使用 Select 查询查询类并通过删除一些已安装的文件来篡改示例 msi 包,但未触发修复。事件日志显示 msi 重新配置,但没有修复操作。如果已安装的程序损坏,查询类是否真的会触发修复,如果确实如此,那么我们是否有任何示例来支持这一点?

4

2 回答 2

2

WMI 查询太慢。查询 Installer.ProductInfo 可以在 0.1 秒内得到结果,这比我机器上的 WMI 快 200 倍。

Dim msi : Set msi = CreateObject("WindowsInstaller.Installer")
On Error Resume Next
Dim version : version = msi.ProductInfo("{ProductCode}", "VersionString")
Dim installed : installed = ( Err.Number = 0 )
于 2013-10-14T04:07:14.223 回答
0

你有源链接吗?我知道 win32_product 很慢,因为它没有优化查询,小查询对我来说大约需要 1 分钟。如果它对我系统上安装的每个 msi 进行修复(根据 Powershell 的“快速”检查为 371),我敢肯定它需要更长的时间。

该类中有一些方法可以触发修复。我在安装一个特定的应用程序后使用它,它的快捷方式在安装时总是神秘地丢失。调用 Reinstall(9) 会为我解决这个问题。它记录在这里: Win32_Product Class (Windows)

于 2013-08-07T23:23:29.520 回答