Installation MSI安装失败,因为;已安装此产品的另一个版本";
我们使用带有以下命令行选项的MSIEXEC安装应用程序(MSI):Installation MSI安装失败,因为;已安装此产品的另一个版本";,installation,windows-installer,Installation,Windows Installer,我们使用带有以下命令行选项的MSIEXEC安装应用程序(MSI): MsiExec.exe /x{code} /qn /liwearucmopvx+ C:\Log\UnInstall.tra MsiExec.exe /iC:\Source\App.msi /qn TARGETDIR=C:\Install ALLUSERS=1 /liwearucmopvx+ %C:\Log\Install.tra 大多数情况下,这是可行的,但有时卸载失败(还不确定原因,查看错误)。无论如何,当这种情况发生时,我
MsiExec.exe /x{code} /qn /liwearucmopvx+ C:\Log\UnInstall.tra
MsiExec.exe /iC:\Source\App.msi /qn TARGETDIR=C:\Install ALLUSERS=1 /liwearucmopvx+ %C:\Log\Install.tra
大多数情况下,这是可行的,但有时卸载失败(还不确定原因,查看错误)。无论如何,当这种情况发生时,我在重新安装过程中会出现以下错误:
Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel
有没有办法绕过这个?这意味着要确保我们始终重新安装(如果存在,我们可以简单地自动将其吹走?如果卸载失败,产品仍将在系统上注册-根据故障发生的位置,卸载将回滚,使产品仍然安装 如果您试图在现有安装的基础上重新安装具有相同产品代码但不同版本的产品,MSI将正确地抱怨该产品仍在安装。如果要实现升级行为,则需要更改产品代码并将条目写入升级表,以便MSI能够区分新旧产品,并在发布新版本之前或之后使用RemoveExistingProducts操作删除旧产品 如果您想了解卸载失败的原因,您需要查看日志,通常需要查找“返回值3”,这是失败安装操作的签名。检查,基本上您需要设置msidUpgradeAttributesVersionMaxInclusive位 您不需要说明您正在使用什么来构建安装程序,如果您正在使用或更高版本,您可以使用
MajorUpgrade/@AllowSameVersionUpgrades=“yes”
为您解决此问题
请注意,因为MSI忽略了
第四个产品版本字段,设置
将此属性设置为“是”也允许
当前三个
产品版本字段相同。
例如,产品版本1.0.0.1
将“升级”1.0.0.2998,因为
他们被视为同一个版本
(1.0.0). 这可能会重新引入
严重的错误,所以最安全的选择是
要更改前三个版本
字段,并忽略此属性以获取
默认的no
请注意,以下VBScript将通过搜索已安装产品的列表并查找软件包代码本身,按名称删除软件包,而不必记住软件包代码(如果使用连续集成的自动生成的软件包代码,这将是一件非常痛苦的事)
选项显式
Dim产品名称、产品代码、安装程序
productName=“我的应用程序”
Set installer=Wscript.CreateObject(“WindowsInstaller.installer”)
对于installer.Products中的每个productCode
如果InStr(1,LCase(installer.ProductInfo(productCode,“ProductName”)),LCase(ProductName)),则退出以获取
下一个
如果不是IsEmpty(productCode),则
昏暗的天气
设置WshShell=CreateObject(“WScript.Shell”)
设置oExec=WshShell.Exec(“msiexec/x”和productCode&“/qb/l*v”“%temp%\UninstallApp.log”“”)
如果结束
这个问题比较老,但现有的答案缺少问题和解决方案的本质,但对其他场景有用:
你正在制作MsiExec程序吗?或者这个问题属于其他地方;-)不确定你所说的“使其成为程序”是什么意思?stackoverflow,顾名思义,是一个程序员网站,AFAIK。这是一个合法的问题。添加
msi
和installer
标签以获得更多关注。至于错误:当我尝试安装具有相同主版本、次版本和修订版本的安装项目(MSI)时,我会遇到相同的错误。如果新的安装程序有更高的版本,MSI将为我们正确安装。一旦您整理了产品启发,那么您需要考虑在哪里安排RemoveExistingProducts。如果您的文件版本号在不同版本之间没有更改,那么请提前将REP计划为“卸载然后重新安装”,但请注意不要破坏升级过程中可能需要保留的任何本地状态…此设置使我的测试安装程序能够自行修复,以便我可以成功卸载它。