简答:下面的答案可能太详细了,只需卸载升级设置找到的内容,然后尝试
重新安装。
从命令提示符(Windows 键 + 点击 R +
输入:cmd.exe + Enter)运行以下命令:
msiexec.exe /x {GUID-FROM-LOG-FILE}
GUID(很可能)是您的日志文件中的那个:WIX_UPGRADE_DETECTED。然后尝试
重新安装。
卸载失败:如果卸载失败,请尝试运行此Microsoft FixIt tool。有时它可以整理出无法正确卸载的设置。 Alternative, under the hood fix(不推荐)。
UpgradeTable:我要做的第一件事是验证编译后的 MSI 文件中的 UpgradeTable问题。那里的升级代码是否与您的设置的升级代码匹配? (UpgradeCode entry 在 Property Table)。
UpgradeTable 的内容决定了检测到哪些现有安装(如果有)与您的新安装相关。如果您在这里配置奇怪的东西,您甚至可能最终卸载被错误检测为与您的产品相关的竞争产品 - 我不会尝试 :-)。文书工作太多。
卸载:现在,如何摆脱安装问题?您需要获取 ProductCode GUID。有许多方法可以获取这些信息。 它应该是您在 MSI 日志中看到的 WIX_UPGRADE_DETECTED 的产品 GUID,因此请先尝试:
msiexec.exe /x {GUID}
以下是一般意义上的卸载 MSI 设置的答案(各种不同的选项 - 快速阅读?):Uninstalling an MSI file from the command line without using msiexec。
ProductCode (GUID):Rob 已经提到了正确的 MSI API 来列出已安装的产品,我只是补充一下,我在这里有这个答案可以提供帮助:@ 987654324@ 它列出了几个选项来查看您的盒子上安装了什么。
VBScript / COM 自动化:我将仅从上面的第一个链接中内联 VBScript 选项(链接的答案中列出了几个选项):
' Retrieve all ProductCodes (with ProductName and ProductVersion)
Set fso = CreateObject("Scripting.FileSystemObject")
Set output = fso.CreateTextFile("msiinfo.csv", True, True)
Set installer = CreateObject("WindowsInstaller.Installer")
On Error Resume Next ' we ignore all errors
For Each product In installer.ProductsEx("", "", 7)
productcode = product.ProductCode
name = product.InstallProperty("ProductName")
version=product.InstallProperty("VersionString")
output.writeline (productcode & ", " & name & ", " & version)
Next
output.Close
PowerShell:也加入了 PowerShell 选项。在某些情况下,这可能会触发意外的自我修复。
get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize