(* ̄︶ ̄)y

遇到0xc190070b这个错误无数次,后来看到了这个帖子:Error 0xc190010b when installing Windows 8.1 Preview – Microsoft Community

根据这个帖子中的回答,遇到这个问题时需要:

  1. 安装所有挂起的windows update更新商店更新
  2. 关闭杀毒软件和防火墙(个人猜想可能是现在很多杀软都用了内核钩子,和更新产生了冲突
  3. 重置商店缓存,运行WSReset.exe

完成这些操作后再商店更新那里按“再试一次”。和帖子中提到的一样,后来又遇到了各种奇怪错误号好多次,一直按“再试一次”就可以了。

期间我还遇到了0x80070002这个错误,这应该是商店缓存出问题了。可能是你在商店外手动修改了商店缓存导致的(类似yum db modified beyond yum)

重置商店缓存即可,如果还有问题,可以重命名%windir%\SoftwareDistribution文件夹

 

虽然微软说win8升级8.1是无痛升级,但实际上基本所有非微软兼容驱动都要重新安装一遍,包括网卡声卡独立显卡等厂商自己发布的驱动

 

最后,我用资源监视器(perfmon -res)跟踪了更新的过程,有兴趣的可以研究一下

  • 首先商店下载了一个2G左右的更新包,是一个sdb格式的二进制文件
  • 兼容性检查,相当于运行了“windows8升级助手”
  • 在C分区下新建了$Windows.~BT文件夹作为临时目录,猜想是使用了符号链接来完成热更新
  • driver repository 更新
  • 从boot区拷贝了window re的wim镜像
  • 更新winsxs下的文件,先释放到$Windows.~BT\work下,再作更新链接。如果安装了office、vs则更新相关文件
  • 更新注册表
  • work目录内容移动到store中,可能是最终产物?
  • 收集重启需要的字体

完成这些后,系统提示需要重启,估计是进入了winre环境,然后替换了链接。

完成