English · 简体中文 · Русский · Español · العربية · 日本語 · Português (BR) · Polski · Türkçe · 한국어 · Français · Italiano · Deutsch · Bahasa Indonesia · Tiếng Việt · Українська · Nederlands
🎶 What's my line? I'm happy cleaning Windows
Инструмент с открытым исходным кодом для безопасной очистки C:\Windows\Installer — скрытой папки Windows, которая незаметно съедает место на диске.
Запускайте раз в кои-то веки. Может, освободите немного места. Идите дальше, налегке.
- Что это: InstallerClean делает одно дело: убирает ненужные файлы из
C:\Windows\Installer— скрытой папки, которую Windows никогда не очищает. После почти мгновенного сканирования он сообщает, есть ли они у вас, показывает подробности для любопытных и позволяет удалить их, чтобы освободить место на диске C:. Запускаете один раз — и идёте дальше. - Возможно, вы здесь вот почему: вы пользовались WinDirStat, WizTree или TreeSize, увидели, что
C:\Windows\Installerзанимает много места, и не знали, что там внутри. InstallerClean — как раз то, что вам нужно. Он знает, что содержится в этих файлах со случайными на вид именами вроде9f05cba.msi, и быстро подскажет, какие из них можно безопасно удалить. - Сколько места: По присланным (необязательным и анонимным) отчётам на данный момент у 65 % машин нашлись ненужные файлы для очистки. У них медиана освобождённого — 14,9 ГБ, а на одной машине освободилось аж 462 ГБ. Остальные 35 % не нашли ничего лишнего, а это просто значит, что их папка Installer уже была чистой. Подробнее в разделе Частые вопросы ниже.
- Это безопасно: Да. Он спрашивает у самого API Windows Installer, какие файлы ещё нужны, и показывает только те, что Windows объявляет отработавшими. Это проект с открытым исходным кодом (Apache 2.0), и он ничего о вас не спрашивает: ни учётной записи, ни рекламы, ни слежки, ни телеметрии, ничего работающего в фоне. Единственное, что он делает в сети по своей инициативе, — при запуске проверяет на GitHub, нет ли более новой версии, и это можно отключить.
- Как получить: Скачайте последнюю версию. Запустите, пройдите через предупреждение о «неизвестном издателе» и запрос прав администратора. Удалите ненужные файлы. Готово.
- Папка, о которой вам никто не рассказывает
- В поисках помощи
- Что он делает
- Скриншоты
- Как это работает
- Это безопасно?
- Политика подписи кода
- Если у вас всё-таки пропал файл из C:\Windows\Installer
- Доступность
- Чего он не делает
- Частые вопросы
- Загрузка
- Сравнение с PatchCleaner
- Командная строка
- Требования
- Сборка из исходного кода
- Участие в разработке
- Поддержать проект
- История звёзд
- Лицензия
На каждом компьютере с Windows есть скрытая папка C:\Windows\Installer. Каждый раз, когда вы устанавливаете программу, использующую систему Windows Installer, или ставите патч для Microsoft Office, Adobe Acrobat, Visual Studio или любого другого приложения на основе .msi, копия этого установщика или файла патча .msp попадает в эту папку — и остаётся там.
Когда вы удаляете программу, файлы остаются. Когда новый патч приходит на смену старому, остаются оба. Windows никогда их не убирает. «Очистка диска» их не трогает. DISM работает совсем с другой папкой. Со временем папка растёт: 1 ГБ, 5 ГБ, 20 ГБ, 50 ГБ. На машинах с обилием программ, использующих MSI (Acrobat — частый виновник), она может перевалить за 100 ГБ.
Это не временные файлы, которые возвращаются сами собой. Это настоящий балласт: старые установщики программ, удалённых много лет назад, и патчи, которые успели сменить друг друга уже по нескольку раз. Стоит их удалить — и обратно они уже не вернутся.
Если вы ищете простой способ освободить место на диске в Windows, эта папка — хорошее начало. InstallerClean находит ненужные файлы и безопасно их удаляет.
Если вы когда-нибудь искали помощь по этой папке, то, наверное, знаете, как это бывает. Кто-то с 180 ГБ в C:\Windows\Installer спрашивает, как её очистить. Ему советуют запустить «Очистку диска». Он пробует. Очищается 600 МБ, и ни байта из той самой папки (потому что «Очистка диска» не трогает C:\Windows\Installer). И на этом обсуждение замирает.
«Во всех ветках, которые мне попадались, обычно советуют одно и то же, и это не решает проблему, а потом обсуждение глохнет.»
ksparks519, r/Windows10 (перевод с английского)
Или же ему советуют вообще её не трогать. В одной из веток человеку с папкой Installer на 60 ГБ ответили: «не трогай её». Когда он спросил, что же тогда делать, ответ был: «Я же только что сказал».
Стандартный совет путает удаление файлов наугад (что действительно опасно) с удалением файлов, которые сам Windows объявляет больше не нужными (а это уже не опасно). InstallerClean занимается вторым.
- Сканирует
C:\Windows\Installerв поисках файлов.msiи.msp - Запрашивает у API Windows Installer, какие файлы всё ещё зарегистрированы
- Показывает, сколько можно освободить и сколько ещё нужно, с дополнительными окнами подробностей, где перечислен каждый файл
- Удаляет ненужные файлы: перемещает в Корзину или в выбранную вами папку

Первичное сканирование. Проходит очень быстро.

Результаты: сколько ещё нужно, а сколько можно удалить.

Подробности о файлах, которые больше не нужны.

Подробности о файлах, которые ещё нужны, с метаданными из базы установщика.

Подтверждение перед любым из действий. Удаление перемещает в Корзину, перемещение кладёт файлы туда, куда вы выберете.

Удаление в процессе. «Отмена» останавливает его на полпути.

После повторного сканирования. Очищать больше нечего.
InstallerClean различает три вида ненужных файлов.
Бесхозные файлы — это установщики .msi (и любые патчи .msp), оставшиеся после удаления программ. Windows на них больше не ссылается, но файлы лежат в папке и занимают место.
Замещённые патчи — это старые патчи .msp, на смену которым пришли новые. Windows помечает их в своей базе как замещённые, но никогда не удаляет. Так часто это встречается именно из-за Adobe: каждое обновление Acrobat выходит как патч к тому же самому исходному установщику, а не как отдельный новый установщик, поэтому на машине оседает по патчу на каждое обновление, которое она когда-либо получала. Office и крупные средства разработки накапливаются так же, только медленнее.
Устаревшие патчи — это патчи .msp, которые издатель отозвал или объявил устаревшими, а не заменил более новой версией. Windows записывает и это состояние и точно так же оставляет файл в папке.
Чтобы их найти, InstallerClean напрямую обращается к COM-интерфейсу Windows Installer через P/Invoke:
MsiEnumProductsEx— перечисляет все установленные продуктыMsiEnumPatchesEx— находит все зарегистрированные патчи для каждого продуктаMsiGetPatchInfoEx— считывает состояние патча (применён, замещён или объявлен устаревшим)
Любой файл .msi или .msp в C:\Windows\Installer, который не принадлежит ни одному зарегистрированному продукту, считается бесхозным и помечается как удаляемый. То же касается любого патча, помеченного в базе как замещённый или устаревший и не нужного для удаления.
При каждой проверке приложение читает те же записи ещё и напрямую из реестра — это второй, независимый источник. Если любое из двух чтений возвращается неполным (редко, но при повреждённом состоянии установщика такое бывает), InstallerClean придерживает файлы или отказывается от проверки, а не гадает. Это второе чтение только добавляет файлы в набор «ещё нужны», но никогда — в набор «можно удалить».
После завершения перемещения или удаления пустые подпапки внутри C:\Windows\Installer (каталоги, которые остаются от кэша, когда из них пропадает содержимое) убираются за тот же проход.
Да. InstallerClean обращается к той же базе данных API Windows Installer, по которой сам Windows отслеживает установленное. Если Windows говорит, что файл больше не нужен, приложение ему верит; оно не гадает по именам файлов или датам.
Об удалении и перемещении. Файлы, которые удаляет InstallerClean, можно спокойно удалять безвозвратно. Удаление перемещает их в Корзину (если она недоступна, вы получите предупреждение); место на диске C: вернётся, когда вы очистите Корзину.
Впрочем, верить мне на слово, что файлы безопасно удалять, не обязательно. Пока они лежат в Корзине, у вас есть возможность убедиться, что программы, которые пользуются этой папкой, — Office, Acrobat, Visual Studio и им подобные, — по-прежнему обновляются и удаляются без проблем. Если вы обнаружите, что что-то сломалось (крайне маловероятно, и после 70 000+ загрузок пока не поступало ни одного сообщения), восстановите файлы из Корзины, и всё исправится. Чтобы перестраховаться, можно вместо этого воспользоваться Перемещением — сделать резервную копию файлов в выбранной вами папке (если хотите освободить место на C:, выбирайте, разумеется, папку на другом разделе или диске). Чтобы вернуть всё как было, просто скопируйте файлы обратно в C:\Windows\Installer (хотя почти наверняка это вам никогда не понадобится). Если в имени файла появилось «(1)» (так бывает, если переместить файлы в одну и ту же папку дважды), уберите его перед тем, как копировать файл обратно.
Если в этот момент Windows Installer пишет в кэш, у него приостановлена предыдущая транзакция или в очереди стоит переименование после перезагрузки, нацеленное на кэш, кнопки «Переместить» и «Удалить» становятся неактивными, и показывается конкретная причина.
Службы сканирования, запросов, перемещения, удаления, настроек и проверки отложенной перезагрузки покрыты набором автоматических тестов, который запускается при каждом коммите (см. значок CI выше).
Проверка двоичного файла. InstallerClean не имеет цифровой подписи, но вам не нужно верить на слово, что это безопасно:
- Хеши SHA-256 для каждого выпуска указаны на странице выпусков.
- VirusTotal: каждая сборка сканируется, и полные результаты по каждому антивирусному движку связаны на странице соответствующего выпуска, чтобы вы могли увидеть, как оценён каждый файл, и перепроверить его самостоятельно. Ложное срабатывание, действующее на момент выхода выпуска, называется и объясняется на странице этого выпуска, а когда производитель его снимает, страница обновляется.
- Исходный код лежит на github.com/no-faff/InstallerClean, и CI собирает и тестирует каждый коммит (см. зелёный значок CI выше).
- Сборки выпусков детерминированы: настройки компилятора таковы, что одни и те же исходники и один и тот же SDK дают одни и те же байты, а процесс выпуска отказывается ставить тег на версию, если выпускаемые exe собраны не из чистого дерева ровно на этом теге. Так что вы можете переключиться на этот тег, собрать всё самостоятельно и сверить хеши с опубликованными: это и есть доказательство того, что скачанный файл соответствует открытому исходному коду. Сначала возьмите ту же версию SDK (в примечаниях к каждому выпуску указано, с каким SDK он собран); другой патч SDK даёт другие байты, и это выглядит как несовпадение, хотя им не является.
- 70 000+ загрузок на GitHub, MajorGeeks и Softpedia.
- MajorGeeks тестирует каждую присланную сборку в виртуальной машине и публикует её, только если она прошла их проверку.

- Softpedia проверяет каждый выпуск на вирусы, шпионское и рекламное ПО.

InstallerClean подал заявку в SignPath Foundation на бесплатную подпись кода. Это программа, которая подписывает открытое программное обеспечение, чтобы оно перестало приходить на ваш компьютер от неизвестного издателя. Заявка на рассмотрении, так что пока файлы здесь не подписаны и Windows будет о них предупреждать.
Если её одобрят, каждый выпуск будет нести строку, которую просит указывать SignPath: «free code signing provided by SignPath.io, certificate by SignPath Foundation». Сертификат принадлежит фонду, а не мне: сертификат обязан быть выдан юридическому лицу, а проект одного человека таковым не является. Это не значит, что InstallerClean принадлежит им или что они как-то участвуют в нём помимо подписи.
Роли. InstallerClean ведёт один человек, я, и все они на мне:
- Коммитеры и рецензенты, то есть кто может добавлять код в проект, — это я. Каждый пул-реквест проходит проверку перед слиянием.
- Утверждающие, то есть кто может разрешить подписать выпуск, — это я.
Конфиденциальность. Я ничего не узнаю ни о вас, ни о ваших файлах, если только вы сами не решите отправить тот совершенно необязательный анонимный отчёт, который просто даёт мне знать, что всё работает. Ни рекламы, ни телеметрии. Кроме этого приложение выходит в сеть только за проверкой версии при запуске (один запрос к GitHub, его можно отключить в окне «О программе»), а ещё есть кнопки со ссылками на GitHub и на страницу, где можно сделать пожертвование, если вам того захочется. Полная политика конфиденциальности (на английском).
InstallerClean удаляет только те файлы, которые сам Windows объявляет больше не нужными, поэтому он никогда не может стать причиной пропажи файла. Но если файл уже пропал, InstallerClean это замечает и помечает его. Вот как это исправить.
Скачайте установщик нужной программы у её разработчика и запустите его поверх имеющейся установки; не удаляйте программу заранее. По возможности возьмите ту версию, что установлена сейчас, потому что Windows может отклонить другую. Обычно это возвращает файл на место и не трогает ваши настройки. Запустите сканирование в InstallerClean заново — и, если всё получилось, предупреждение исчезнет.
Обычно этого достаточно. Дальше идёт более полное изложение от самой Microsoft: официальные подробности и более тяжёлые случаи, когда всё не так просто. Ничего из этого не связано с InstallerClean, и улучшить рекомендации Microsoft я не могу, так что просто передаю их как есть.
Более полная позиция Microsoft
Цитаты Microsoft ниже приведены в оригинале, на английском языке.
Полное руководство: Restore missing Windows Installer cache files.
Проблема может проявиться не сразу:
"If the installer cache is compromised, you may not immediately see problems until you take an action such as uninstalling, repairing, or updating a product."
Файлы уникальны для каждой машины, поэтому скопировать такой файл с другого ПК нельзя:
"Missing files cannot be copied between computers because the files are unique."
Достать один лишь этот файл из резервной копии тоже не выйдет:
"To restore the missing files, a full system state restoration is required. It is not possible to replace only the missing files from a previous backup."
Рекомендуемый способ восстановления и его суровые ограничения:
"If application files are missing from the Windows Installer Cache, ask the vendor or support team for the application about the missing files. You must follow the procedures or steps recommended by the application vendor to restore the files. In some cases, you may have to rebuild the operating system and reinstall the application to fix the problem."
"Windows support engineers cannot help you recover missing application files from the Windows Installer cache."
Почему важна та же версия:
"The upgrade cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade may update a different version of the program."
InstallerClean создан так, чтобы им можно было полноценно пользоваться с клавиатуры и с программой чтения с экрана.
- Полностью управляется с клавиатуры. Tab добирается до каждого элемента управления, а столбцы в окнах с подробностями сортируются с клавиатуры, так что мышь здесь нигде не нужна. Фокус клавиатуры остаётся видимым, куда бы он ни попал.
- Экранный диктор и Голосовой доступ. У каждого элемента управления есть метка, и слово, написанное на кнопке, — это то же слово, которым она активируется голосом. Когда перемещение или удаление завершается, результат зачитывается вслух.
- Рассчитано на чтение. Текст во всей тёмной теме соответствует уровню контраста WCAG AA.
Если что-то здесь вам мешает, откройте issue. Проблемы доступности — это баги, а не редкие пограничные случаи.
- WinSxS (
C:\Windows\WinSxS) — другая папка с другими правилами. Для неё запуститеDism /Online /Cleanup-Image /StartComponentCleanupв командной строке с правами администратора. - Никакой фоновой службы, никакого запланированного задания, никакой автоочистки. Приложение работает только тогда, когда вы его запускаете.
- Оно не меняет ни установленные программы, ни базу данных Windows Installer, а только читает их. Единственное, что оно вообще записывает в реестр, — это разовая регистрация источника событий, которая нужна инструменту командной строки, чтобы его запуски появлялись в журнале событий Windows.
- Сам, без вашего участия, он устанавливает соединение только одного рода: при запуске быстро смотрит на странице выпусков GitHub, нет ли более новой версии, и это можно отключить в окне «О программе». Всё остальное происходит только тогда, когда вы сами этого захотите: необязательный анонимный отчёт (просто чтобы я знал, что всё работает) и ссылки на документацию на GitHub и страницу пожертвований, которые открываются в браузере, если вы по ним нажмёте. Сам он ничего не скачивает.
- Ни панелей инструментов, ни стороннего ПО в комплекте, ни рекламы.
Я действительно освобожу гигабайты места? Зависит от вашего компьютера. На чистой установке Windows 11 без лишних программ удалять нечего. На давно используемой рабочей станции разработчика или на любой машине с обилием программ на основе MSI (Acrobat, Office, LibreOffice, крупные средства разработки) могут набраться десятки гигабайт. В любом случае вы увидите точную цифру, как только запустите программу.
С версии v1.8.0 есть возможность прислать короткий анонимный отчёт о результате. Пока пришло 269 (спасибо всем 🙏), и у тех 65 % машин, которым было что почистить, медиана освобождённого — 14,9 ГБ. На одной машине освободилось целых 462 ГБ. Вот сводка результатов.
Отправка отчёта — это одно нажатие кнопки в приложении, целиком по желанию. Ничего личного в него не входит, и перед отправкой вам показывают ровно то, что уйдёт, вот так:
Почему он требует прав администратора? Папка C:\Windows\Installer закрыта для всех, кроме администраторов. Чтение папки, запросы к базе установщика, перемещение и удаление файлов — всё это требует таких прав, поэтому приложение вынуждено работать от имени администратора.
Почему Windows пишет «Неизвестный издатель»? InstallerClean не подписан сертификатом, а Windows помечает файлы, скачанные из интернета, поэтому при первом запуске SmartScreen обычно показывает «Система Windows защитила ваш компьютер», а издатель значится как неизвестный. Платный сертификат для подписи стоит денег каждый год, и я предпочитаю, чтобы приложение оставалось бесплатным, а не платить за него, поэтому я подал заявку в SignPath Foundation, которые подписывают открытое программное обеспечение бесплатно (см. Политику подписи кода). Пока её не одобрили, нажмите Подробнее, затем Выполнить в любом случае. Это безопасно: исходный код открыт, а у каждого выпуска есть ссылки на VirusTotal и хеши SHA-256, которые можно проверить заранее.
Можно ли отменить удаление? Обычно да. Когда Корзина доступна для диска, удаление перемещает файлы туда, и их можно восстановить из Корзины. Если Корзина недоступна, приложение никогда не удаляет файлы безвозвратно по собственной инициативе (см. Это безопасно?). А если вам нужен подконтрольный путь назад, перемещение положит файлы в выбранную вами папку; удалите их оттуда, когда убедитесь, что всё в порядке.
Будет ли Windows возражать, если я удалю эти файлы? Нет. InstallerClean удаляет лишь те файлы, которые сам Windows объявляет отработавшими, так что ничто из удаляемого не требуется для восстановления, обновления или удаления программы. Если нужный файл всё же пропадёт из C:\Windows\Installer по какой-то другой причине, см. Если у вас всё-таки пропал файл из C:\Windows\Installer.
Почему не используется Win32_Product (WMI)? Win32_Product при перечислении запускает операции восстановления MSI для каждого продукта, а это может растянуться на минуты и сильно нагрузить диск. InstallerClean обращается к COM-API Windows Installer напрямую, без побочных эффектов.
Почему не обойтись простым скриптом PowerShell? Короткого скрипта с вызовом MsiEnumPatchesEx достаточно, чтобы перечислить патчи, но несущие конструкции InstallerClean — это как раз то, что скрипт проскакивает мимоходом: разделение файлов на бесхозные и замещённые, запасной механизм через реестр, который только добавляет файлы в набор «ещё нужны» (но никогда — в «можно удалить»), блокировка при отложенной перезагрузке, страховочное перемещение в другое место, пофайловый прогресс с возможностью отмены и поведение по умолчанию — в Корзину, а не безвозвратно. Пограничные случаи на реальных машинах с обилием MSI (повреждённые регистрации, соединения внутри кэша, продукты в HKU\.DEFAULT, приостановленные транзакции установщика) легко обработать неправильно в одноразовом скрипте. installerclean-cli — это вариант без графического интерфейса, если вам нужны именно скрипты.
Работает ли на Windows 7 или 8? Не тестировалось и не поддерживается. Рассчитан на Windows 10 и 11.
Подходит ли он для RMM или массового развёртывания? Да. CLI завершается с разными кодами в зависимости от результата (0 — успех, 2 — частично, 1 — серьёзный сбой, 75 — временное состояние, 130 — Ctrl+C до того, как был обработан хоть один файл; Ctrl+C посреди партии даёт код 2, так как часть работы уже выполнена), поэтому запланированная задача может повторять попытку при коде 75, не путая его с серьёзными сбоями. При каждом запуске она записывает сводку в журнал событий «Приложение» и использует тот же мьютекс единственного экземпляра, что и графический интерфейс. Установщик также ставится в тихом режиме стандартными ключами Inno Setup (/SILENT или /VERYSILENT); при тихой установке запуск после установки пропускается. См. раздел «Командная строка».
Три сборки на выбор:
- Setup (
InstallerClean-2.3.0-setup.exe): обычный установщик Windows со встроенной средой выполнения .NET 10. Добавляет пункт в меню «Пуск» и аккуратно удаляется. Помещается в список программ, и его легко найти даже через полгода. - Portable (
InstallerClean-2.3.0-portable.exe): один автономный exe со встроенной средой выполнения. Без установки, без деинсталлятора. Запустите, воспользуйтесь, удалите. И запускайте снова когда угодно. - CLI (
installerclean-cli.exe): только версия для командной строки, один автономный exe. Без установки, и после него на машине ничего не остаётся. Закиньте его на клиентскую машину, запустите сканирование или очистку, удалите. Создан для скриптов, запланированных задач и массового развёртывания — когда нужны сами операции, но без настольного приложения на клиенте. Аргументы и коды выхода см. в разделе Командная строка.
С версии 2.2.0 в именах файлов установщика и портативной сборки есть номер версии, так что скачанная копия всегда говорит, что она такое; у консольного инструмента остаётся простое имя installerclean-cli.exe, чтобы запланированные задачи и скрипты, которые на него ссылаются, продолжали работать после обновлений.
Скачайте со страницы выпусков, затем запустите. Приложение не подписано, поэтому Windows покажет предупреждение о «неизвестном издателе»; в разделе Частые вопросы объясняется, что вы увидите и почему это безопасно.
Приложение автоматически выполняет сканирование при запуске. Просмотрите результаты и нажмите Удалить или Переместить.
Или установите через winget:
winget install NoFaff.InstallerCleanИли установите через Scoop:
scoop install installercleanЕсли вы уже искали что-то по этой папке, то скорее всего наткнулись на PatchCleaner. Он по-прежнему работает, но я сделал InstallerClean, потому что PatchCleaner имеет закрытый исходный код, не обновлялся с марта 2016 года и по умолчанию не трогает продукты Adobe. Его проверка на бесхозность ошибочно помечала патчи Adobe, а их удаление ломало обновления Adobe, поэтому он не трогает все файлы Adobe, пока вы сами не отключите фильтр. На машинах, где Adobe — главный нарушитель, это и есть большая часть места:
«Скачала PatchCleaner, чтобы удалить бесхозные файлы .msp, но, судя по всему, это освободит лишь 250 МБ. 29 ГБ файлов „исключены фильтрами“, так что PatchCleaner, похоже, не помогает.»
HeatherBunny1111, r/techsupport (перевод с английского)
InstallerClean читает собственные записи Windows Installer о патчах, поэтому вместо того, чтобы огульным фильтром прятать все файлы Adobe, он определяет, какие патчи Windows отметила как замещённые, и обозначает их именно так. Вот как они соотносятся:
| InstallerClean | PatchCleaner | |
|---|---|---|
| Последнее обновление | 2026 (активная разработка) | 3 марта 2016 |
| Исходный код | Открытый (Apache 2.0) | Закрытый |
| Среда выполнения | .NET 10 (автономная) | .NET + VBScript |
| API | Windows Installer COM (внутри процесса) | Windows Installer COM (вне процесса, через VBScript) |
| Обнаружение замещённых патчей | Да | Нет |
| Работа с Adobe | Обнаруживает замещённые патчи | Исключает по умолчанию |
| Интерфейс | Тёмная тема (WPF) | Windows Forms |
| Сбор данных | Нет | Нет |
| Безопасность удаления | Корзина. Если она недоступна, спрашивает: переместить или удалить безвозвратно | Безвозвратно, без Корзины |
Замечание о
Win32_Product: Распространённый, но негодный способ получить список установленных продуктов — этоWin32_Product(WMI), который при перечислении запускает операции восстановления MSI для каждого продукта. И InstallerClean, и PatchCleaner его избегают. Оба используют COM-интерфейс Windows Installer. Имя файлаWMIProducts.vbsв скрипте PatchCleaner вводит в заблуждение: скрипт использует MSI COM, а не WMI.
Ultra Virus Killer (UVK) тоже предлагает очистку папки Installer в составе своего модуля System Booster, но это платный инструмент (15-25 $), и очистка — лишь одна небольшая возможность внутри куда более крупного приложения. InstallerClean бесплатный, сфокусированный и с открытым исходным кодом.
Универсальные системные чистильщики вроде CCleaner и BleachBit не трогают C:\Windows\Installer. Чтобы отличить зарегистрированные пакеты от ненужных, этой папке нужны запросы к API Windows Installer, и универсальный чистильщик, просто обходящий дерево файлов, мог бы сломать установленные приложения. InstallerClean — тот самый инструмент на случай, когда очистить нужно именно эту папку.
InstallerClean поддерживает работу без графического интерфейса для скриптов и системного администрирования:
Использование:
installerclean-cli --help Показать эту справку (также принимает /?, -h)
installerclean-cli --version Показать версию (также принимает -v)
installerclean-cli /s Только сканирование - список ненужных файлов
installerclean-cli /d Удалить ненужные файлы (Корзина)
installerclean-cli /m Переместить в сохранённую папку по умолчанию
installerclean-cli /m ПУТЬ Переместить в указанный путьЧтобы запустить графический интерфейс, выполните InstallerClean.exe (или воспользуйтесь ярлыком в меню «Пуск», если устанавливали через setup).
Запущенный без аргументов или с нераспознанным флагом, installerclean-cli выводит эту справку и завершается с кодом 1, так что запланированная задача, потерявшая свой флаг, завершится с заметной ошибкой, а не отчитается об успехе, ничего не сделав. Явные --help, /? или -h выводят ту же справку и завершаются с кодом 0.
/s — это пробный прогон: сканирует, выводит список того, что было бы удалено, с именами файлов и размерами, после чего завершается. Удобно для проверки перед очисткой. Код выхода: 0 при успешном сканировании, 1, если сканирование не удалось, и 130 при Ctrl+C. Все файлы находятся в C:\Windows\Installer.
/d и /m сначала сканируют, затем выполняют действие. /d перемещает удаляемые файлы в Корзину. /m перемещает их в папку (либо ту, что вы укажете в командной строке, либо сохранённую по умолчанию в графическом интерфейсе). Это сохранённое значение по умолчанию хранится для каждого пользователя, поэтому запланированное задание, работающее от имени SYSTEM или учётной записи службы, его не увидит; таким запускам нужно указывать папку явно через /m PATH. Коды выхода: 0 — полный успех; 2 — частично (часть файлов обработана, часть нет); 1 — полная неудача (сбой сканирования, неверные аргументы или провал по всем файлам партии); 75 — временное состояние, помешавшее запуску (в выведенном сообщении сказано, какое именно и поможет ли повтор); 130 — Ctrl+C до того, как был обработан хоть один файл (Ctrl+C посреди партии даёт код 2, частично, так как часть работы уже выполнена).
Весь вывод CLI, включая сообщения об ошибках и диагностические сообщения, идёт в stdout; отдельного потока stderr нет. Код выхода — это сигнал для машинной обработки (и запись в журнале событий «Приложение» по каждому запуску его дублирует), так что скрипту стоит опираться на код выхода, а не разбирать текст; команда installerclean-cli /s > audit.txt сохранит весь прогон целиком, включая любую строку с ошибкой.
Все три требуют командной строки с повышенными правами (администратора). Если групповая политика блокирует запрос UAC на повышение прав, процесс отказывается запускаться, и Windows возвращает родительской оболочке ошибку 740 (в PowerShell это $LASTEXITCODE = 740). taskkill /pid <pid> не запускает корректную отмену; мьютекс единственного экземпляра восстанавливается при следующем запуске через путь AbandonedMutexException.
Чтобы очищать папку по расписанию, направьте «Планировщик заданий» на installerclean-cli. Запускайте его от имени SYSTEM или учётной записи службы и с наивысшими правами, чтобы он получал нужное повышение прав без интерактивного запроса, а папку назначения указывайте в командной строке: сохранённое в графическом интерфейсе значение по умолчанию хранится для каждого пользователя и к запуску от SYSTEM или учётной записи службы не относится. Ежемесячное перемещение в D:\InstallerBackup, когда копия CLI лежит в C:\Tools:
schtasks /create /tn "InstallerClean monthly" /tr "C:\Tools\installerclean-cli.exe /m D:\InstallerBackup" /sc monthly /ru SYSTEM /rl highestЗадание ждёт завершения запуска и записывает код выхода как «Результат последнего запуска», так что ваша RMM-система может опираться на приведённые выше коды (0 — полный успех, 2 — частично, 75 — временное состояние, 1 — полная неудача) точно так же, как это делал бы скрипт.
InstallerClean.exe — это графический интерфейс на WPF; он не реагирует на аргументы командной строки. installerclean-cli.exe — это отдельный консольный исполняемый файл; он поставляется в том же каталоге установки и предоставляет PowerShell, cmd и запланированным задачам те же операции сканирования, перемещения и удаления. Поскольку это настоящий консольный процесс, он занимает командную строку до завершения; перенаправляйте или передавайте его вывод по конвейеру так же, как у любого другого консольного exe.
Загрузка portable содержит только exe графического интерфейса. Если вам нужна командная строка без графического интерфейса, скачайте installerclean-cli.exe со страницы выпусков и запустите его напрямую. Установщик setup тоже ставит его рядом с графическим интерфейсом.
- Windows 10 (версия 1607 / сборка 14393 или новее — самая старая, которую поддерживает среда выполнения .NET 10) или Windows 11
- Права администратора (
C:\Windows\Installerдоступна только администраторам)
Варианты сборок setup, portable и CLI см. в разделе Загрузка.
git clone https://github.com/no-faff/InstallerClean.git
cd InstallerClean
dotnet build src/InstallerClean.slnЗапуск тестов:
dotnet test src/InstallerClean.Tests/Нашли баг или есть предложение? Откройте issue или начните обсуждение. Пул-реквесты приветствуются. Перед отправкой запустите dotnet test.
Теперь InstallerClean полностью доступен на русском: приложение, установщик, командная строка и этот README. Всё это машинные переводы, сделанные со всем старанием; идеальными они не будут, поэтому я выпускаю их как есть, не дожидаясь проверки носителем языка. Если заметите, что можно улучшить, буду рад, если сообщите об этом в issue, пул-реквесте или обсуждении. По умолчанию приложение открывается на языке вашей Windows, а переключиться на английский можно в любой момент через значок глобуса.
Если InstallerClean вам помог, подумайте о том, чтобы поддержать No Faff или поставить звезду на GitHub.
🎶 George Formby - When I'm Cleaning Windows. Приятного просмотра!

