
修复微软APP仓库数据库损坏0x80073CFE
事情的起因是Win10电脑的资源管理器看图片不显示Webp缩略图,搜了下发现有微软应用商店webp插件。但是微软应用商店打开闪退,查了半天是之前可能嫌AppXSVC服务CPU占用高,给禁用了,又忘记怎么禁用的,折腾了半天才恢复,不表。
但是还是无法安装,又搜索“微软应用商店不工作如何手动安装软件”,找到个网页转换下载了,用powershell命令Add-AppxPackage来安装,报错“Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073CFE, 包存储库已损坏。”重点来了:这个0x80073CFE ERROR_PACKAGE_REPOSITORY_CORRUPTED 错误,存放APP包信息的数据库坏了,不能增删改,你啥APP也装不了了,严重的甚至已经装的也部分不能用。然后怎么修复?微软霸气的回复,让你重置Windows。
重置肯定是不能重置的,继续找。找到一个办法,意思就是删除数据库文件,让系统自动重建,但是这样全部已安装的APP就全都不能用了,连开始按钮都按不了,还需要Windows镜像修复系统,想想太复杂,不能搞。链接放下面吧:
https://www.winhelponline.com/blog/get-appxpackage-database-disk-image-malformed/
但是参考这个排查,执行:
get-appxpackage -allusers | select Name
还有显示输出,说明数据库没有完全坏,估计只是无法修改,损坏严重的就只能参考上面的链接了。
继续找,发现有个帖子说有人用sqlite3修复,原来是sqlite数据库,又搜了一会才找到原帖:
https://github.com/microsoft/winget-cli/issues/4513
人家说的就不客气,说这么重要的数据库,微软也不备份,也不提供修复的方法。
然后来操作,先要关 StateRepository 服务,会把关联的 AppXSVC 等也关闭,不然数据库文件处于打开状态,不让操作。然后我参考命令move C:\ProgramData\Microsoft\Windows\AppRepository\ 下的 *.srd 文件还是不让操作。
不按别人的流程了,我先复制到别的目录,然后下载 SQLite3 工具(官网:https://www.sqlite.org/download.html)。执行
sqlite3 StateRepository-Machine.srd ".recover" | sqlite3 Machine.db
sqlite3 StateRepository-Deployment.srd ".recover" | sqlite3 Deployment.db
创建了2个新修复的数据库文件,再把原文件压缩备份删除,新文件改为老文件名。用PE启动系统,进C:\ProgramData\Microsoft\Windows\AppRepository\ 下,把两个.srd文件改为.bak文件,再复制两个新文件,重启系统,就能装了,浏览器能看到webp图片了。
总之,我这是数据库损坏轻的,重的肯定只有前面那一条路了。