Удаление приложений Windows кажется достаточно простым – вы нажимаете «Удалить», и приложение исчезает, верно? На самом деле это не всегда так, по крайней мере для приложений, упакованных в формат MSIX от Microsoft, который лежит в основе приложений Microsoft Store.
Традиционные установщики, такие как классический формат MSI (сокращение от Microsoft Installer – технология, лежащая в основе большинства традиционных установщиков программ Windows на протяжении десятилетий), работают так, как вы ожидаете. При удалении удаляются бинарные файлы, каталоги, записи реестра и всё, что оставило после себя приложение. Но MSIX работает иначе.
Для приложений MSIX Windows разбивает жизненный цикл приложения на четыре отдельных этапа:
- Размещение – размещает файлы приложения на диске
- Регистрация – связывает приложение с вашей учётной записью
- Отмена регистрации – отключает приложение от вашей учётной записи
- Удаление размещения – фактически удаляет файлы с диска
Когда вы нажимаете кнопку «Удалить», чтобы удалить приложение Windows, вызывается метод API с именем RemovePackageAsync (чтобы не было путаницы, внутри он называется не «Uninstall»), и Windows сначала использует его для отмены регистрации приложения. Удаление размещения (Destage) – часть, которая фактически что-либо удаляет, – происходит только в том случае, если система определит, что эти файлы больше никому не нужны. Тем не менее, если система определит, что на приложение нигде нет ссылок, она автоматически перейдёт к удалению размещения и окончательно удалит его.
Итак, если система считает, что приложение нужно где-то ещё, она сохранит его внутри. Например, если другая учётная запись на том же компьютере всё ещё имеет это приложение зарегистрированным, его удаление из вашей учётной записи только отключает его от вас. Вы не увидите его нигде, включая ярлыки в меню «Пуск» или в списке приложений, но оно всё равно будет там.
Таким образом, с вашей точки зрения приложение выглядит удалённым. С точки зрения системы оно может быть вовсе не удалено – оно просто больше не видно вам. Это может быть заметно, когда вы видите, что «удалённое» приложение не освободило столько места на диске, сколько вы ожидали.
Многопользовательский сценарий – самый очевидный пример, но приложение может быть удалено не полностью, даже если на вашем ПК всего одна учётная запись. Такие вещи, как среда выполнения .NET, распространяемые пакеты Visual C++ или Windows App SDK, сами упакованы как компоненты MSIX, и несколько приложений на вашем однопользовательском ПК могут одновременно зависеть от некоторых из этих общих пакетов платформы.
Если вы удалите приложение A, но приложение B в той же учётной записи всё ещё ссылается на тот же общий пакет платформы, Windows также не выполнит удаление размещения (destage) этой платформы, даже если вы единственный пользователь на машине.
В повседневном использовании и управлении приложениями это не так важно, особенно потому, что самые популярные приложения Windows не занимают слишком много места. Тем не менее, не помешает знать, как ваши приложения на самом деле ведут себя за кулисами.
Источник: Microsoft Dev Blogs
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Ivan Jenic




