当我尝试调试Windows 8应用程序并且已在另一个用户帐户上安装了副本时,我一直在遇到此问题:
DEP0700:应用注册失败。另一位用户已经安装了此应用程序的打包版本。未打包的版本无法取代此版本。冲突的包是{{{PackageName}}},它由CN = {{{Certificate Stuff}}}发布。 (0x80073cf9)
有时我只能登录或要求其他人登录计算机并卸载应用程序。或者我可以更改应用程序名称/ id,但是一个并不总是可能而另一个是有风险的(我不想将已更改的应用程序ID签入源代码控制)。
必须有某种方法来卸载它。也许是PowerShell脚本?
答案 0 :(得分:23)
我上面的过程仍然有效,但它只是解决了竞争条件问题,其中Windows Update(是的,奇怪的是)负责消除“分阶段包”。
According to Microsoft,“其他修复” - 我仍然认为这个问题是一个错误 - 是:
问题原因:
Windows Update(WU)下载您拥有的更新版本的软件包 将它们“分级”为本地系统,这样当你去商店时 更新应用程序,更新过程尽可能快。吴将 最终清理从未安装过的分阶段包。
拥有“分阶段”套餐有什么后果?
分阶段程序包阻止您在开发模式下安装该特定程序包
- 醇>
分阶段的软件包占用了一些磁盘空间,但由于硬链接,其效果得到了缓解。如果文件在多个文件之间相同 一个软件包的版本,appx部署硬链接文件而不是 保留同一文件的两个单独副本。
如何找到“已暂存”的套餐?
- 醇>
在管理员PowerShell提示符下,输入命令:
get-appxpackage -all
将显示机器上的所有包。对于分阶段的包, PackageUserInformation将显示{S-1-5-18 [未知用户]:已暂存} 2.使用powershell过滤,获取所有暂存的包完整列表的列表,您可以这样做:
get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}
如何摆脱“分阶段”套餐?
从Mark Russinovich撰写的sysinternals工具下载
psexec
- 醇>
要摆脱所有这些,请在常规管理/提升命令提示符(而不是PowerShell)中运行:
psexec -s powershell -c "get-appxpackage | remove-appxpackage"
答案 1 :(得分: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.
答案 2 :(得分:18)
解决方法强>:
如果其他任何内容都不适合您(对我而言也没有),您只需更改应用清单中的包名称(只需将最后几个字符替换为其他字符)即可。 执行此操作时,您将不再有冲突的包。
更改软件包名称可能不适合某些情况,但是当您在有问题的设备上完成调试后,您可以随时备份并更改它。
答案 3 :(得分:15)
在Windows 10 1709中,对remove-appxpackage cmdlet进行了改进,添加了-allusers作为选项。
因此,要为所有用户卸载应用,请使用以下命令:
Get-AppxPackage -AllUsers [PackageFamilyName] | Remove-AppxPackage -AllUsers
[PackageFamilyName]通常是软件包的GUID。
注意事项/警告:该命令似乎使以后的重新安装(使用DISM重新提供程序包)非常困难,因为这似乎就像每个用户都单独卸载了该应用程序一样。无法进入这里...
答案 4 :(得分:12)
如果您要删除当前用户的应用,请尝试:
Get-AppxPackage | where name -eq "APP.NAME" | Remove-AppxPackage
它帮助了我。因此Get-AppxPackage
没有-all
答案 5 :(得分:8)
在Windows 10上:
首先,您需要一个SQL数据库编辑器,如SqliteBrowser3
C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd
user
列中具有ghost用户ID的条目。表tasklist /svc /fi "services eq StateRepository"
StateRepository-Machine.srd
。注意:您需要将自己的用户条目分配给包
答案 6 :(得分:5)
有一组用于管理Windows应用商店应用的PowerShell cmdlet。如果您以管理员身份运行以下命令,则可以为所有用户列出计算机上已安装的应用程序:
Get-AppxPackage -AllUsers
我还没有找到一种方法来为不同的用户卸载应用程序。 Remove-AppxPackage
仅适用于当前用户。如果删除安装了应用程序的用户,这会使一切变得更加有趣。至少在Windows 8的预发布版本中,这使得无法删除已安装的应用程序。我设法成功避免了自最终版本以来的这种情况,因此我无法确认问题是否仍然存在,即删除用户帐户时不会卸载应用程序。
答案 7 :(得分:4)
我必须执行以下操作:
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
[[20:39:12.519]] [LOG] server live
[[20:39:12.626]] [LOG] Connected to DB : SUCCESS
[[20:39:12.642]] [LOG] index created email_1 <<<<<<<< buyers collection
[[20:39:12.647]] [LOG] index created email_1 <<<<<<<< dealers collection
[[20:39:12.795]] [LOG] index created company_name_1 <<<<<<<< companies collection
[[20:39:42.081]] [LOG] start saving cars
[[20:39:42.084]] [LOG] [ { id: '2',
vin: '5GAKRBKD9EJ323900',
make: 'Buick',
model: 'ENCLAVE',
year: '2014',
priceInr: '2537993',
trim: 'Leather FWD',
engine: 'SPORT UTILITY 4-DR',
body: '3.6L V6 DOHC 24V',
color: 'Silver',
transmission: 'Manual',
DealerID: '103' },
{ id: '4',
vin: '2GKALSEKXD6184074',
make: 'GMC',
model: 'TERRAIN',
year: '2013',
priceInr: '3851710',
trim: 'SLE2 FWD',
engine: 'SPORT UTILITY 4-DR',
body: '2.4L L4 DOHC 16V FFV',
color: 'Yellow',
transmission: 'Manual',
DealerID: '103' },
{ id: '6',
vin: '1GC1KXE86EF127166',
make: 'Chevrolet',
model: 'SILVERADO 2500HD',
year: '2014',
priceInr: '840547',
trim: 'LT Crew Cab 4WD',
engine: 'CREW CAB PICKUP 4-DR',
body: '6.6L V8 OHV 32V TURBO DIESEL',
color: 'Grey',
transmission: 'Automatic',
DealerID: '103' },
{ id: '8',
vin: '1GKKRTED1CJ211299',
make: 'GMC',
model: 'Acadia',
year: '2012',
priceInr: '3805008',
trim: 'Denali FWD',
engine: 'SPORT UTILITY 4-DR',
body: '3.6L V6 DOHC 24V',
color: 'Metallic White',
transmission: 'Automatic',
DealerID: '103' },
{ id: '10',
vin: '1GKKVTKD9EJ282303',
make: 'GMC',
model: 'ACADIA',
year: '2014',
priceInr: '1730235',
trim: 'Denali AWD',
engine: 'SPORT UTILITY 4-DR',
body: '3.6L V6 DOHC 24V',
color: 'Black',
transmission: 'Manual',
DealerID: '103' },
{ id: '12',
vin: '1GKS1AKC0FR200193',
make: 'GMC',
model: 'YUKON',
year: '2015',
priceInr: '3129397',
trim: 'SLE 2WD',
engine: 'SPORT UTILITY 4-DR',
body: '5.3L V8 OHV 16V',
color: 'Silver',
transmission: 'Manual',
DealerID: '103' } ]
[[20:39:42.089]] [LOG] 0 '<<<<<<<< INDEX--OUTER ' 6
[[20:39:42.089]] [LOG] 1 '<<<<<<<< INDEX--OUTER ' 6
[[20:39:42.090]] [LOG] 2 '<<<<<<<< INDEX--OUTER ' 6
[[20:39:42.090]] [LOG] 3 '<<<<<<<< INDEX--OUTER ' 6
[[20:39:42.090]] [LOG] 4 '<<<<<<<< INDEX--OUTER ' 6
[[20:39:42.090]] [LOG] 5 '<<<<<<<< INDEX--OUTER ' 6
[[20:39:42.120]] [LOG] gmc []
[[20:39:42.120]] [LOG] No such Company car exists in the garrage --> creating one
[[20:39:42.134]] [LOG] buick []
[[20:39:42.134]] [LOG] No such Company car exists in the garrage --> creating one
[[20:39:42.138]] [LOG] gmc []
[[20:39:42.138]] [LOG] No such Company car exists in the garrage --> creating one
[[20:39:42.143]] [LOG] chevrolet []
[[20:39:42.143]] [LOG] No such Company car exists in the garrage --> creating one
[[20:39:42.146]] [LOG] gmc []
[[20:39:42.146]] [LOG] No such Company car exists in the garrage --> creating one
[[20:39:42.150]] [LOG] 1 '<<<<<<<< INDEX ' 6
[[20:39:42.150]] [LOG] gmc []
[[20:39:42.151]] [LOG] No such Company car exists in the garrage --> creating one
[[20:39:42.153]] [LOG] 0 '<<<<<<<< INDEX ' 6
[[20:39:42.154]] [LOG] Error : while adding company
events.js:183
throw er; // Unhandled 'error' event
^
Error: MongoError: E11000 duplicate key error collection: myKaarma.companies index: company_name_1 dup key: { : "gmc" }
at company.save (/Users/prashant/Desktop/appathon/route/api.js:179:55)
at /Users/prashant/Desktop/appathon/node_modules/mongoose/lib/model.js:4437:16
at $__save.error (/Users/prashant/Desktop/appathon/node_modules/mongoose/lib/model.js:397:16)
at /Users/prashant/Desktop/appathon/node_modules/kareem/index.js:246:48
at next (/Users/prashant/Desktop/appathon/node_modules/kareem/index.js:167:27)
at next (/Users/prashant/Desktop/appathon/node_modules/kareem/index.js:169:9)
at Kareem.execPost (/Users/prashant/Desktop/appathon/node_modules/kareem/index.js:217:3)
at _handleWrapError (/Users/prashant/Desktop/appathon/node_modules/kareem/index.js:245:21)
at _cb (/Users/prashant/Desktop/appathon/node_modules/kareem/index.js:304:16)
at /Users/prashant/Desktop/appathon/node_modules/mongoose/lib/model.js:258:9
at /Users/prashant/Desktop/appathon/node_modules/kareem/index.js:135:16
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
对我来说,关键是添加 -allusers 标志,因为没有它,我会收到“ ...,因为当前用户没有安装该软件包。请使用Get-AppxPackage查看已安装软件包的列表。”错误。
答案 8 :(得分:3)
虽然这对我不起作用,但它可能适用于其他人......
以管理员身份启动PowerShell并运行:
Get-AppxPackage -all | Out-GridView -Passthru | Remove-AppXPackage
然后选择正确的套餐和确定,希望它会删除。
答案 9 :(得分:2)
什么对我有用
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
答案 10 :(得分:2)
这与其他一些答案类似,尤其是@Pavel Nazarov,但适用于不同的用户。它与接受的答案不同,因为您不需要安装任何程序。
在管理员模式的Windows Powershell中,运行:
get-appxpackage -all | where name -eq "{{ App Name }}" | remove-appxpackage
答案 11 :(得分:0)
如果所有其他方法都失败并且你绝望了,就像我的情况一样(因为用户被删除了)这个有点危险,但它对我有用。
自担风险! 我知道我的用户是在机器上创建的最后一个用户。
这个答案是Auri Rahimzadeh上面关于TAKEOWN和intika的答案的组合,你使用'DB Browser For SQLite'修改StateRepository-Machine.srd(在这里下载:DB Browser for SQLite 3),唯一的区别是我只编辑了一件事: 在 PackageUser 中,我将值用户 3 (这是以前删除的用户的ID)更改为 4 (哪个是我,最后创建的用户)
务必检查用户表并查看您的案例中的值是什么!
答案 12 :(得分:0)
在尝试了许多其他变体之后,我刚刚在Win 10 v1903上使用了get-appxpackage -all | where name -eq "PackageName" | remove-appxpackage -AllUsers
,并且可以正常工作。之后,我测试了包装是否存在。
答案 13 :(得分:0)
就我而言,我需要使用:
file.choose()
NLStart("C:\\Program Files\\NetLogo 6.2.0\\app", gui = TRUE, nl.jarname = "netlogo-6.2.0.jar")
而不是
Get-AppxProvisionedPackage -online
然后相应地使用 Get-AppxPackage