Windows 8下载已安装应用程序的更新包,因此更新到最新包的过程要顺利得多。不幸的是,如果你卸载一个应用程序,它并不总是删除这些"分段"应用程序包。
除此之外,您无法访问它们,因为它们是由另一个用户安装的。您甚至不能从Powershell调用"Remove-AppxPack"来删除它们。
这是一个问题的原因是我有一个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设备中删除这些分段程序包?
如前一个问题所述,有几种方法可以做到这一点。关键是必须将Remove-AppxPackage
Powershell cmdlet
作为System
运行。Sysinternals有一个工具psexec
可以让你做到这一点。不幸的是,它不是为ARM编译的,不能在Surface RT(或任何ARM设备)上运行。除此之外,作为系统帐户运行命令本身也相当困难。
幸运的是,有一种方法可以在不太麻烦的情况下做到这一点(除非你没有本指南,否则请为一个充满麻烦的世界做好准备;)。我们将0)确保确实是Staged应用程序包导致了我们的部署失败。1) 安排任务。2) 将其设置为使用系统帐户。3) 将"操作"设置为正确的命令。4) 确保任务能够按需运行。5) 运行任务。6) 请检查应用程序包是否已不再安装。
您需要对有问题的Windows RT设备进行管理员访问
0)请确保暂存的应用程序确实导致了故障
-
将
Powershell
作为Administrator
运行。要执行此操作,右键单击可执行文件,或在"开始屏幕"磁贴上向上滑动,然后点击Run as Administrator
。 -
运行命令"Get-AppxPack-all"。这需要一秒钟的时间,然后为所有用户显示所有已安装的应用程序包。
-
你要找的是一个带有你的应用程序名称的应用程序包。类似"XXXXXXX.MyApp"的内容。在描述底部附近查找
InstallState
为Staged
。User
也将是Unknown
。 -
如果您的应用程序当前没有安装任何版本,则这不是您的问题。
1)安排一项任务
-
在开始屏幕上,打开"安排任务"。我相信你也可以通过管理工具来访问它。您还应该确保任务计划程序服务当前正在运行。
-
在右侧,点击/点击"创建任务…"
-
为任务快速命名,例如"删除暂存包"
2)将其设置为使用系统帐户
-
就在
General
选项卡中间的下方,在Security options
的顶部,单击显示Change User or Group...
的按钮。这将打开一个对话框,用于设置任务的上下文。 -
键入"系统",然后单击"检查名称"。
SYSTEM
应加下划线并全部大写。 -
单击"确定"。用户帐户现在应该显示
NT AUTHORITYSYSTEM
。
3)将"操作"设置为正确的命令
-
转到顶部的"操作"选项卡。单击"新建"。
-
默认操作应为
Start a program
。这是正确的。 -
单击
Browse...
按钮并导航到C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
。 -
在
Add Arguments (optional):
字段中,键入:-c "get-appxpackage | remove-appxpackage"
,包括所有引号。|
字符是"管道"字符。Is应该是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设备。
您必须删除已提供的包才能清除暂存的包。从提升的PowerShell提示符中使用以下命令(不要忘记用应用程序显示名称替换字符串):
获取AppxProvisionedPackage-Online | Where Object DisplayName-eq‘App Name Here’| Remove ProvisionedAppxPackage-Online
删除它的一种更危险的方法是进入注册表并删除与要删除的应用程序相关的密钥。我可以确认这种方式确实有效(删除后重新启动,并做了一个"get-appxpackage-all",它就不见了)。
Sysprep失败时,这对我有效。幸运的是,它在VM(检查点)中。
在运行上述任务后,我还从PowerShell本身运行了[get-appxpackage|remove-appxpackage]。
谢谢。
关键词:
Microsoft.Media.PlayReady客户端Microsoft.VCLibs.