0

Windows 应用卸载后可能并未真正删除

Windows 应用卸载过程可能比用户预期的更为复杂。当卸载 Microsoft Store 中的 MSIX 格式应用时,系统未必会立即删除所有相关文件,而是根据多用户状态或共享框架依赖关系决定是否保留文件。

MSIX 与传统安装器的差异

传统 MSI 安装器(Microsoft Installer)在卸载时会删除二进制文件、移除目录、清理注册表项并清除所有残留。然而,MSIX 格式采用了不同的生命周期管理机制,将应用管理拆分为四个独立步骤:

  • Stage:将应用文件放置到磁盘
  • Register:将应用连接到特定用户账户
  • Deregister:断开应用与用户账户的连接
  • Destage:从磁盘实际删除文件

卸载时的实际行为

当用户点击卸载按钮时,系统调用 RemovePackageAsync API 方法,首先执行的是 Deregister(解注册)步骤。Destage(删除文件)步骤仅在系统确认没有其他组件引用该应用时才会执行。

多用户场景的影响

在多用户环境中,如果另一个用户账户仍注册了某应用,当前用户卸载该应用时仅会断开自己与该应用的关联。从该用户视角看,应用已从开始菜单和应用列表中消失,但文件仍保留在系统中。

共享框架依赖

即使在单用户设备上,某些组件也可能因共享依赖而保留。.NET 运行时、Visual C++ 可再发行组件和 Windows App SDK 等均以 MSIX 组件形式打包,多个应用可能同时依赖这些共享框架包。当卸载应用 A 时,若同一账户中的应用 B 仍引用相同的共享框架,Windows 将不会删除该框架文件。

存储空间影响

用户可能会注意到,卸载某些应用后释放的存储空间低于预期,这正是上述机制导致的结果。从用户视角看应用已消失,但从系统角度文件可能仍然存在。

via Neowin

0 评论
最旧
最新 最多投票
0
希望看到您的想法,请您发表评论x