我一直打这个问题时,我尝试调试我的Windows 8应用程序和有已经安装在其他用户帐户复印件:
DEP0700:应用程序的注册失败。 另一位用户已经安装了这个应用程序的打包版本。 无包装版本无法取代这一点。 冲突包是{{{PACKAGENAME}}},它是由CN =出版{{{证书东西}}}。 (0x80073cf9)
有时候,我可以登录或请别人登录到本机和卸载的应用。 或者我可以改变应用程序的名称/ ID,但一个并不总是可能的,另一种是有风险的(我不希望在应用程序改变ID到源控制检查)。
必须有某种方式将其卸载。 也许PowerShell脚本?
My process above still works, but it simply gets around a race condition issue, where Windows Update (yes, oddly enough) is in charge of wiping out "staged packages."
According to Microsoft, the "other fix" - and I still consider this issue to be a bug - is:
Cause of the problem:
Windows Update (WU) downloads newer versions of packages you have and
“stages” them as Local System, so that when you go to the store to
update the apps, the update process is as quick as possible. WU will
eventually clean up the staged packages that were never installed.
What are some consequences of having "Staged" packages?
Staged packages prevent you from installing that particular package in development mode
Staged packages eat up some disk space, but due to hardlinking, the effect of this is mitigated. If a file is identical between multiple
versions of a package, appx deployment hardlinks the files instead of
maintaining two separate copies of the same file.
How do I find the "Staged" packages?
In an administrator powershell prompt, the command:
get-appxpackage -all
will display all packages on the machine. For a staged package, the
PackageUserInformation will show {S-1-5-18 [Unknown user]: Staged}
2. Using powershell filtering, to get the list of all staged packagefullnames, you could do:
get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}
How do I get rid of the "Staged" packages?
Download psexec
from sysinternals tools, written by Mark Russinovich
To get rid of all of them, run in a regular admin/elevated command prompt (not powershell):
psexec -s powershell -c "get-appxpackage | remove-appxpackage"
如果不工作,你也可以尝试以下,这为我工作。 请注意,这是我的dev的机器,而不是一个普通用户的机器,所以我不知道它会如何影响非开发者:-P
以文件夹的C所有权:\ Program Files文件\ WindowsApps和C:\ ProgramData \微软\的Windows \ AppRepository - 让管理员完全访问权限。 确保的TrustedInstaller也有修改的权利也是如此。 你也取得所有权。 如果你措手不及,这是通过该文件夹的属性来完成。
转到服务并停止Windows Installer服务。
打开C:\ ProgramData \微软\的Windows \ AppRepository \并删除PackageRepository.edb文件。
再次启动Windows Installer服务。
启动Visual Studio中的管理员。
尝试启动您的应用程序。 它应该工作。
您运行的应用程序后,一旦你应该能够在用户模式下再次运行VS。
解决方法 :
如果没有其他适合你(对我来说它没有任何), 你可以改变你的包名称在应用清单 (只是用另一个字符替换最后几个字符)。 当你这样做,你将不再有冲突的包。
更改包的名称可能不适合于某些情况下,但你总是可以进行备份,并改变它回来时,你的问题的设备调试完毕....
有在Windows 10 1709的改进给Remove-appxpackage cmdlet时,加入-allusers作为一个选项。
因此,要卸载应用程序的所有用户,此命令的工作原理:
Get-AppxPackage -AllUsers [PackageFamilyName] | Remove-AppxPackage -AllUsers
其中[PackageFamilyName]通常是你的包的GUID。
警告/警告:该命令似乎使重新安装(重新调配使用DISM包)后非常困难的,因为它似乎把是因为如果每个用户单独卸载的应用程序。 太多进入这里...
如果你想删除当前用户的应用程序,然后尝试:
Get-AppxPackage | where name -eq "APP.NAME" | Remove-AppxPackage
它帮助我。 因此,有Get-AppxPackage
没有-all
在Windows 10:
首先,你需要像SqliteBrowser3一个SQL数据库编辑器
- 做到这一点的处理成为系统用户(使用PSEXEC或其他人)
- 制作副本
C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd
- 打开与SqliteBrowser3该副本
- 您将需要编辑“包装”,“packageuser”和“用户”表。 要做到这一点,你需要记下从“用户”表鬼的用户ID,然后将其删除。 然后,删除具有鬼用户ID的条目
user
从“packageuser”表列。 - 杀
tasklist /svc /fi "services eq StateRepository"
- 替代原有
StateRepository-Machine.srd
备份之后。 - 重新启动,然后你可以正常删除你的包
注意:你需要离开自己的用户条目分配给包
有管理的Windows Store应用程序的一组PowerShell命令的。 您可以列出本机上安装的应用程序的所有,如果您运行以下命令以管理员身份的用户:
Get-AppxPackage -AllUsers
我还没有找到一种方法来卸载不同的用户应用程序,虽然。 Remove-AppxPackage
仅适用于当前用户。 这使得一切更加有趣,如果你删除其安装的应用程序的用户。 至少在Windows 8的预发布版本,这使得它不可能删除他已经安装的应用程序。 我设法成功地避免因为最终发布这样的情况,因此我不能确认问题仍然存在,当用户帐户被删除,即应用程序不会被卸载。
我必须做到以下几点:
get-appxpackage -all > log.txt
notepad log.txt (search for the offending PackageFullName)
remove-appxpackage -allusers -package "PackageFullName"
对我来说,关键是要添加-allusers标志,因为没有它,我收到了“......因为当前用户没有这个包安装。请使用Get-AppxPackage查看已安装的软件包列表。”的错误。
虽然这并没有为我工作,它可能只是工作别人...
开始的PowerShell作为管理和运行:
Get-AppxPackage -all | Out-GridView -Passthru | Remove-AppXPackage
然后选择合适的包和好 ,希望它会删除。
什么工作对我来说
1. Close VS
2. Open Services
3. Stop Appx Deployment Service
4. Open C:\ProgramData\Microsoft\Windows\AppRepository\ and delete the PackageRepository.edb file.
5. Start Appx Deployment Service
6. Start VS & Debug - worked like charm
这与一些其他的答案,尤其是@Pavel纳扎罗夫的,但适用于不同的用户。 而且它从公认的答案不同,因为你不需要安装任何程序。
在Windows PowerShell的管理模式,运行:
get-appxpackage -all | where name -eq "{{ App Name }}" | remove-appxpackage
如果一切都失败了,你是不顾一切,就像是我的情况下(因为用户已被删除)这个人是有点危险,但它为我工作。
请自行承担风险! 我知道我的用户是在计算机上创建的最后一个用户。
这个答案是AURI Rahimzadeh的答案的上方TAKEOWN和intika的答案在你修改使用“DB浏览器SQLite的”的StateRepository-Machine.srd组合(在这里下载: SQLite的3 DB浏览器 ),唯一的区别是我唯一的编辑一个事情:在PackageUser我改变了值用户 3(这是以前删除的用户的ID)至4(这是我的最后创建的用户)
一定要检查用户表,看看你的情况价值观的工作!