Windows安装程序,检查包

时间:2016-01-06 10:29:00

标签: windows windows-installer

使用Windows,我可以通过脚本/命令行卸载软件,如下所示:

msiexec /x {00000000-0000-0000-0000-000000000000}

是否有方法只测试给定包的存在而不影响它?

我对true / false或任何其他输入感兴趣,指示该程序包是否存在于计算机上,并且可以使用Windows安装程序使用给定命令将其删除。

对于上下文:我正在使用NSIS,并且需要在找到特定包时修改我的安装程序行为。可以使用命令行,因为它可以返回值,也可以通过cmd使用VBScript。

绝对不会对包裹产生任何影响,也不会向用户显示流程,因此例如修理是不可接受的。

1 个答案:

答案 0 :(得分:1)

找到这个的“正确”方法是调用诸如MsiQueryProductState之类的函数。这可用于各种其他时尚,包括VB可访问的Installer.ProductState property。如果您尝试生成计算机上的内容列表,MsiEnumProductsInstaller.Products(或其Ex版本)更合适。看来PowerShell可以通过WMI调用访问等效信息。

不太正确的方法包括调用msiexec /f {PROD-UCT-CODE}来修复产品或找不到它,或者直接查询注册表是否存在产品的Uninstall key条目(它的子项名称与{匹配} {1}};检查32位和64位密钥以及每个机器和每个用户的安装(如果需要),例如使用{PROD-UCT-CODE}