当我尝试调试 Windows 8 应用程序并且另一个用户帐户上已安装了一个副本时,我不断遇到此问题:
DEP0700:应用程序注册失败。另一个用户已经安装了此应用程序的打包版本。未打包的版本无法替代它。冲突的包是 {{{PackageName}}},由 CN={{{Certificate Stuff}}} 发布。 (0x80073cf9)
有时我可以直接登录或要求其他人登录机器并卸载应用程序。或者,我可以更改应用程序名称/ID,但一种并不总是可行,另一种则有风险(我不想将更改后的应用程序 ID 签入源代码管理)。
一定有办法卸载它。也许是一个 PowerShell 脚本?
我上面的过程仍然有效,但它只是解决了竞争条件问题,其中 Windows 更新(是的,很奇怪)负责清除“暂存的包”。
据微软称 http://blogs.msdn.com/b/wsdevsol/archive/2013/01/28/registration-of-the-app-failed-another-user-has-already-installed-a-packaged-version-of-this-app-an-unpackaged-version-cannot-replace-this.aspx,“其他修复” - 我仍然认为这个问题是一个错误 - 是:
问题原因:
Windows Update (WU) 下载您拥有的更新版本的软件包
将它们“暂存”为本地系统,这样当您去商店时
更新应用程序,更新过程尽可能快。吴将
最终清理从未安装的暂存包。
使用“暂存”包会产生哪些后果?
暂存包会阻止您在开发模式下安装该特定包
暂存包会占用一些磁盘空间,但由于硬链接,这种影响会减轻。如果多个文件之间的文件相同
包的版本,appx 部署硬链接文件而不是
维护同一文件的两个单独副本。
如何找到“暂存”包?
-
在管理员 powershell 提示符下,命令:
get-appxpackage -all
将显示机器上的所有包。对于分阶段包,
PackageUserInformation 将显示 {S-1-5-18 [未知用户]:已暂存}
2. 使用 powershell 过滤,要获取所有暂存包完整名称的列表,您可以执行以下操作:
get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}
如何摆脱“暂存”包?
下载psexec
来自 sysinternals 工具,作者:Mark Russinovich
要摆脱所有这些,请在常规管理/提升的命令提示符(而不是 powershell)中运行:
psexec -s powershell -c "get-appxpackage | remove-appxpackage"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)