Dieses Problem tritt immer wieder auf, wenn ich versuche, meine Windows 8-Apps zu debuggen und bereits eine Kopie für ein anderes Benutzerkonto installiert ist:
DEP0700: Die Registrierung der App ist fehlgeschlagen. Ein anderer Benutzer hat bereits eine gepackte Version dieser App installiert. Eine ungepackte Version kann dies nicht ersetzen. Das in Konflikt stehende Paket ist {{{{Paketname}}} und wurde von CN = {{{Stuff Zeug}}} veröffentlicht. (0x80073cf9)
Manchmal kann ich mich einfach einloggen oder jemanden bitten, sich an der Maschine anzumelden und die App zu deinstallieren. Alternativ kann ich den Anwendungsnamen/die ID ändern, aber eine ist nicht immer möglich und die andere ist riskant (ich möchte die geänderte Anwendungs-ID nicht in die Quellcodeverwaltung einchecken).
Es muss eine Möglichkeit geben, es zu deinstallieren. Vielleicht ein PowerShell-Skript?
Mein oben beschriebener Prozess funktioniert immer noch, aber es wird einfach ein Race-Condition-Problem gelöst, bei dem Windows Update (ja, seltsamerweise) dafür verantwortlich ist, "inszenierte Pakete" zu löschen.
Laut Microsoft ist das "andere Update" - und ich halte dieses Problem immer noch für einen Fehler - ist:
Ursache des Problems:
Windows Update (WU) lädt neuere Versionen Ihrer Pakete und .__ herunter. "Stuft" sie als lokales System ein, so dass, wenn Sie in den Store gehen, um Aktualisieren Sie die Apps, der Aktualisierungsvorgang ist so schnell wie möglich. WU wird bereinigen Sie schließlich die inszenierten Pakete, die nie installiert wurden.
Welche Konsequenzen haben "Staged" -Pakete?
Gestaffelte Pakete verhindern, dass Sie dieses bestimmte Paket im Entwicklungsmodus installieren
Inszenierte Pakete beanspruchen etwas Speicherplatz, aber durch Hardlinking wird die Auswirkung gemindert. Wenn eine Datei zwischen mehreren Bei Versionen von Paketen verknüpft die Appx-Bereitstellung die Dateien anstelle von Aufrechterhaltung von zwei separaten Kopien derselben Datei.
Wie finde ich die "Staged" -Pakete?
In einer Administratorpowershell-Eingabeaufforderung lautet der Befehl:
get-appxpackage -all
zeigt alle Pakete auf der Maschine an. Bei einem bereitgestellten Paket ist der PackageUserInformation zeigt {S-1-5-18 [Unbekannter Benutzer]: Staged} 2. Verwenden Sie die Powershell-Filterung, um die Liste aller bereitgestellten Paketnamen zu erhalten:
get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}
Wie entferne ich die "Staged" -Pakete?
Laden Sie
psexec
von sysinternals tools herunter, geschrieben von Mark RussinovichUm alle zu entfernen, führen Sie einen regulären Admin/erhöhten Befehl aus (nicht Powershell):
psexec -s powershell -c "get-appxpackage | remove-appxpackage"
Wenn das nicht funktioniert, können Sie auch folgendes versuchen, was für mich funktioniert hat. Beachten Sie, dass dies für meinen Dev-Computer und nicht für einen normalen Benutzer gilt, daher weiß ich nicht, wie er sich auf Nicht-Devs auswirkt :-P
Übernehmen Sie den Besitz der Ordner c:\Programme\WindowsApps und C:\ProgramData\Microsoft\Windows\AppRepository - und geben Sie dem Administrator vollen Zugriff. Stellen Sie sicher, dass TrustedInstaller auch über Änderungsrechte verfügt. Sie übernehmen auch den Besitz. Wenn Sie nicht überrascht sind, geschieht dies über die Eigenschaften dieses Ordners.
Gehen Sie zu Dienste und stoppen Sie den Windows Installer-Dienst.
Öffnen Sie C:\ProgramData\Microsoft\Windows\AppRepository\und löschen Sie die PackageRepository.edb-Datei.
Starten Sie den Windows Installer-Dienst erneut.
Starten Sie Visual Studio als Administrator.
Versuchen Sie, Ihre App zu starten. Es sollte funktionieren.
Nachdem Sie die App einmal ausgeführt haben, sollten Sie VS erneut im Benutzermodus ausführen können.
Problemumgehung :
Wenn nichts anderes für Sie funktioniert (für mich auch nicht), können Sie Ihren Paketnamen einfach in Ihrem App-Manifest ändern (ersetzen Sie einfach die letzten paar Zeichen durch andere Zeichen). Wenn Sie dies tun, werden Sie keine widersprüchlichen Pakete mehr haben.
Das Ändern des Paketnamens ist möglicherweise für einige Szenarien nicht angemessen, aber Sie können es jederzeit sichern und zurücksetzen, wenn Sie das Debugging auf Ihrem problematischen Gerät beendet haben.
In Windows 10 1709 wurde das Cmdlet "remove-appxpackage" verbessert, indem -allusers als Option hinzugefügt wurde.
Um eine App für alle Benutzer zu deinstallieren, funktioniert dieser Befehl:
Get-AppxPackage -AllUsers [PackageFamilyName] | Remove-AppxPackage -AllUsers
Wobei [PackageFamilyName] im Allgemeinen die GUID Ihres Pakets ist.
Vorsichtsmaßnahme/Vorsicht: Der Befehl macht die erneute Installation (das erneute Bereitstellen des Pakets mithilfe von DISM) später sehr schwierig, da er so zu behandeln ist, als würde jeder Benutzer die App einzeln deinstallieren. Zu viel um hier reinzukommen ...
Wenn Sie die App für den aktuellen Benutzer löschen möchten, versuchen Sie Folgendes:
Get-AppxPackage | where name -eq "APP.NAME" | Remove-AppxPackage
Es hat mir geholfen. Also gibt es Get-AppxPackage
ohne -all
Unter Windows 10:
Zunächst benötigen Sie einen SQL-Datenbankeditor wie SqliteBrowser3
C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd
erstellenuser
aus der Tabelle "packageuser".tasklist /svc /fi "services eq StateRepository"
StateRepository-Machine.srd
nach der Sicherung.Hinweis: Sie müssen Ihren eigenen Benutzereintrag dem Paket zugewiesen lassen
Es gibt eine Reihe von PowerShell-Cmdlets zum Verwalten von Windows Store-Apps. Sie können die auf dem Computer installierten Apps für alle Benutzer auflisten, wenn Sie den folgenden Befehl als Administrator ausführen:
Get-AppxPackage -AllUsers
Ich habe jedoch keine Möglichkeit gefunden, eine App für einen anderen Benutzer zu deinstallieren. Remove-AppxPackage
funktioniert nur für den aktuellen Benutzer. Dies macht das Ganze noch interessanter, wenn Sie einen Benutzer mit installierten Apps löschen. Zumindest in Vorabversionen von Windows 8 war es daher unmöglich, eine von ihm installierte App zu löschen. Es ist mir gelungen, eine solche Situation seit der endgültigen Veröffentlichung erfolgreich zu vermeiden. Daher kann ich nicht bestätigen, dass das Problem immer noch vorliegt, d. H. Apps werden nicht deinstalliert, wenn ein Benutzerkonto gelöscht wird.
Ich musste folgendes tun:
get-appxpackage -all > log.txt
notepad log.txt (search for the offending PackageFullName)
remove-appxpackage -allusers -package "PackageFullName"
Der Schlüssel für mich war das Hinzufügen des -allusers -Flags, da ich ohne dieses ein "... erhalten habe, da der aktuelle Benutzer dieses Paket nicht installiert hat. Verwenden Sie Get-AppxPackage, um die Liste der installierten Pakete anzuzeigen ." Error.
Obwohl dies für mich nicht funktioniert hat, kann es auch für jemand anderen funktionieren ...
Starten Sie Powershell als Administrator und führen Sie Folgendes aus:
Get-AppxPackage -all | Out-GridView -Passthru | Remove-AppXPackage
DannWÄHLEdas richtige Paket undOK, hoffentlich wird es entfernt.
Was hat bei mir funktioniert?
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
Dies ist ähnlich wie bei einigen anderen Antworten, insbesondere bei @Pavel Nazarov, funktioniert jedoch für verschiedene Benutzer. Sie unterscheidet sich von der akzeptierten Antwort, da Sie keine Programme installieren müssen.
Führen Sie in Windows PowerShell im Administratormodus Folgendes aus:
get-appxpackage -all | where name -eq "{{ App Name }}" | remove-appxpackage
Wenn alles andere fehlschlägt und Sie verzweifelt sind, wie es in meinem Fall der Fall war (weil der Benutzer gelöscht wurde), ist dies ein wenig gefährlich, aber es hat für mich funktioniert.
DO AT IHR EIGENES RISIKO! Ich wusste, dass mein Benutzer der letzte Benutzer war, der auf dem Computer erstellt wurde.
Diese Antwort ist eine Kombination aus der Antwort von Auri Rahimzadeh auf TAKEOWN und der Antwort von intika, bei der Sie StateRepository-Machine.srd mit 'DB Browser For SQLite' (hier heruntergeladen: DB Browser for SQLite 3 ) ändern Ich habe nur eine Sache bearbeitet: In PackageUser habe ich den Wert User _ 3 (der die ID des zuvor gelöschten Benutzers war) in 4 geändert. (Welches bin ich, der zuletzt angelegte Benutzer)
Vergewissern Sie sich, dass Sie die Tabelle User überprüfen und sehen, welche Werte in Ihrem Fall funktionieren.