我的系统通过互联网安装了几个 MSI 产品,我遇到了一种情况 - 测试人员删除了包含产品的文件夹,但没有删除注册表项,我的系统看到该产品通过注册表存在并尝试升级它,但产品实际上没有存在。
是否有任何 MSI 功能可以帮助我在静默模式下确定产品的状态,以及如果用户删除文件 - 卸载整个产品?
最佳答案
如果您只需要检查产品是否仍然在 Windows Installer 中注册 - 将您的包的产品代码转换为打包的 guid 格式(例如,通过使用 http://www.dwarfsoft.com/blog/2010/06/22/msi-package-code-fun/ 中的脚本)并在 HKCR\Installer\Products 中搜索它的存在。
要从 Windows Installer 数据库中实际删除产品 - 最简单的方法是使用 http://msdn.microsoft.com/en-us/library/windows/desktop/aa370523(v=vs.85).aspx 中的 MsiZap。
关于installation - 微星 : How to check that product is actually installed,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6980045/