After using msiexec to uninstall a program it remains in the control panel (add/remove programs)

被刻印的时光 ゝ 提交于 2019-12-06 16:45:16

The Actual Solution (after debugging):

Run: C:\ProgramData\Package Cache{Product-GUID}\ProductSetup.exe /uninstall /quiet


Duplicate Installation: You probably have a duplicate installation. Unless you accidentally left the Add / Remove Programs applet open during uninstall in which case you should close and reopen it to verify that the entry is still present.

"Noise": You could also have an issue with too many packages present to see that your setup.exe has installed as two separate MSI files. To prevent this, test on a clean virtual and check the Add / Remove Programs list well for other, related entries.

Product Code: You can find the product codes and product names for all products installed by using one of the methods described here: How can I find the product GUID of an installed MSI setup? Maybe try the PowerShell one-liner, or the VBScript.

Rollback: Note that an MSI can rollback its uninstall if a custom action fails during uninstall. This means that the rollback becomes a re-install or at least a recovery of the files that the uninstall removed. So in this scenario it looks like the uninstall ran, but the product was recovered due to a failing custom action. So the uninstall never "committed".

Uninstall: And here are several ways to uninstall MSI packages: Uninstalling an MSI file from the command line without using msiexec. When you have uninstalled all entries I would expect the ARP entry to be gone. Is this your own package? Duplicate installations are very common in such cases as a by-product of rapid test cycles.


Packed GUIDs: The GUIDs you find in the registry are generally packed, or in other words not formatted the same way as in your MSI.

Sample GUID Conversion:

HKEY_CLASSES_ROOT\Installer\Products

Packed GUID: 0076C0A639AEC2738817CDFC311D064A
Normal GUID: {6A0C6700-EA93-372C-8871-DCCF13D160A4}

Here are more details:

The latter link has a VBScript to convert Packed GUIDs to normal GUIDs.


LocalPackage: There is a local package cached on all systems when an MSI is installed. It will be located in %SystemRoot%\Installer. You can use this to locate the file, and you can then right click it in Windows Explorer and select "Uninstall".

The idea here is not to use this as your main approach, but to determine if there is a hidden MSI that you also need to uninstall to get rid of everything from ARP.

Here is a VBScript to show the LocalPackage path (create VB script file on desktop, save and double click. Look for output msiinfo.csv - double click and import to Excel or equivalent - or notepad):

' 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")

output.writeline ("Product Code,Product Name,Product Version,Local Package")

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")

   local=product.InstallProperty("LocalPackage")

   output.writeline (productcode & ", " & name & ", " & version & ", " & local)
Next

output.Close

Similar Answers:

The solution was to run C:\ProgramData\Package Cache{Product-GUID}\ProductSetup.exe /uninstall /quiet. While stein didn't answer that directly above he did in another post so I'm "closing" this and giving him credit.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!