1. Leftover registry entry from a broken uninstall
What's actually happening here is: you uninstalled a program (or it got nuked by a clean-up tool gone rogue) but Windows Installer still has a record of it in the registry. When any application tries to query that product—like an update checker, a driver installer, or a game launcher—Windows throws back 0x0000064E because the actual .msi or .exe is gone. The error means "product is uninstalled" in plain English, but the system isn't smart enough to remove the stale reference on its own.
This happens most often with:
- Adobe Creative Cloud components that didn't fully uninstall
- Visual C++ redistributable packages left behind after a Visual Studio removal
- Antivirus or security suite leftovers (looking at you, Norton and McAfee)
- Any program that uses Windows Installer (.msi) and crashes mid-uninstall
The fix is finding that registry key and deleting it. Here's the exact process.
Step 1: Identify the product GUID
Open Event Viewer (press Win + R, type eventvwr.msc, hit Enter). Go to Windows Logs > Application. Look for events from MsiInstaller with the error 0x0000064E. The event details contain the Product Code GUID—something like {12345678-1234-1234-1234-123456789012}. Note that GUID.
If Event Viewer shows nothing (common on Windows 11 if logging is off), use PowerShell:
Get-WinEvent -LogName Application | Where-Object {$_.ProviderName -eq 'MsiInstaller' -and $_.Level -eq 2} | Format-List TimeCreated, Message
Look for any event mentioning Product: (GUID).
Step 2: Remove the orphaned registry entry
Back up the registry before touching anything. I've seen people delete the wrong key and break a core Windows feature. Open Regedit, highlight Computer, then File > Export. Save as .reg somewhere safe.
Now navigate to:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Also check:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Look under both paths for a key matching the GUID. If you can't find it, also search manually by pressing Ctrl+F and entering the GUID. Delete that key. Right-click, Delete.
You might also need to remove the corresponding entry under:
HKEY_CLASSES_ROOT\Installer\Products
This stores MSI product metadata. The GUID there is encoded differently—it's the same data but without dashes and in a different byte order. Use the ProductName string inside each subkey to match your program. Delete the wrong subkey, not the whole Products folder.
Restart your machine. The error should be gone.
2. Windows Installer service corruption
Sometimes the error isn't about a specific product but about the Windows Installer service itself being hosed. This happens after a bad Windows update (looking at you, KB5000842) or if you've run a registry cleaner that nuked a shared component. The error shows up for all MSI-based installs or repairs, not just one program.
Check the service status first:
sc query msiserver
If it shows STATE : 1 STOPPED or STATE : 4 RUNNING but still errors, the service itself isn't the problem—the underlying DLLs are.
Fix: Re-register the Windows Installer engine
Open an admin Command Prompt (not PowerShell for this—it behaves differently with regsvr32). Run these in order:
regsvr32 /u msihnd.dll
regsvr32 /u msi.dll
regsvr32 msihnd.dll
regsvr32 msi.dll
Wait for each success message. Don't skip the unregister steps—the reason step 3 works is that you're forcing the system to re-read the DLLs from disk, clearing any corrupted cached state. Then restart the Windows Installer service:
net stop msiserver
net start msiserver
Test your install. If it still fails, the Windows Installer files themselves may be damaged. Run a system file check:
sfc /scannow
After it finishes, reboot. If sfc finds nothing, use the Microsoft Program Install and Uninstall Troubleshooter from Microsoft's site. It's not a silver bullet, but it can fix some installer registry corruption. Skip the "automatically apply repairs" checkbox—let it show you what it found first. Manually review before letting it nuke anything.
3. Third-party uninstaller left behind a ghost entry
Tools like Revo Uninstaller, Geek Uninstaller, or even CCleaner's uninstall tool are aggressive. They'll rip out files and registry keys, but they often miss one specific entry: the InstallProperties subkey in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData. This is where Windows Installer stores product-specific settings per user. If that key persists, Windows will keep trying to find the product.
Here's the specific path to check:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products
The S-1-5-18 is the SYSTEM account. Also check other SIDs under UserData if you logged in with multiple user accounts. Inside each Products folder, look for the GUID (encoded, no dashes). If you find the product name match, delete that whole subkey. Restart.
If you don't want to dig through the registry blind, use a dedicated tool: Microsoft Fix it 51044 (though it's deprecated, the page still exists for Windows 10). But honestly, the manual registry cleanup is safer—you control exactly what gets removed. The automated tools sometimes kill entries that shared components need.
Quick-reference summary table
| Cause | Primary symptom | Fix | Time to fix |
|---|---|---|---|
| Orphaned registry entry | Error for a specific program only | Delete the product GUID from Uninstall and Installer\Products keys | 10-20 minutes |
| Windows Installer service corruption | Error for all MSI installs | Re-register msihnd.dll and msi.dll, run sfc /scannow | 15-30 minutes |
| Third-party uninstaller ghost | Error after using aggressive uninstaller | Remove leftover Installer\UserData subkey | 10-15 minutes |