为什么 Windows 会在 C 盘重复存放这么多的安装包,占用这么多磁盘空间?

2018-09-08 20:18:31 +08:00
 shijingshijing

以前就发现从 Win7 开始,微软会在安装文件的时候把安装包保存在 C 盘用 UUID 命名的某个文件夹下,Stackoverflow 和 Microsoft Community 上面也有人讨论过这个问题,结论是不删。好,那就让你存吧。

现在发现这货还会重复保存。

用小工具扫了一下,占了加起来差不多 10 个多 G 的空间,对于 SSD 来说,可不少了。特别是装了 Visual Studio 2015 以后的版本,明显感觉膨胀了不少。VS 2010 其实都还好。

这几个位置是重灾区: C:\ProgramData\Package Cache
C:\Users\All Users\Package Cache
C:\Windows\Installer\

在 C:\Windows\Installer\下保存的是重命名后的安装文件,经过二进制对比,其实跟安装程序使用的安装文件是一模一样的。

微软能不能上点心啊,v2 上的微软员工能不能内部提一下这种低级的问题。

9246 次点击
所在节点    程序员
58 条回复
xxgirl2
2018-09-09 19:36:02 +08:00
用 baobab 看了一下,.../Windows/Installer 大小是 18G。反正 Win8.1 能用到 2023 年,先放着不管了。
CRVV
2018-09-09 20:16:02 +08:00
@msg7086
Arch Linux 上,可以直接 rm /var/cache/pacman/pkg/*
对系统没有任何影响,当然删完就不能回滚版本了
uptime
2018-09-09 20:17:22 +08:00
一看标题就知道说 MSI 格式了
即使删了也没啥,就是正常卸载是卸载不了,提示缺了这个 MSI 文件。
如果你确实你使用的软件不卸载的,删了也没什么。至于修复安装,几乎没人会用到。
CRVV
2018-09-09 20:27:25 +08:00
@geelaw

$ du -sh /mnt/c/Windows/Installer
28G /mnt/c/Windows/Installer

$ du -sh /mnt/c/Windows/Installer/* | sort -k 1 -h -r | head
2.0G /mnt/c/Windows/Installer/$PatchCache$
252M /mnt/c/Windows/Installer/feb3822.msp
252M /mnt/c/Windows/Installer/a6ac9.msp
252M /mnt/c/Windows/Installer/9b30e.msp
252M /mnt/c/Windows/Installer/9044ce9.msp
252M /mnt/c/Windows/Installer/70511be.msp
252M /mnt/c/Windows/Installer/644a705.msp
252M /mnt/c/Windows/Installer/38e694c4.msp
252M /mnt/c/Windows/Installer/36ec9d5e.msp
252M /mnt/c/Windows/Installer/2f1a6.msp

网上说排第一的 PatchCache 里的东西可以删所以略过
下面这一堆奇怪名字的 msp,我一个一个点开看了,出来的窗口的标题全是 Microsoft Office xxxxx
所以这锅还是微软的
ooooo
2018-09-09 21:03:46 +08:00
C:\Windows\Installer\
下面的文件大小高达 39G
然后我把删了
ooooo
2018-09-09 21:04:18 +08:00
也是前几天发现此目录占用非常大
murmur
2018-09-09 21:28:02 +08:00
@shijingshijing 网络状态也就拨号时代那个动画有意义 现在都宽带了 电脑里没几个一直联网的软件都不好意思用
reus
2018-09-09 23:59:56 +08:00
@msg7086 呵呵,我用 archlinux 超过十年,难道 pacman -Sccc 有什么问题?
mingl0280
2018-09-10 01:33:53 +08:00
@shijingshijing
1.msi 包不止是安装 /卸载信息,某些程序会把自己的图标和部分资源放在这里面(例如楼上那个 ooo 如果你装了 XShell 的话你就会发现 XShell 的默认图标没了)
2.微软的软件并不是从中心服务器上弄下来的,包管理器根本不可行,这种情况下你如果要卸载一个八百年前的软件还能指望软件供应商服务器上有下载包?不本地存一个怎么办? pacman 等玩意儿平时能删掉包的原因就是可以随时从服务器上再下一份缓存,就这样还是很容易出现奇怪的残留问题( ERROR 目录不为空想必各位都见过),怎么就这么肯定 linux 包管理比 windows 好的?
3.msi 还有个功能是“恢复最近一次正确的配置”,以及回滚安装。
May725
2018-09-10 01:41:51 +08:00
@kerr92 好像拥有以 TB 为单位的 ssd c 盘
dalieba
2018-09-10 02:14:04 +08:00
PE 访问 C 盘,找这几个文件夹以后再设为压缩。
geelaw
2018-09-10 02:25:37 +08:00
@CRVV #44 在我的电脑上 Installer 文件夹里最大的几个(超过 30 MB )是 Adobe Reader CC 和 iTunes。

此外,$PatchCache$ 的正确删除方式是使用 Disk Cleanup (cleanmgr.exe)。

你可以通过如下脚本确定 Installer 里面是否有不需要的文件(“需要”的定义是该安装包在注册表中有注册,这表示删除、更改、修复、更新软件的时候需要它)

$found = Get-ChildItem "$env:WINDIR\Installer\*" -Force -Recurse -Include *.msi, *.msp -File | ForEach-Object { $_.FullName.ToLowerInvariant() }

$registered = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData -Recurse -Force | Get-ItemProperty -Name LocalPackage -ErrorAction Ignore | ForEach-Object { $_.LocalPackage.ToLowerInvariant() }

$found | Where-Object { $_ -notin $registered }

@ooooo #45 删除该文件夹中的文件可能导致你无法 **更新** 和 **卸载** 使用 MSI 的软件。

@zwh2698 #38 Office 软件若没有明确表示内置游戏,且你是在较新的版本中发现这个现象的,建议你联系微软。因为 Trustworthy Computing 的要求,微软的产品中不应该包含任何“彩蛋”。

@alvin666 #36 这些驱动不删除的原因是,如果你可以 sysprep Windows,然后把镜像复制到另一台电脑。
LGA1150
2018-09-10 02:42:14 +08:00
你看到的只是同一个文件的两个引用,叫“硬链接”
roshad
2018-09-10 03:05:58 +08:00
我 wInstaller 100 多 G. 我是弱智, 我装的都是垃圾软件, 微软是全知全能超越众生的上帝.
components
2018-09-10 03:13:20 +08:00
@RainyH2O
改进版的 Steam Play,允许 Linux 玩家游玩 Windows 游戏。为了实现这个目标,Steam Play 加入了一个改良版的 Wine,叫做 Proton,为 Windows 游戏提供兼容性和使用 Vulkan API。
来源:
https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561
msg7086
2018-09-10 03:37:57 +08:00
@reus 呵呵,删了以后就和你在 Windows 里把安装程序删了一样,不能修复不能回滚了。
你说有什么问题?
zk8802
2018-09-10 03:42:44 +08:00
不要用硬链接把 Windows\Installer 文件夹移到其它地方。某些安装程序(比如 Visual Studio 2015 )会删掉那个硬链接,然后创建一个空的 Windows\Installer 目录。
reus
2018-09-10 09:17:27 +08:00
@msg7086 修复直接用 livecd,然后 arch-chroot 进去,用 pacstrap 爱修啥修啥,怎么不能修复?
回滚?干嘛要回滚?用上面的方法,有什么解决不了的?我没发现有任何问题,有问题也是你的水平问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/487452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX