How to uninstall an app that another user installed?

PowershellWindows 8Windows RuntimeWindows Store-AppsWindows Store

Powershell Problem Overview


I keep hitting this problem when I try to debug my Windows 8 apps and there is a copy already installed on another user account:

> DEP0700 : Registration of the app failed. Another user has already installed a packaged version of this app. An unpackaged version cannot replace this. The conflicting package is {{{PackageName}}} and it was published by CN={{{Certificate Stuff}}}. (0x80073cf9)

Sometimes I can just log in or ask someone else to log in to the machine and uninstall the app. Alternatively I can change the application name/id, but one is not always possible and the other is risky (I don't want to check in the changed application id to source control).

There must be some way to uninstall it. Maybe a PowerShell script?

Powershell Solutions


Solution 1 - Powershell

My process above still works, but it simply gets around a race condition issue, where Windows Update (yes, oddly enough) is in charge of wiping out "staged packages."

According to Microsoft, the "other fix" - and I still consider this issue to be a bug - is:

> Cause of the problem: > > Windows Update (WU) downloads newer versions of packages you have and > “stages” them as Local System, so that when you go to the store to > update the apps, the update process is as quick as possible. WU will > eventually clean up the staged packages that were never installed. > > What are some consequences of having "Staged" packages? > > 1. Staged packages prevent you from installing that particular package in development mode > > 2. Staged packages eat up some disk space, but due to hardlinking, the effect of this is mitigated. If a file is identical between multiple > versions of a package, appx deployment hardlinks the files instead of > maintaining two separate copies of the same file. > > How do I find the "Staged" packages? > > 1. In an administrator powershell prompt, the command: > > get-appxpackage -all > > will display all packages on the machine. For a staged package, the > PackageUserInformation will show {S-1-5-18 [Unknown user]: Staged} > 2. Using powershell filtering, to get the list of all staged packagefullnames, you could do: > > > > get-appxpackage -all |% {if ($.packageuserinformation.installstate -eq "Staged"){$.packagefullname}} > > How do I get rid of the "Staged" packages? > > > 1. Download psexec from sysinternals tools, written by Mark Russinovich > > 2. To get rid of all of them, run in a regular admin/elevated command prompt (not powershell): > > psexec -s powershell -c "get-appxpackage | remove-appxpackage"

Solution 2 - Powershell

There was an improvement in Windows 10 1709 to the remove-appxpackage cmdlet, adding -allusers as an option.

So, to uninstall an App for all users, this command works:

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

Where [PackageFamilyName] is generally the GUID of your package.

Caveat / Caution: The command seems to make re-installation (re-provisioning the package using DISM) later very difficult, as it seems to treat is as if each user individually uninstalled the app. Too much to get into here...

Solution 3 - Powershell

If that doesn't work, you can also try the following, which worked for me. Note that this is for my dev machine, not a regular user's machine, so I don't know how it would affect non-devs :-P

  1. Take ownership of the folders c:\Program Files\WindowsApps and C:\ProgramData\Microsoft\Windows\AppRepository - giving Administrator full access. Make sure TrustedInstaller also has Modify rights as well. You're also taking ownership. If you're unawares, this is done via the Properties on that folder.

  2. Go to Services and stop the Windows Installer service.

  3. Open C:\ProgramData\Microsoft\Windows\AppRepository\ and delete the PackageRepository.edb file.

  4. Start the Windows Installer service again.

  5. Launch Visual Studio as Administrator.

  6. Attempt to launch your app. It should work.

After you run the app once you should be able to run VS in user mode again.

Solution 4 - Powershell

Workaround:

If nothing else works for you (for me it didnt either), you can just change your Package Name in your app manifest (just replace last few characters with another characters). When you do this, you will no longer have conflicting packages.

Changing package name may not be appropriate for some scenarios, but you can always back it up and change it back when you finished debugging on your problematic device....

Solution 5 - Powershell

If you want to delete the app for the current user then try:

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

It helped me. So there is Get-AppxPackage without -all

Solution 6 - Powershell

On windows 10 :

First, you need an SQL database editor like SqliteBrowser3

  1. Do that manipulation as system user (use psexec or else)
  2. Make a copy of C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd
  3. Open that copy with SqliteBrowser3
  4. You will need to edit "package", "packageuser" and "user" table. To do so, you will need to note down ghost user id from "user" table and then remove them. Then, remove entries having ghost user id in user column from "packageuser" table.
  5. kill tasklist /svc /fi "services eq StateRepository"
  6. replace original StateRepository-Machine.srd after backup.
  7. reboot and then you could remove your package normally

Note : you need to leave your own user entry assigned to the package

Solution 7 - Powershell

I had to do the following:

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

The key for me was to add the -allusers flag, since without it I received an "...because the current user does not have that package installed. Use Get-AppxPackage to see the list of packages installed." error.

Solution 8 - Powershell

There is a set of PowerShell cmdlets for managing Windows Store apps. You can list the installed apps on the machine for all the users if you run the following command as an administrator:

Get-AppxPackage -AllUsers

I haven't found a way to uninstall an app for a different user, though. Remove-AppxPackage works only for the current user. This makes everything even more interesting if you delete a user having apps installed. At least in prerelease versions of Windows 8 this made it impossible to delete an app he had installed. I managed to successfully avoid such a situation since final release therefore I can't confirm the problem is still present, i.e. apps aren't uninstalled when a user account is deleted.

Solution 9 - Powershell

This is similar to some other answers, especially @Pavel Nazarov's, but works for different users. And it's different from the accepted answer because you don't need to install any programs.

In Windows Powershell in admin mode, run:

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

Solution 10 - Powershell

Though this didn't work for me, it may just work for someone else...

Start powershell as Administrator and run:

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

Then SELECT the right package and OK, hopefully it will remove.

Solution 11 - Powershell

What worked for me

 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

Solution 12 - Powershell

I just used get-appxpackage -all | where name -eq "PackageName" | remove-appxpackage -AllUsers on Win 10 v1903 after trying many other variations and it worked. I tested for the package's presence afterwards and it was gone.

Solution 13 - Powershell

If all else fails and you are desperate, like was my case (because the user was deleted) This one is a little dangerous but it worked for me.

DO AT YOUR OWN RISK! I knew that my user was the last user created on the machine.

This answer is a combination of Auri Rahimzadeh's answer above on TAKEOWN and intika's answer where you modify the StateRepository-Machine.srd using 'DB Browser For SQLite' (downloaded here: DB Browser for SQLite 3), the only difference is I only edited one thing: In PackageUser I changed the value User 3 (Which was the ID of the previous deleted User) to 4 (Which is me, the last created User)

BE SURE TO CHECK THE User Table AND SEE WHAT VALUES WORK IN YOUR CASE!

Solution 14 - Powershell

In my case I needed to use: Get-AppxProvisionedPackage -online as opposed to Get-AppxPackage and then correspondingly use Remove-AppxProvisionedPackage -PackageName YourPackageNameHere -Online -AllUsers

Solution 15 - Powershell

This worked for me.

  1. Open Powershell as admin.
  2. Execute this command (with your package name and the user where it's installed)

> Get-AppxPackage -Name "MyPackageBlah" -User "blahdy"

  1. Copy the value from PackageFullName in the output info.

> Name : MyPackageBlah
> Publisher : CN=BLAH
> Architecture : X64
> ResourceId :
> Version : 1.0.34.0
> PackageFullName : MyPackageBlah_1.0.34.0_x64__ww4kfnnrsedz6
> IsFramework : False
> PackageFamilyName : MyPackageBlah_ww4kfnnrsedz6
> PublisherId : ww4kfnnrsedz6
> IsResourcePackage : False
> IsBundle : False
> IsDevelopmentMode : False
> NonRemovable : False
> Dependencies : > {Microsoft.UI.Xaml.2.6_2.62107.6002.0_x64__8wekyb3d8bbwe,
> Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe,
> Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe,
> Microsoft.VCLibs.140.00_14.0.30035.0_x64__8wekyb3d8bbwe}
> IsPartiallyStaged : False
> SignatureKind : Developer
> Status : Ok

  1. Execute this command > > Remove-AppxPackage -Package > "MyPackageBlah_1.0.34.0_x64__ww4kfnnrsedz6" -AllUsers

You will be good now to run your app in Visual Studio.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFilip SkakunView Question on Stackoverflow
Solution 1 - PowershellAuri RahimzadehView Answer on Stackoverflow
Solution 2 - PowershellzaxView Answer on Stackoverflow
Solution 3 - PowershellAuri RahimzadehView Answer on Stackoverflow
Solution 4 - PowershellhendrixView Answer on Stackoverflow
Solution 5 - PowershellPavel NazarovView Answer on Stackoverflow
Solution 6 - PowershellintikaView Answer on Stackoverflow
Solution 7 - PowershellFrancois NadeauView Answer on Stackoverflow
Solution 8 - PowershellDamir ArhView Answer on Stackoverflow
Solution 9 - PowershellkdazzleView Answer on Stackoverflow
Solution 10 - PowershellJawid HassimView Answer on Stackoverflow
Solution 11 - PowershellStefan MichevView Answer on Stackoverflow
Solution 12 - PowershellMarc GeorgeView Answer on Stackoverflow
Solution 13 - PowershellJawid HassimView Answer on Stackoverflow
Solution 14 - PowershellCasualCoderView Answer on Stackoverflow
Solution 15 - PowershellGregory BolognaView Answer on Stackoverflow