it-swarm.com.de

Wie deinstalliere ich eine App, die ein anderer Benutzer installiert hat?

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?

53
Filip Skakun

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?

  1. Gestaffelte Pakete verhindern, dass Sie dieses bestimmte Paket im Entwicklungsmodus installieren

  2. 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?

  1. 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?

  1. Laden Sie psexec von sysinternals tools herunter, geschrieben von Mark Russinovich

  2. Um alle zu entfernen, führen Sie einen regulären Admin/erhöhten Befehl aus (nicht Powershell):

psexec -s powershell -c "get-appxpackage | remove-appxpackage"

22
Auri Rahimzadeh

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

  1. Ü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.

  2. Gehen Sie zu Dienste und stoppen Sie den Windows Installer-Dienst.

  3. Öffnen Sie C:\ProgramData\Microsoft\Windows\AppRepository\und löschen Sie die PackageRepository.edb-Datei.

  4. Starten Sie den Windows Installer-Dienst erneut.

  5. Starten Sie Visual Studio als Administrator.

  6. 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.

21
Auri Rahimzadeh

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.

17
hendrix

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 ...

12
zax

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

11
Pavel Nazarov

Unter Windows 10: 

Zunächst benötigen Sie einen SQL-Datenbankeditor wie SqliteBrowser3

  1. Führen Sie diese Manipulation als Systembenutzer durch (verwenden Sie psexec oder anderes) 
  2. Kopie von C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd erstellen
  3. Öffnen Sie diese Kopie mit SqliteBrowser3 
  4. Sie müssen die Tabelle "package", "packageuser" und "user" bearbeiten. Dazu müssen Sie die Ghost-Benutzer-ID aus der Tabelle "Benutzer" notieren und anschließend entfernen. Entfernen Sie dann Einträge mit der Ghost-Benutzer-ID in der Spalte user aus der Tabelle "packageuser".
  5. töte tasklist /svc /fi "services eq StateRepository"
  6. ersetzen Sie das Original StateRepository-Machine.srd nach der Sicherung.
  7. starten Sie neu und Sie können Ihr Paket dann normal entfernen 

Hinweis: Sie müssen Ihren eigenen Benutzereintrag dem Paket zugewiesen lassen

8
intika

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.

5
Damir Arh

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. 

3
Francois Nadeau

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.

3
Jawid Hassim

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
2
Stefan Michev

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

2
kdazzle

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.

0
Jawid Hassim