web-dev-qa-db-ja.com

別のユーザーがインストールしたアプリをアンインストールする方法は?

Windows 8アプリをデバッグしようとして、別のユーザーアカウントに既にコピーがインストールされていると、この問題が発生し続けます。

DEP0700:アプリの登録に失敗しました。別のユーザーが既にこのアプリのパッケージバージョンをインストールしています。パッケージ化されていないバージョンでこれを置き換えることはできません。競合するパッケージは{{{PackageName}}}であり、CN = {{{Certificate Stuff}}}によって公開されました。 (0x80073cf9)

時々、単にログインするか、他の人にマシンにログインしてアプリをアンインストールするように依頼することができます。あるいは、アプリケーションの名前/ IDを変更することもできますが、1つが常に可能であるとは限らず、もう1つは危険です(変更されたアプリケーションIDをソース管理にチェックインしたくない)。

アンインストールする方法が必要です。たぶんPowerShellスクリプト?

58
Filip Skakun

上記の私のプロセスはまだ機能しますが、Windows Update(はい、奇妙なことに)が「ステージングされたパッケージ」を一掃することを担当する競合状態の問題を単に回避します。

Microsoftによると 、「その他の修正」-と私はまだこの問題をバグと考えています-は:

問題の原因:

Windows Update(WU)は、お持ちのパッケージの新しいバージョンをダウンロードし、ローカルシステムとして「ステージング」します。これにより、ストアにアクセスしてアプリを更新する際に、更新プロセスが可能な限り迅速になります。 WUは、インストールされなかったステージングされたパッケージを最終的にクリーンアップします。

「Staged」パッケージを使用すると、どのような影響がありますか?

  1. 段階的なパッケージにより、その特定のパッケージを開発モードでインストールできません

  2. ステージングされたパッケージはディスク領域を使い果たしますが、ハードリンクにより、この影響は軽減されます。パッケージの複数のバージョン間でファイルが同一である場合、appx展開は同じファイルの2つの別個のコピーを維持する代わりに、ファイルをハードリンクします。

「Staged」パッケージを見つけるにはどうすればよいですか?

  1. 管理者のPowerShellプロンプトで、次のコマンドを実行します。

    get-appxpackage -all

マシン上のすべてのパッケージが表示されます。ステージングされたパッケージの場合、PackageUserInformationには{S-1-5-18 [Unknown user]:Staged}が表示されます。

get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}

「Staged」パッケージを削除するにはどうすればよいですか?

  1. Mark Russinovichが作成したsysinternalsツールからpsexecをダウンロードします

  2. それらをすべて取り除くには、通常のadmin/elevatedコマンドプロンプト(powershellではない)で実行します:

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

24
Auri Rahimzadeh

それでもうまくいかない場合は、次の方法も試してみてください。これは通常のユーザーのマシンではなく、私の開発マシン用であるため、非開発者にどのように影響するかはわかりません:-P

  1. C:\ Program Files\WindowsAppsおよびC:\ ProgramData\Microsoft\Windows\AppRepositoryフォルダーの所有権を取得し、管理者にフルアクセスを許可します。 TrustedInstallerにも変更権限があることを確認してください。また、所有権を取得しています。知らない場合、これはそのフォルダのプロパティを介して行われます。

  2. [サービス]に移動し、Windows Installerサービスを停止します。

  3. C:\ ProgramData\Microsoft\Windows\AppRepository \を開き、PackageRepository.edbファイルを削除します。

  4. Windows Installerサービスを再度開始します。

  5. 管理者としてVisual Studioを起動します。

  6. アプリを起動してみてください。動作するはずです。

アプリを一度実行すると、VSをユーザーモードで再度実行できるようになります。

21
Auri Rahimzadeh

回避策

他に何も機能しない場合(私にとっても機能しませんでした)、アプリマニフェストでパッケージ名を変更するだけです(最後の数文字を別の文字に置き換えるだけです)。 これを行うと、競合するパッケージはなくなります。

一部のシナリオではパッケージ名を変更するのが適切ではない場合がありますが、問題のあるデバイスでのデバッグが終了したらいつでもバックアップして変更することができます。

19
hendrix

Windows 10 1709では、remove-appxpackageコマンドレットが改善され、オプションとして-allusersが追加されました。

したがって、すべてのユーザーのアプリをアンインストールするには、次のコマンドが機能します。

Get-AppxPackage -AllUsers [PackageFamilyName] | Remove-AppxPackage -AllUsers

[PackageFamilyName]は通常、パッケージのGUID)です。

警告/注意:このコマンドは、各ユーザーがアプリを個別にアンインストールしたかのように扱うため、後で再インストール(DISMを使用したパッケージの再プロビジョニング)を非常に困難にするようです。ここに入るには多すぎる...

16
zax

現在のユーザーのアプリを削除する場合は、次を試してください。

Get-AppxPackage | where name -eq "APP.NAME" | Remove-AppxPackage

助けてくれました。したがって、Get-AppxPackageなし-all

12
Pavel Nazarov

Windows 10の場合:

まず、SqliteBrowser3のようなSQLデータベースエディターが必要です。

  1. システムユーザーとしてその操作を行う(psexecまたはその他を使用)
  2. C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srdのコピーを作成します
  3. そのコピーをSqliteBrowser3で開きます
  4. 「package」、「packageuser」および「user」テーブルを編集する必要があります。そのためには、「user」テーブルからゴーストユーザーIDを書き留めてから削除する必要があります。次に、「packageuser」テーブルからuser列のゴーストユーザーIDを持つエントリを削除します。
  5. kill tasklist /svc /fi "services eq StateRepository"
  6. バックアップ後に元のStateRepository-Machine.srdを置き換えます。
  7. 再起動すると、通常どおりパッケージを削除できます

注:パッケージに割り当てられた独自のユーザーエントリを残す必要があります

8
intika

Windowsストアアプリを管理するためのPowerShellコマンドレットのセットがあります。管理者として次のコマンドを実行すると、すべてのユーザーのマシンにインストールされているアプリを一覧表示できます。

Get-AppxPackage -AllUsers

ただし、別のユーザーのアプリをアンインストールする方法が見つかりませんでした。 Remove-AppxPackageは、現在のユーザーに対してのみ機能します。これにより、アプリがインストールされているユーザーを削除すると、すべてがさらに面白くなります。少なくともWindows 8のプレリリースバージョンでは、これにより、インストールしたアプリを削除できませんでした。最終リリース以来、このような状況をうまく回避できたため、問題がまだ存在すること、つまりユーザーアカウントが削除されてもアプリがアンインストールされないことを確認できません。

5
Damir Arh

私は次のことをしなければなりませんでした:

 get-appxpackage -all > log.txt
 notepad log.txt (search for the offending PackageFullName)
 remove-appxpackage -allusers -package "PackageFullName"

私にとって重要なのは、-allusersフラグを追加することでした。これがなければ、 "...現在のユーザーにはそのパッケージがインストールされていません。Get-AppxPackageを使用して、インストールされているパッケージのリストを表示します。 "エラー。

4
Francois Nadeau

これは私にはうまくいきませんでしたが、他の誰かにうまくいくかもしれません...

管理者としてpowershellを起動し、実行します:

Get-AppxPackage -all | Out-GridView -Passthru | Remove-AppXPackage

次に、[〜#〜] select [〜#〜]正しいパッケージと[〜#〜] ok [〜#〜]を削除します。

3
Jawid Hassim

私のために働いたもの

 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

これは他のいくつかの回答、特に@Pavel Nazarovのものと似ていますが、異なるユーザーに対して機能します。また、プログラムをインストールする必要がないため、受け入れられている回答とは異なります。

管理モードのWindows Powershellで、次を実行します。

get-appxpackage -all | where name -eq "{{ App Name }}" | remove-appxpackage

2
kdazzle

他のすべてが失敗し、あなたが必死であれば、私の場合のように(ユーザーが削除されたため)これは少し危険ですが、私にとってはうまくいきました。

DO AT YOUR OWN RISK!私のユーザーがマシンで作成された最後のユーザーであることは知っていました。

この回答は、TAKEOWNに関する上記のAuri Rahimzadehの回答と、 'SQL Browser For SQLite'を使用してStateRepository-Machine.srdを変更するintikaの回答の組み合わせです(ここからダウンロード: DBite for SQLite )、唯一の違いは、1つのことだけを編集したことです:PackageUser値を変更しましたUser3(以前に削除されたユーザーのID)から4(これは私、最後に作成されたユーザー)

Userテーブルを確認して、あなたのケースで値が機能することを確認してください!

0
Jawid Hassim