如何在 运行 msiexec /x 时将 "this action is only valid for products that are currently installed" 抑制到不存在的项目?
How can I suppress "this action is only valid for products that are currently installed" upon running msiexec /x to non-existing item?
我试图在安装更新版本之前确保某些软件不存在。长话短说,vendor requires me to do so, and although they recommend me to repair after install, that causes other issues such as undesirable restart (trust me I tried /norestart and I have even 以确保它不会重新启动)但总的来说,它让我们非常头疼,却没有得到我们想要的结果。
所以我试着在安装他们的新软件之前简单地卸载这个软件,因为这似乎有更高的成功率并且没有不必要的问题。
现在我通过 ExePackage(使用 WiX 工具集)使用 Vital="no" 通过 运行 批处理文件来完成此操作。我必须做 Vital="no" 因为当旧的安装程序不存在并且如果我调用 msiexec /x
,它 returns 错误说明
this action is only valid for products that are currently installed
当旧安装存在时,它工作正常,但如果不存在,它就会出错。
现在 Vital="no" 可以正常工作,但如果可以的话,我更愿意使用 msiexec /x
来抑制错误。
有什么已知的方法可以解决这个问题吗?
为了解决这个问题,我检查了卸载键,只对列出的产品调用了msiexec /x
。虽然在我自己的情况下,我们正在切换安装程序技术(太多 MSI 错误......)并且正在卸载我们自己的旧版本。
安装状态:如果您知道产品的 GUID(替换此处示例 GUID):
Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductState("{6C961B30-A670-8A05-3BFE-3947E84DD4E4}")
有多种可能的安装状态。 Here is a more comprehensive script to check product installation state. Check section 7 here.
主要升级:我想您知道主要升级是如何进行的? (卸载现有安装并安装较新版本,并选择发生顺序的选项)。实际上,他们可以通过其升级 table 中的设置在安装时卸载任何其他 MSI 软件包。这甚至包括有竞争力的产品(不得不说有点疯狂)。但是,您可以在 technical issues 的时间内从 MSI 中轻松再次安装它们。您可以通过 Burn setup.exe 引导程序(我认为您使用的)来安装它们。
我试图在安装更新版本之前确保某些软件不存在。长话短说,vendor requires me to do so, and although they recommend me to repair after install, that causes other issues such as undesirable restart (trust me I tried /norestart and I have even
所以我试着在安装他们的新软件之前简单地卸载这个软件,因为这似乎有更高的成功率并且没有不必要的问题。
现在我通过 ExePackage(使用 WiX 工具集)使用 Vital="no" 通过 运行 批处理文件来完成此操作。我必须做 Vital="no" 因为当旧的安装程序不存在并且如果我调用 msiexec /x
,它 returns 错误说明
this action is only valid for products that are currently installed
当旧安装存在时,它工作正常,但如果不存在,它就会出错。
现在 Vital="no" 可以正常工作,但如果可以的话,我更愿意使用 msiexec /x
来抑制错误。
有什么已知的方法可以解决这个问题吗?
为了解决这个问题,我检查了卸载键,只对列出的产品调用了msiexec /x
。虽然在我自己的情况下,我们正在切换安装程序技术(太多 MSI 错误......)并且正在卸载我们自己的旧版本。
安装状态:如果您知道产品的 GUID(替换此处示例 GUID):
Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductState("{6C961B30-A670-8A05-3BFE-3947E84DD4E4}")
有多种可能的安装状态。 Here is a more comprehensive script to check product installation state. Check section 7 here.
主要升级:我想您知道主要升级是如何进行的? (卸载现有安装并安装较新版本,并选择发生顺序的选项)。实际上,他们可以通过其升级 table 中的设置在安装时卸载任何其他 MSI 软件包。这甚至包括有竞争力的产品(不得不说有点疯狂)。但是,您可以在 technical issues 的时间内从 MSI 中轻松再次安装它们。您可以通过 Burn setup.exe 引导程序(我认为您使用的)来安装它们。