ERROR_UNKNOWN_PRODUCT (0x00000645) Fix: Only for Installed Products
Windows Installer fires this when you try to modify a product that isn't actually installed. Quick fix: reinstall the app, then patch it.
What's happening here
You're staring at error 0x00000645 (ERROR_UNKNOWN_PRODUCT) because Windows Installer cannot find the product GUID that you're trying to modify, repair, or uninstall. The exact message is: "This action is valid only for products that are currently installed."
This usually means one of three things: you're running a patch (.msp) against a product that was never installed, the product's registry entry got corrupted or removed (common after a botched uninstall), or you're trying to modify a 32-bit product from a 64-bit installer context (or vice versa).
I've seen this most often when installing a Visual C++ redistributable update or a .NET Framework patch on a machine where the base product was already removed by a cleanup tool like CCleaner. The patch file still exists in the Windows Installer cache but the product entry is gone.
Let's walk through the fixes in order. Stop when the error goes away.
Fix 1: 30-second check — Reinstall the base product
This is the fastest fix and works in about 60% of cases. You're telling Windows: "Here's the base product, now apply the update."
- Identify what product the error references. Look at the error dialog — it usually shows a product name or GUID like
{12345678-1234-1234-1234-123456789ABC}. - Download the original installer (.msi or .exe) for that product from the official source. For Microsoft products, use the Microsoft Update Catalog or the download center.
- Run the installer to either install fresh or repair the existing installation. If it's a Visual C++ redistributable, just run the installer — it'll repair.
- Now try the update or patch again.
Why this works: The patch (.msp) only contains differential changes — it needs the base product's GUID in the registry to know what to patch. Reinstalling restores that GUID entry.
If you can't find the original installer (old software, lost media), move to Fix 2.
Fix 2: 5-minute fix — Run the installer with logging to find the GUID
Sometimes the error dialog doesn't show the product name clearly. Get the GUID from the installer's log file instead.
- Open an elevated Command Prompt (right-click Start, select Terminal (Admin) or Command Prompt (Admin)).
- Run the failing installer or update with verbose logging:
msiexec /p "C:\path\to\update.msp" /l*vx "C:\temp\msilog.txt"Replace the paths with your actual patch file and a writable location for the log.
- Open the log file in Notepad. Search for
ERROR_UNKNOWN_PRODUCTor0x00000645. A few lines above it, you'll see the GUID of the product it expects, likeProductCode: {GUID-HERE}. - Now run this command to see if that product is registered:
msiexec /x {GUID-HERE}If it says "This action is valid only for products...", the product truly isn't installed. That's your confirmation.
At this point you have two paths: reinstall the base product (Fix 1) or, if it's gone for good, force-remove the patch reference from the Windows Installer database (Fix 3).
Fix 3: 15+ minute advanced fix — Zap the orphaned patch entry
This is for when the base product is uninstalled but the patch is stuck in the Windows Installer database. You'll need the Windows SDK or the Windows Installer CleanUp utility (msizap.exe).
Option A: Using msizap (simpler, but deprecated)
Download msizap.exe from Microsoft's archive (part of the Windows SDK for Windows 7 or earlier). It's still safe to use on Windows 10/11.
- Open elevated Command Prompt.
- Run:
msizap T {GUID-HERE}The
Tflag tells msizap to remove the product from the Windows Installer database. Yes, it's that aggressive. - Confirm the prompt. Now the patch reference is gone.
- Try your original operation again — it should succeed because the installer no longer expects the product.
Option B: Manual registry cleanup (more surgical)
If you can't find msizap or don't trust it, clean up manually:
- Open Regedit as Administrator.
- Navigate to:
HKEY_CLASSES_ROOT\Installer\Products
This key contains entries for every installed product. Each subkey is named by a reversed GUID (e.g., {12345678-1234-1234-1234-123456789ABC} appears as87654321-4321-4321-4321-CBA987654321). - Search for your product GUID. Press Ctrl+F, paste the GUID (with braces), and check the "Data" box. Delete the entire subkey.
- Also check
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
and delete any entry for that product GUID. - Reboot. Now the patch should apply cleanly.
Warning: Deleting the wrong key can break other installers. Triple-check the product name.
When none of this works
If the error persists, you're likely dealing with a 32-bit vs 64-bit mismatch. Some patches target the 32-bit version of a product but your system only has the 64-bit version installed (or vice versa). Check your OS architecture and download the correct variant of the base product.
Another rare case: the product is installed under a different user context (e.g., per-user install vs per-machine). Run the patch from the same user account that installed the base product, or reinstall the base product as Administrator.
Preventing this in the future
Don't use registry cleaners to "fix" Windows Installer entries. They strip out the product GUIDs that patches need. If you must uninstall something, do it through Programs and Features or msiexec /x {GUID}. That keeps the database clean.
Also, keep your original installer files in a folder named something like C:\Installers. When an update fails, you can quickly reinstall the base without hunting online.
Was this solution helpful?