我有一个通过互联网安装多个MSI产品的系统。现在遇到这样的情况:测试人员删除了产品文件夹,但没有删除注册表键值。我的系统通过注册表发现产品已经存在,尝试升级它,但实际上该产品并不存在。
是否有任何MSI函数可以帮助我在静默模式下确定产品状态,并在用户删除文件时卸载整个产品?
我有一个通过互联网安装多个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。