无提示MSI卸载不存在的GUID

时间:2011-02-22 09:49:40

标签: windows-installer batch-file uninstall

我正在尝试安静地卸载我的应用程序。如果实际安装了应用程序,则此方法很有用,但是当用户收到错误消息时,必须单击“确定”继续。

我的命令:

MSIEXEC.EXE /qb /L* "%LOGDIR%\myuninstaller.log" /x{GUID}

问题是我需要在AD中部署的脚本中清理应用程序的所有旧版本。我不知道在什么计算机上安装了什么版本,并且首先让脚本确定是困难的。

如何让MSIEXEC NOT 抱怨卸载不存在的GUID?

4 个答案:

答案 0 :(得分:3)

http://technet.microsoft.com/en-us/library/cc759262(WS.10).aspx#BKMK_SetUI

上找到答案

我似乎需要使用/qn代替/qb

答案 1 :(得分:2)

如果您的所有应用在“KEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall”中都有正确的GUID键,您也可以执行以下操作:

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID} >NUL 2>NUL || MSIEXEC.EXE /qb /L* "%LOGDIR%\myuninstaller.log" /x{GUID}

如果密钥存在,这只会启动msiexec.exe(并且比使用/ qn在不存在的GUID上触发msiexec.exe更有效。)

答案 2 :(得分:0)

对于我的情况,它适用于:(注意&&运算符)

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID} >NUL 2>NUL && MSIEXEC.EXE /qf /L* "%LOGDIR%\myuninstaller.log" /x{GUID}

根据此链接http://www.robvanderwoude.com/condexec.php,只有在第一个命令成功执行(没有错误结果)时才会执行后续命令(msiexec.exe)。您可以尝试单独测试每个命令

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID} >C:\registrycheck.log

答案 3 :(得分:0)

即使你有一个接受的答案,请从serverfault.com查看这篇文章:Is it possible to disable msiexec help GUI?。有许多方法可以通过自动化卸载MSI,因此您根本不必处理msiexec.exe。

也许这个Uninstalling an MSI file from the command line without using msiexec也很有用。