Windows 8下载已安装应用的更新包,以便更新到最新的包是一个更顺畅的过程。不幸的是,如果你卸载一个应用程序,它并不总是删除这些“分阶段”的应用程序包。
除此之外,您无法访问它们,因为它们是由其他用户安装的。您甚至无法从Powershell调用“Remove-AppxPackage”来删除它们。
这是一个问题的原因是我有一个Surface RT,我用它来开发我的Windows应用商店应用程序。如果系统上已安装“未打包”应用程序,则Visual Studio无法覆盖它,除非它仅安装在当前正在运行的用户上。不幸的是,如果我还在测试从商店接收应用程序并且有我自己的应用的分阶段包,那么我无法将我的应用部署到我的Surface。我收到错误
Error : DEP0700 : Registration of the app failed. Another user has already
installed a packaged version of this app. An unpackaged version cannot
replace this. The conflicting package is [MyProjectName] and it was
published by [MyCertificate]. (0x80073cf9)
如何从Windows RT设备中删除这些Staged Packages?
答案 0 :(得分:5)
如概述in this previously asked question所述,有几种方法可以做到这一点。关键是您必须运行Remove-AppxPackage
Powershell cmdlet
作为System
。 Sysinternals有一个允许您执行此操作的工具psexec
。不幸的是,它不是为ARM编译的,不能在Surface RT(或任何ARM设备)上运行。除此之外,以系统帐户身份运行命令本身也很难。
对我们来说幸运的是,有一种方法可以毫不费力地做到这一点(除非你没有这个指南,然后为一个麻烦的世界做准备;)。我们将0)确保它确实是分阶段的应用程序包导致我们的部署失败。 1)安排任务。 2)将其设置为使用系统帐户。 3)将Action设置为正确的命令。 4)确保Task能够按需运行。 5)运行任务。 6)检查并看到不再安装应用程序包。
您将需要在相关的Windows RT设备上使用管理员访问权限。
0)确保暂存的应用确实导致失败。
将Powershell
作为Administrator
运行。要执行此操作,请右键单击可执行文件或在“开始屏幕”磁贴上向上滑动,然后点按Run as Administrator
。
运行命令“Get-AppxPackage -all”。这将花费一秒钟,然后显示所有用户的所有已安装应用包。
您要找的是一个包含您应用名称的应用包。像“XXXXXXX.MyApp”之类的东西。在说明底部附近寻找InstallState
为Staged
。 User
也将是Unknown
。
如果您当前没有安装任何版本的应用,则不是您的问题。
1)安排任务。
在“开始”屏幕上,打开“计划任务”。我相信你也可以通过管理工具来实现它。您还应该确保当前正在运行任务计划程序服务。
在右侧,点击/点按“创建任务...”
为该任务提供快速名称,例如“删除暂存的软件包”
2)将其设置为使用系统帐户
在General
标签中间的Security options
顶部正下方,点击显示Change User or Group...
的按钮。这将打开一个对话框,供您设置任务的上下文。
键入“系统”,然后单击“检查名称”。 SYSTEM
应加下划线并全部加盖。
单击“确定”。用户帐户现在应该说NT AUTHORITY\SYSTEM
。
3)将操作设置为正确的命令。
转到顶部的“操作”标签。点击“新建”。
默认操作应为Start a program
。这是正确的。
点击Browse...
按钮,然后导航至C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
。
在Add Arguments (optional):
字段中,输入:-c "get-appxpackage | remove-appxpackage"
,包括所有引号。 |
字符是“管道”字符。应该是SHFT+\
(Shift和反斜杠,在Enter
之上)。
点击OK
4)确保任务能够按需运行。
在Conditions
标签中,取消选中Start the task only if the computer is on AC power.
这不是必需的,但不会令人烦恼。
在Settings
标签中,确保选中Allow task to be run on demand
。它应该是默认的,但最好确保。
点击底部的OK
。
5)运行任务。
在左侧窗格中,点击Task Scheduler Library
。这将更新中心窗格以包含我们的新任务。
确保Status
为Ready
。它应该永远不会被运行。
单击列表中的任务。在Actions
下的右侧Selected Item
窗格中,点击Run
。
如果您想查看它的实际效果,请点击Display All Running Tasks
。您将能够看到它当前正在运行的时间。您可以重复单击刷新。当任务消失时,就完成了。
单击右窗格中Task Scheduler Library
部分中的“刷新”。该任务最近应为Last Run Time
,而Last Run Result
应为The operation completed successfully. (0x0)
。
6)检查并确认不再安装应用包。
0)
。将Powershell
作为Administrator
运行。运行命令Get-AppxPackage -all
。检查并查看是否仍安装了Staged
软件包。他们不应该。你现在完成了!您应该能够将应用程序包部署到Windows RT设备。
答案 1 :(得分:1)
更有风险的删除方法是进入注册表并删除与要删除的应用相关的密钥。 我可以确认这种方式是否有效(删除后重新启动并执行“get-appxpackage -all”并且它已经消失了。)
答案 2 :(得分:1)
当Sysprep失败时,这对我有用。幸运的是它在VM(检查点)中。
我也跑了[get-appxpackage |运行上述任务后,从PowerShell本身删除-appxpackage]。
谢谢。
关键词:
Microsoft.Media.PlayReadyclient Microsoft.VCLibs。
答案 3 :(得分:1)
您必须删除已配置的程序包才能清除已暂存的程序包。在提升的PowerShell提示符下使用以下命令(不要忘记用您的应用程序显示名称替换字符串):
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -eq' App Name Here' | Remove-ProvisionedAppxPackage -Online