Skip to content

no-faff/InstallerClean

InstallerClean

InstallerClean

A modern, open-source replacement for PatchCleaner. Safely clean up C:\Windows\Installer, the hidden Windows folder that quietly eats your disk space.

Licence: MIT .NET 10 CI Windows 10/11 GitHub Release

Screenshot of InstallerClean after a successful clean-up: 965 MB cleared, 68 files moved

  • What: Finds and removes unneeded files from C:\Windows\Installer, the hidden folder Windows never cleans up.
  • How much space: Depends on your software. On my machine it was just shy of 1 GB. People have reported 20-50 GB; with Adobe Acrobat it can pass 100 GB. It could be nothing at all. The point is that it's quick and costs nothing; whatever can be removed will be gone.
  • Is it safe: Yes. Only removes files Windows itself says it no longer needs. Delete sends to the Recycle Bin. Move lets you keep them somewhere safe.
  • Get it: Download the latest release, run it, done.

The folder nobody tells you about

There's a hidden folder on every Windows PC called C:\Windows\Installer. Every time you install software that uses the Windows Installer system, or apply a patch to Microsoft Office, Adobe Acrobat, Visual Studio or any other .msi-based application, a copy of that installer or .msp patch file goes into this folder. And stays there.

When you uninstall the software, the files stay. When a newer patch replaces an older one, both stay. Windows never cleans them up. Disk Cleanup doesn't touch them. DISM is for a different folder entirely. Over the years, the folder grows: 10 GB, 30 GB, 50 GB. On machines with heavy MSI-using software (Acrobat is a frequent culprit), it can pass 100 GB.

These aren't temp files that get recreated the moment you close a cleaning tool. They're genuine dead weight: old installers from software you uninstalled years ago and patches that have been replaced three times over. Once they're gone, they don't come back.

If you're looking for an easy way to free up disk space on Windows, this folder is one of the best places to start. InstallerClean finds the unneeded files and removes them safely.

PatchCleaner has been the go-to tool for this, but it hasn't been updated since March 2016 and it's closed source. InstallerClean is an open-source alternative, with superseded-patch detection (which catches the Acrobat patches PatchCleaner excludes) and a modern UI.

The search for help

If you've ever searched for help with this folder, you know how it goes. Someone asks how to clean it. They're told to run Disk Cleanup. They try it. It frees up 600 MB of a 180 GB folder. The thread goes quiet.

"All of the threads I've found tend to recommend the same things which don't solve the problem, and then go dead."

ksparks519, r/Windows10

Or they're told not to touch it at all. In one thread, someone with a 60 GB Installer folder was told to "don't mess with it." When they asked what they should do instead, the reply was: "I just told you."

The standard advice confuses deleting files at random (which genuinely is dangerous) with removing files that Windows itself says it no longer needs (which isn't). InstallerClean does the latter.

If you've searched for help with this before, you've probably already found PatchCleaner by John Crawford. It's a fantastic app. I downloaded it and it did exactly what it said: freed up a ton of space. The one thing it doesn't handle is Adobe patches; it excludes them by default, and on machines where Adobe is the biggest offender, a lot of removable files get left behind:

"I've downloaded Patchcleaner to delete the orphaned .msp files... 29 GB of the files are 'excluded by filters', so Patchcleaner doesn't seem to help."

HeatherBunny1111, r/techsupport

InstallerClean detects which patches have been superseded by newer updates and flags them as removable, including the Acrobat patches PatchCleaner excludes.

What it does

  1. Scans C:\Windows\Installer for .msi and .msp files
  2. Queries the Windows Installer API to find which files are still registered
  3. Shows what's needed and what's not, with sizes
  4. Removes the unneeded files: delete to the Recycle Bin, or move to a folder you choose

No telemetry. No network activity. The About window has a Check for updates link that opens the releases page in your browser.

Screenshots

Click to expand

Splash screen showing the scan in progress, having found 68 files to clean up
Initial scan. This is very quick.

Main window showing 114 files still used and 68 files to clean up
Results: how much is in use, how much is removable.

Registered files window listing installed products and their installer-database metadata
The files still in use, with metadata read from the installer database.

Orphaned files window listing removable .msi files with reasons
The files no longer needed.

Delete confirmation dialog showing 68 files (965 MB) will go to the Recycle Bin
Confirmation before either action. Delete sends to the Recycle Bin; Move puts the files somewhere of your choice.

Success overlay showing 965 MB cleared after a move operation
After a successful Move.

All-clear overlay shown when nothing is removable on a subsequent scan
After scanning again. Nothing left to clean.

How it works

InstallerClean identifies two kinds of unneeded files.

Orphaned files are installers and patches left behind after you uninstall software. Windows no longer references them, but the files sit in the folder taking up space.

Superseded patches are old .msp patches that have been replaced by newer ones. Windows marks them as superseded in its own database but never deletes them. Vendors that ship frequent patches (Acrobat, Office, large dev tools) accumulate superseded ones indefinitely.

To find them, InstallerClean calls the Windows Installer COM interface directly via P/Invoke:

  • MsiEnumProductsEx to enumerate every installed product
  • MsiEnumPatchesEx to find all registered patches for each product
  • MsiGetPatchInfoEx to read patch state (applied, superseded or obsoleted)

Any .msi or .msp file in C:\Windows\Installer that isn't claimed by a registered product is orphaned. Any patch marked as superseded and not required for uninstall is flagged as removable.

If the API returns incomplete data (rare, but it can happen with corrupted installer state), the app falls back to reading the registry. The fallback only adds files to the "still needed" set, never to the "removable" set.

After a Move or Delete completes, empty subfolders inside C:\Windows\Installer (the directories the cache leaves behind once their contents are gone) are pruned in the same pass. Reparse points are skipped during the prune so a junction planted inside the cache cannot redirect the cleanup outside it.

Is it safe?

Yes. InstallerClean queries the same database Windows itself uses to track what's installed. If Windows says a file is no longer needed, the app trusts it; it doesn't guess based on filenames or dates.

In the app. Delete sends files to the Recycle Bin. Move puts them in a folder you choose. Either way the files can be restored if anything breaks. Nothing is touched until you confirm. If Windows Installer is currently writing to the cache, has a previous transaction suspended, or has a queued post-reboot rename targeting the cache, Move and Delete are disabled and the specific reason is shown. The core logic is covered by 200+ automated tests that run on every commit (see the CI badge above).

Verifying the binary. InstallerClean is unsigned. Code-signing certificates cost money annually and I'd rather keep the project free, open and donations-funded.

  • SHA-256 hashes for each release are listed on the releases page.
  • VirusTotal links for setup, portable and slim builds are published with each release.
  • Source is at github.com/no-faff/InstallerClean and CI builds and tests every commit (see the green CI badge above).
  • Softpedia tests each release for viruses, spyware and adware.
  • MajorGeeks tests each submission in a virtual machine and lists it only if it passes their review.

Softpedia certified 100% clean

Setup and portable builds score clean across every engine on VirusTotal. The slim build has two flags from the same generic ML classifier shared between Avast and AVG; false-positive reports have been filed with both vendors. (For comparison, PatchCleaner with 890,000+ downloads since 2015 also has two flags on VirusTotal.)

What it doesn't do

  • WinSxS (C:\Windows\WinSxS) is a different folder with different rules. For that one, use Windows's built-in Disk Cleanup or Dism /Online /Cleanup-Image /StartComponentCleanup.
  • No background service, no scheduled task, no auto-clean. The app runs when you launch it.
  • The registry is read-only. The app queries the Windows Installer database; it doesn't change it.
  • No telemetry, no usage reporting, no version-check ping. The "Check for updates" link in About opens the GitHub releases page in your browser.
  • No bundled extras. No toolbars, no third-party offers, no nag screens.
  • The only permission asked for beyond launching is Administrator, which is required because C:\Windows\Installer is admin-only.

FAQ

Will I actually free up GBs of space? Depends on your machine. A clean Windows 11 install with no extra software has nothing to remove. A long-running developer workstation, or any machine with heavy MSI-based software (Acrobat, Office, LibreOffice, large dev tools), can have tens of GB. Run installerclean-cli /s to see exactly what would be removed before you commit.

Why does it want Administrator? C:\Windows\Installer is owned by SYSTEM and locked down to admins only. Reading the folder, writing to the Installer-database query API, and moving or deleting files all require elevation. There's no user-mode path.

Can I undo a Delete? Yes. Delete sends files to the Recycle Bin. Restore them from there. If you emptied the Recycle Bin, the files are gone, but you can instead use Move to put them in a folder you choose, then verify nothing breaks before deleting from there.

Will Windows complain if I remove these files? No. InstallerClean only removes files Windows itself reports as no-longer-needed via its own installer-database API. The next install / uninstall / patch cycle proceeds normally.

Why no Win32_Product (WMI)? Win32_Product triggers MSI repair operations on every product during enumeration, which can take minutes and load the disk hard. InstallerClean calls the Windows Installer COM API directly with no side effects.

Does it work on Windows 7 or 8? Untested and not supported. Targets Windows 10 and 11.

Is it suitable for RMM / mass deployment? Yes. The CLI exits with three-state codes (0 / 2 / 1 = full success / partial / failure; 130 for Ctrl+C), writes a per-run summary to the Application event log, and respects the same single-instance mutex as the GUI. See the Command line section.

Download

Three builds, choose one:

  • Setup (InstallerClean-setup.exe): regular Windows installer, bundles the .NET 10 runtime. Best for most users.
  • Portable (InstallerClean-portable.exe): single self-contained exe, no install. Bundles the runtime. Run, use, delete.
  • Slim (InstallerClean-slim.exe): smallest download. Requires the .NET 10 Desktop Runtime to be installed already (which you have if you have an up-to-date Visual Studio).

Download from the releases page, then run. Windows SmartScreen will say "Unknown publisher". Click More info then Run anyway. This is normal for unsigned open-source software.

The app scans automatically on startup. Review the results, then click Delete or Move.

Or install via Scoop:

scoop bucket add no-faff https://github.com/no-faff/scoop-bucket
scoop install installerclean

Compared to PatchCleaner

InstallerClean PatchCleaner
Last updated 2026 (active) 3 March 2016
Source code Open source (MIT) Closed source
Runtime .NET 10 (self-contained) .NET + VBScript
API Windows Installer COM (direct) WMI (Win32_Product)
Superseded patch detection Yes No
Adobe handling Detects superseded patches Excludes by default
UI Dark theme (WPF) Windows Forms
Data collection None None

A note on WMI: PatchCleaner uses Win32_Product, which is known to trigger MSI repair operations during enumeration. InstallerClean calls the Windows Installer COM interface directly with no side effects.

Ultra Virus Killer (UVK) also offers Installer cleanup as part of its System Booster module, but it's a paid tool ($15-25) and the cleanup is one small feature inside a much larger application. InstallerClean is free, focused and open source.

Command line

InstallerClean supports headless operation for scripting and sysadmin use:

Usage:
  installerclean-cli           Print this usage and exit
  installerclean-cli /s        Scan only - list removable files
  installerclean-cli /d        Delete removable files (Recycle Bin)
  installerclean-cli /m        Move to saved default location
  installerclean-cli /m PATH   Move to specified path

Also accepts --help, /? and -h. To launch the GUI, run InstallerClean.exe (or use the Start-menu shortcut from the setup install).

/s is a dry run: it scans, lists what it would remove with filenames and sizes, then exits. Useful for auditing before cleanup. Exit code is always 0. All files are in C:\Windows\Installer.

/d and /m scan and then act. /d sends removable files to the Recycle Bin. /m moves them to a folder (either one you specify on the command line, or the default saved from the GUI). Exit code is 0 on success, 1 if any files failed.

All three require an elevated (administrator) command prompt.

Why installerclean-cli and not installerclean.exe?

InstallerClean.exe is the WPF GUI; it does not respond to command-line arguments. installerclean-cli.exe is a separate console executable that ships in the same install directory and exposes the same scan / move / delete operations to PowerShell, cmd and scheduled tasks. Because it is a real console process, it blocks the prompt until it finishes; redirect or pipe its output as you would any other console exe.

Portable and slim downloads bundle only the GUI exe. To run the CLI operations from those, install via the setup or install the CLI separately.

Requirements

  • Windows 10 or 11
  • Administrator privileges (C:\Windows\Installer is admin-only)

See Download for setup, portable and slim build options.

Building from source

git clone https://github.com/no-faff/InstallerClean.git
cd InstallerClean
dotnet build src/InstallerClean/InstallerClean.csproj

Run the tests:

dotnet test src/InstallerClean.Tests/

Contributing

Found a bug or have a suggestion? Open an issue or start a discussion. Pull requests welcome. Please run dotnet test before submitting.

Support the project

If InstallerClean helped, consider supporting No Faff or leaving a star on GitHub.

Star history

Star History Chart

Licence

MIT

About

Open source tool to safely clean orphaned Windows Installer files and reclaim disk space

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages