Fil*_*kun 58 powershell windows-8 windows-runtime windows-store windows-store-apps
当我尝试调试我的Windows 8应用程序并且已经在另一个用户帐户上安装了一个副本时,我一直在遇到这个问题:
DEP0700:应用程序注册失败.另一位用户已经安装了此应用程序的打包版本.未打包的版本无法取代此版本.冲突的包是{{{PackageName}}},它由CN = {{{Certificate Stuff}}}发布.(0x80073cf9)
有时我可以登录或要求其他人登录计算机并卸载应用程序.或者,我可以更改应用程序名称/ ID,但是一个并不总是可行而另一个是有风险的(我不想将已更改的应用程序ID签入源代码控制).
必须有一些方法来卸载它.也许是PowerShell脚本?
Aur*_*deh 24
我上面的过程仍然有效,但它只是解决了竞争条件问题,其中Windows Update(是的,奇怪的是)负责消除"分阶段包".
根据微软的说法,"其他修复" - 我仍然认为这个问题是一个错误 - 是:
问题原因:
Windows Update(WU)下载您拥有的更新版本的软件包并将其"分级"为本地系统,这样当您前往商店更新应用程序时,更新过程将尽可能快.WU将最终清理从未安装过的分阶段包.
拥有"分阶段"套餐有什么后果?
分阶段程序包阻止您在开发模式下安装该特定程序包
分阶段的软件包占用了一些磁盘空间,但由于硬链接,其效果得到了缓解.如果某个包的多个版本之间的文件相同,则appx部署会对文件进行硬链接,而不是维护同一文件的两个单独副本.
我如何找到"分阶段"包?
在管理员PowerShell提示符下,命令:
get-appxpackage -all将显示机器上的所有包.对于分阶段包,PackageUserInformation将显示{S-1-5-18 [未知用户]:已暂存} 2.使用powershell过滤,获取所有已暂存的包完整列表的列表,您可以执行以下操作:
Run Code Online (Sandbox Code Playgroud)get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}如何摆脱"分阶段"套餐?
psexec从Mark Russinovich编写的sysinternals工具下载要摆脱所有这些,请在常规管理/提升命令提示符(而不是PowerShell)中运行:
psexec -s powershell -c "get-appxpackage | remove-appxpackage"
Aur*_*deh 21
如果这不起作用,您也可以尝试以下,这对我有用.请注意,这是我的开发机器,而不是普通用户的机器,所以我不知道它会如何影响非开发者:-P
获取文件夹c:\ Program Files\WindowsApps和C:\ ProgramData\Microsoft\Windows\AppRepository的所有权 - 授予管理员完全访问权限.确保TrustedInstaller也具有修改权限.你也拥有所有权.如果你不知道,这是通过该文件夹上的属性完成的.
转到"服务"并停止Windows Installer服务.
打开C:\ ProgramData\Microsoft\Windows\AppRepository \并删除PackageRepository.edb文件.
再次启动Windows Installer服务.
以管理员身份启动Visual Studio.
尝试启动您的应用.它应该工作.
运行应用程序后,您应该能够再次以用户模式运行VS.
hen*_*rix 19
解决方法:
如果没有别的东西适合你(对我而言也没有),你可以在应用程序清单中更改你的包名称(只需用其他字符替换最后几个字符).执行此操作时,您将不再有冲突的包.
更改软件包名称可能不适合某些情况,但是您可以随时备份它并在完成对有问题的设备进行调试时将其更改回来....
zax*_*zax 16
Windows 10 1709对remove-appxpackage cmdlet进行了改进,添加了-allusers作为选项.
因此,要为所有用户卸载App,此命令有效:
Get-AppxPackage -AllUsers [PackageFamilyName] | Remove-AppxPackage -AllUsers
Run Code Online (Sandbox Code Playgroud)
其中[PackageFamilyName]通常是您的包的GUID.
警告/注意:该命令似乎在以后很难重新安装(使用DISM重新配置包),因为它似乎对待每个用户单独卸载应用程序.进入这里太多了......
Pav*_*rov 12
如果要删除当前用户的应用,请尝试:
Get-AppxPackage | where name -eq "APP.NAME" | Remove-AppxPackage
Run Code Online (Sandbox Code Playgroud)
它帮助了我.所以Get-AppxPackage没有-all
在Windows 10上:
首先,您需要一个像SqliteBrowser3这样的SQL数据库编辑器
C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srduser从"packageuser"表中删除列中具有ghost用户id的条目.tasklist /svc /fi "services eq StateRepository"StateRepository-Machine.srd备份后替换原始.注意:您需要将自己的用户条目分配给包
有一组用于管理Windows应用商店应用的PowerShell cmdlet.如果以管理员身份运行以下命令,则可以为所有用户列出计算机上已安装的应用程序:
Get-AppxPackage -AllUsers
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到为其他用户卸载应用程序的方法.Remove-AppxPackage仅适用于当前用户.如果删除安装了应用程序的用户,这会使一切变得更加有趣.至少在Windows 8的预发布版本中,这使得无法删除已安装的应用程序.我设法成功避免了自最终版本以来的这种情况,因此我无法确认问题仍然存在,即删除用户帐户时不会卸载应用程序.
我必须执行以下操作:
get-appxpackage -all > log.txt
notepad log.txt (search for the offending PackageFullName)
remove-appxpackage -allusers -package "PackageFullName"
Run Code Online (Sandbox Code Playgroud)
我的关键是添加-allusers标志,因为如果没有它,我会收到“...因为当前用户没有安装该软件包。使用 Get-AppxPackage 查看已安装的软件包列表。 ”错误。
| 归档时间: |
|
| 查看次数: |
66366 次 |
| 最近记录: |