纠结的Windows更新

自打微软开始折腾它发明的Windows Installer之后,msi格式的安装包就满天飞。虽然听起来很屌,但我实在不理解这东西有神马好用的……

而且不知道从什么时候开始,Windows会cache某些installer。这下就好玩了,比如用我载一个软件,硬盘上有installer的原始拷贝,安装了之后操作系统再帮我cache一份,再加上安的那份,总共有三倍的空间被占用了。随着时间的推移,有的installer会被保留多个版本,而且往往这软件都被删了cache却还留着,空间浪费极其严重。于是乎,某个微软的MVP出了一个工具,可以清理“用不到”的installer。叫啥我就不说了,估计也有国产神棍安全软件实现了这种功能。总之我就傻乎乎的下载然后用了一次,可爽了,一口气清理出好几个G的空间。

然而MVP说了,这工具不保证清理了之后不出问题,言下之意嘛……果然清理了之后就出问题了。慢慢的Windows Updates多出n多更新要我安装,但真正去安装的时候又说安装不上,异常烦人。经过若干时间的搜索,我大致明白了问题所在,安装不上主要有两个原因:

其一,可能就是微软的更新程序脑残了,已经装过的更新还要提示你安装。而更新包的作者也挺二逼的,发现自己被安装过就返回一个错误码,然后这俩就开始死掐了……解决方法是在更新条目上右键把丫给隐藏了,眼不见心不烦。如果以后更新程序有机会发现自己错了,会把隐藏条目彻底从列表里删去,所以不必担心。

其二,可能是某个更新的前置卸载不掉。有些更新是用来替换之前安装的某些东西的,比如Microsoft Silverlight 4 SDK这种。用之前提过的那工具清理过Installer之后,这些东西就卸不掉了。这个问题也影响正常的卸载,如果卸载某个软件的时候它弹出个窗口让你选择msi的位置,那恭喜你中招了……

这个事情尤其在vcredist_x86.exe更新的时候最明显,因为微软经常更新自己的runtime,以修复之前的漏洞。安装新软件的时候就会被要求安装最新的运行时库,可惜旧的卸不掉新版也安不上。不过大部分情况没关系,游戏什么的都能跑起来,毕竟只是build version变化,major和minor version没有变。

总之很不爽,也不知道这是谁设计的deploy流程?我要卸软件却问我安装文件在哪里,难道安装的时候记录一份已安装资源列表的革命好传统已经被抛弃了吗?总之,通过正常方式肯定卸不掉了,我们得请出微软的新工具:Microsoft Fixit (作者的Blog:http://blogs.msdn.com/b/astebner/)

看这名字就知道很屌,Fixit!(干了它!)。不过软件本身很低调,下载之后就一个exe。执行,然后等他搜啊搜啊搜出所有安过的软件,找到卸不掉的那个,让它去卸,然后就卸掉了。估计某些国产神棍安全软件也做了这个功能,真怀疑微软里面是不是有这些神棍软件的内应,故意搞这么多鸡毛事情来增加这种安全软件的销量。

如何知道是哪个前置卸不掉呢?最朴素的方式是手动点击更新包,看看提示的错误是啥。Windows自动更新下载的那些更新包,安装的时候会被拷贝到C:\Windows\SoftwareDistribution\Download\Install。如果一次只安一个更新,那么这个更新的文件就会被留在这个目录,自己拷出来双击一下就知道前置更新大概是哪个。

无论如何,只要卸掉了旧的新的就可以安装,更新什么的也就没有问题了,我们革命群众和微软脑残的斗争也就告一段落了。

One thought on “纠结的Windows更新”

  1. 我的系统也见鬼了,现在每次启动都会弹出发现新网卡的提示,会自动去装驱动。
    双显卡无法切换,卡在集成显卡,还有很多诡异的其他问题……
    哦,对了,IE9升级补丁包会一直提示失败,每次开机重启两次,这个砍掉了IE9正常了……

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.