Папка Windows Installer занимает много места, можно ли очистить?

Одной из распространенной причиной исчерпания свободного места на системном диске может быть системная папка C:\Windows\Installer . В моем случае при анализе использования диска с помощью утилиты WinDirStat, оказалось, что ее размер вырос почти до 100 Гб. В этой статье мы расскажем для чего нужно папка C:\Windows\Installer, можно ли вручную удалять хранящиеся в ней файлы и как правильно ее очистить.

Для чего нужна папка Windows Installer?

Системная папка C:\Windows\Installer хранит кешированные копии установщиков приложений формата *.MSI и пакетов обновления для них (*.MSP). Когда пользователь запускает установку MSI программы, запускается служба установщика Windows Installer ( msiserver ). Служба msiserver копирует исходный *.MSI файл установщика в скрытую системную папку %windir%\Installer , переименовывая оригинальное имя файла в произвольную последовательность символов, оставляя расширение *.msi. Например, C:\Windows\Installer\25c18e0.msi .

Большой размер папки C:\Windows\Installer

Что важно. MSI пакет будет скопирован в эту папку, сразу при запуске установки приложения. Даже если установка приложения будет затем отменена, копия установочного файла все равно останется в папке Installer.

Благодаря наличию резервной копии установочного MSI файла, пользователь может безопасно удалить, восстановить, или исправить установленную в Windows программу, даже если оригинальные установочные файлы были удалены. Также Windows Installer автоматически использует кэшированные MSI файлы для исправления программы, если поврежден или удален какой-то из важных файлов.

MSI файлы из папки Installers можно использовать для принудительного удаления программ, которые не удаляются штатно.

Соответственно, при каждой установке или обновлении приложения (которое часто выполняется в фоне, без взаимодействия с пользователем), в каталоге %windir%\Installer будут появляются новые файлы. Поэтому размер папки постоянно увеличивается.

При штатном удалении программы через панель Settings -> Apps -> Installed Apps ( ms-settings:appsfeatures ), классическую панель удаления программ appwiz.cpl или из командной строки с помощью msiexec , сохраненные MSI и MSP файлы в папке C:\Windows\Installer удаляются автоматически.

Если кэшированный MSI файл удален, при попытке деинсталлировать программу из панели управления появится окно Windows Installer, предлагающее указать путь к оригинальному MSI файлу.

The feature you are trying to use in on a network resource that is unavailable.

Нельзя деинсталировать программу после ручного удаления MSI файла из Windows\Installer

Таким образом, если вы вручную удалите какие-то файлы из каталога C:\Windows\Installer, вы не сможете корректно удалить установленные программы, если у вас не осталось оригинальных установочных файлов. Поэтому первая рекомендация – не нужно бездумно удалять файлы из этой папки.

Правильная очистка файлов в папке Windows Installer

Со временем в папке %windir%\Installer может накопиться большое количество файлов, которые фактически не связаны с установленными в системы программами. Например, если установка или удаление программы было прервано, для удаления использовался альтернативный (или собственный) деинсталятор, или остались версии установочных MSI файлов от предыдущих версий приложения (после его последовательного автоматического обновления).

Главная проблема – понять к какому приложению относится тот или иной установочный файл. Но сделать это сложно, т.к. все установочные файлы в каталоге C:\Windows\Installer переименованы в случайные имена вида 12acb.msi.

Чтобы упростить идентификацию MSI/MSP файлов в этой папке, вы можете включить отображение метаданных этих файлов прямо в проводнике.

  1. Перейдите в папку %windir%\Installer
  2. Переключитесь в режим представления Details (Таблица)
  3. Щелкните правой клавише по заголовку любой колонки и выберите More.
  4. Включите отображение следующих полей Authors (разработчик), и Subject (именно в этом поле чаще всего содержится полное имя приложения). Показать название программы и разработчика файла в проводнике Windows
  5. Теперь у большинства MSI файлов будет отображаться имя программы, к которой этот файл относится. Показать имена программ в установочных MSI файлах

Если вы понимаете, что это приложение уже удалено или обновлена версия на более новую, вы можете безопасно вручную удалить относящиеся к нему MSI и MSP файлы в этой папке.

Поиск потерянных MSI и MSP файлов в каталоге Windows Installer с помощью PowerShell

Можно автоматизировать поиск потерянных MSI/MSP файлов в директоре C:\Windows\Installer с помощью PowerShell скрипта.

Идея заключаете в том, что все зарегистрированные программы можно извлечь из реестра. Можно просто перебрать ветки в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData  . Для каждой программы в значении LocalPackage указан путь к локально кэшированному MSI-пакету.

Имя к кэшированной копии MSI файла хранится в реестре в значении LocalPackage

Но проще запросить список кешированных пакетов, зарегистрированных в системе, у самой службы Windows Installer. Полученный список файлов нужно сравнить с файлами, которые фактически хранятся в папке C:\Windows\Installer. Если файл хранится на диске, но отсутствует в базе Windows Installer, очевидно, его можно считать потерянным.

Вот готовый PowerShell скрипт, который реализует описанный алгоритм и выводит (только выводит, без удаления!) потерянные .msi и .msp файлы в папке C:\Windows\Installer, которые не связаны с зарегистрированными приложениями службы msiserver.

https://github.com/winadm/posh/blob/master/Desktop/Find-OrphanedWindowsInstallerFiles.ps1

Скачайте скрипт на компьютер, разрешите запуск PowerShell скриптов в текущей сессии и запустите его:

Set-ExecutionPolicy Unrestricted -Scope Process

.\Find-OrphanedInstallerFiles.ps1

PowerShell скрипт - найти потерянные и неиспользуемые файлы в папке Windows\Installer

Перед вами потенциальный список файлов к удалению (но все же, сначала рекомендуем просто перенести указанные файл на другой диск).

По аналогичному принципу работает сторонняя графическая утилита PatchCleaner ( https://www.homedev.com.au/free/patchcleaner), которая также позволят просканировать каталогу Installer и найти осиротевшие MSI/MSP пакеты

Обратите внимание, что с настройками по-умолчанию, в PatchCleaner включена фильтрация пакетов, относящихся к продуктам Acrobat, которые она игнорирует.

Утилита PatchCleaner позволяет переместить (рекомендуется) или сразу удалить найденные MSI файл для быстрой очистки папки c:\Windows\Installer.

утилита PatchCleaner для очистки скрытой системной папки C:\Windows\Installer

Перенос папки Windows\Installer на другой диск

Если все MSI установщики в папке Installer для вас важны и нужны, а место на системном диске недостаточно, можно переместить ее содержимое на другой диск и создать символическую ссылку с исходного каталога на новый.

Можно выполнить перенос их командной строки.

Перемещаем содержимое папки на диск D (с копированием NTFS разрешений):

robocopy C:\Windows\Installer D:\Windows\Installer /E /MOVE /COPYALL /DCOPY:DAT /XJ

Удаляем исходный каталог:

rmdir C:\Windows\Installer

Создаем символическую ссылку на новую папку:

mklink /J C:\Windows\Installer D:\Windows\Installer

Перезагрузите копьютер и попробуйте установить/удалить любую программу, чтобы проверить корректность работы службы Windows Installer.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)