40

My C:\Windows\Installer folder has grown over 10 GB. I noticed that some *.msi and *.msp files are in C:\Windows\Installer but not the mentioned in the registry (e.g. I can see a file named "104a0288.msi" in C:\Windows\Installer but searching for "104a0288.msi" in the registry editor doesn't bring any results). Can I safely remove those files?

I use Windows 7 SP1 x64 Ultimate.

Franck Dernoncourt
  • 24,246
  • 64
  • 231
  • 400

6 Answers6

27

The article below shows different ways to delete unused Microsoft Installer/Patch files from the Installer folder. It is a very good and descriptive article.

3 Ways to Safely Delete Unused MSI and MSP Files from Windows Installer Folder

In summary, these are the 3 ways:

  1. Use MsiZap (by Microsoft) This is an old Microsoft utility. Unfortunately not supported any more but still used by people. Because it is not supported any more you use this tool at your own risk. It can be found here.

  2. Use a tool called WICleanup (by KZTechs) This is the option I used and it cleared 15Gb of data for me and I haven't had any problems since. There are a few notes I would add to the article on its use;

First, I had trouble with the download link, so I found the utility downloadable here.

Then, when deleting files using the UI you have to confirm each delete followed by a confirmation prompt. I.e. "Are you sure you want to delete? Yes/No?" followed by "The file has been deleted. OK". I had hundreds of files and this was not something I wanted to do for each.

The zip download has a UI executable and also a command line executable. To use the command line version, make sure you open a command prompt as administrator. Then navigate to where the exe is located and execute the following command wicleanupc -s The "s" makes the deletion of the files silent and no need to confirm.

  1. Manual deletion (not recommended) The last option is largely manual but not recommended. To figure out if a file can be deleted, it should NOT exist in the registry. There may be some useful scripts available to guide you to files that can or cannot be deleted, but the actual deletion is manual and therefore prone to error or deletions by mistake.
13

MsiZap only discovered one orphaned msi for a whopping savings of 100 MB. After that I tried PatchCleaner and cleaned up 20 GB.

PatchCleaner took about 20 minutes to parse the 30 GB of Windows Installer cache (seriously, MSFT, wtf) and then with one click was able to free up 20 GB.

Bravo.

GraehamF
  • 299
7

C:\Windows\Installer is where Windows Installer stores cached copies of the setup packages (.msi) and setup patches (.msp) used for your currently installed programs. These files are required if you want to update, modify, or uninstall a program on your computer. Do not delete them blindly.

Sometimes you can end up with orphaned .msi or .msp files in this directory that do not get cleaned up appropriately. This typically happens when an installation fails. These can be removed with a tool called Msizap, but be aware it is not supported by Microsoft anymore.

Msizap can only be downloaded as a part of the Windows SDK Components for Windows Installer Developers that gets installed with the Microsoft Windows SDK. Once installed, you can remove orphaned installers from C:\Windows\Installer with the following command:

"%PROGRAMFILES%\Windows Installer Cleanup\msizap.exe" !g

Here is the usage information for more details: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370523%28v=vs.85%29.aspx

I would honestly not worry about 10gb of installers sitting in there unless you are critical on hard drive space. It is more likely a sign that it's time to reinstall Windows again to get your computer running as fast as it did on the day you bought it. 10gb is pretty typical for a 2+yr old install of Windows.

5

Myself, I am too cautious to actually delete even "unregistered" installer files. However, I thought I would share what I put together (based on this and similar postings) for a co-worker, who was looking to tidy up some machines.

$Registered = Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\* -Name LocalPackage
$Found = Get-ChildItem "$env:WINDIR\Installer\*" -Include *.msp,*.msi -Recurse | Select-Object -ExpandProperty FullName

Show difference

Compare-Object $Registered $Found

$Unregistered = $Found | Where-Object {$_ -notin $Registered}

Total Bytes unregistered

$Unregistered | Get-ChildItem | Measure-Object -Sum -Property Length

Remove unregistered installers

$Unregistered | Remove-Item -WhatIf

-1

Just run this script. The following VBS script uninstalls MSP, MSI patches marked as superseded.

https://forums.mydigitallife.net/threads/presenting%E2%80%A6-startcomponentcleanup-for-msi-including-office.77708/

gvp9000
  • 11
-4
  • You should be able to delete those files without any risc. The *.msi files are only used during installation of a program or an update. In a perfect world the installer would have cleaned them out automatically. If you can delete them, then do. - I'm pretty sure Windows will tell you, if they are still in use.
Eman
  • 39