Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix 0x80073CFB

0x80073CFB: The Package Is Already Installed or Cannot Be Downgraded

10 min read Updated October 5, 2026 Installers, Runtimes & App Deployment

Fix it now

The deployment engine found something already registered under the same package identity and refused to overwrite it. Microsoft documents two ways out: raise the version and rebuild, or remove the existing registration for every user on the machine first.

Run these in an elevated PowerShell session, in order, replacing the placeholders

Get-AppxPackage -Name <PackageName> -AllUsers | Select-Object Name,Version,PackageFullName
Remove-AppxPackage -Package <PackageFullName> -AllUsers
Get-AppxProvisionedPackage -Online
Remove-AppxProvisionedPackage -Online -PackageName <PackageName_from_that_list>
Add-AppxPackage -Path .\package.msix -ForceApplicationShutdown
  1. Read the version column before you remove anything. If it already matches what you are deploying, 0x80073CFB is telling you the install is done and there is nothing to fix.
  2. Close the application first, including any tray or background component. 0x80073D02 is the same refusal reported because resources the package modifies are still in use.
  3. Remove the provisioned copy as well, or the package returns for the next new profile and the identity stays occupied.
  4. If you must go back to an older build deliberately, use Add-AppxPackage -Path .\package.msix -ForceUpdateFromAnyVersion instead of the plain install.

-AllUsers works off the parent package type and needs administrator permissions. For a bundle, find it with Get-AppxPackage -PackageTypeFilter Bundle first, or the removal will miss it.

If the install now completes you are done. If it comes back with the same code, the next section covers the case Microsoft documents and most people miss.

Why it happens

A packaged application is identified by the name and publisher declared in its manifest plus its architecture, not by the file you double-clicked. Before anything is staged, the engine reads that identity, looks for an existing registration under it, and compares versions. Nothing matching means a normal install. Something matching at a lower version means an update. Something matching at the same or a higher version stops the operation.

The part that catches in-house packagers is narrower than “the same version is installed”. Microsoft’s own wording for 0x80073CFB is that you may get this error if you are installing a package that is not bitwise identical to the one already installed – and it adds that the digital signature is part of the package, so a rebuild or a re-sign is enough to make the two differ. Two builds that both say 1.0.0.0 in the manifest are not the same package, and the engine will not quietly replace one with the other.

The other half of the picture is that staging is machine-wide while registration is per user, and a provisioned package is a third thing again. A package can be absent from your own Start menu, still registered for a colleague who shares the machine, and still provisioned so it installs for every profile created from now on. That is why a removal that looked complete from your session leaves the identity occupied.

The same identity is registered, and the incoming build is not bitwise identical

You have this one if 0x80073CFB on a package you built yourself, where the version number is unchanged since the last deployment.

  1. Increment the version in the manifest, then rebuild and re-sign. This is the first of Microsoft’s two documented remedies and the one to prefer in a pipeline.
  2. If the version genuinely must stay, remove the old package for every user on the system before installing the new one.
  3. Do not assume a re-sign is harmless. Signing changes the package bytes, so a re-signed build of the same version trips this on purpose.

A higher version is already installed

You have this one if 0x80073D06 rather than 0x80073CFB, and the version listed by Get-AppxPackage is above the one in your file.

  1. Confirm which build you actually want. A downgrade loses fixes and can leave application data the older code cannot read.
  2. If the downgrade is intended, deploy with Add-AppxPackage -Path .\package.msix -ForceUpdateFromAnyVersion.
  3. Check for a provisioned copy at the higher version, which will re-apply itself to new profiles and make the downgrade look like it silently reverted.

Something is still running, or its data is still open

You have this one if 0x80073D02 or 0x80073D05, often after the application appeared to close.

  1. 0x80073D02 is ERROR_PACKAGES_IN_USE: resources the package modifies are in use. Close every process the package owns, then retry.
  2. Deploy with -ForceApplicationShutdown to have the engine close the package’s processes and its dependencies for you.
  3. 0x80073D05 is the previously existing application data failing to delete. Microsoft names two triggers: the simulator running, and files open in the app data – a log file open in a text editor is enough.

The package is registered for another user, or provisioned

You have this one if Removal succeeds, Get-AppxPackage -Name <name> returns nothing for you, and the install is still refused.

  1. Re-run the query with -AllUsers from an elevated session. Without it you only see your own registrations.
  2. List provisioned packages with Get-AppxProvisionedPackage -Online and remove the matching one with Remove-AppxProvisionedPackage -Online -PackageName <name>.
  3. To remove for one specific profile, Remove-AppxPackage -User <SID>. That parameter accepts SIDs only – read one with whoami /user.

Full reference

The cmdlets this work is done with

Command What it does
Get-AppxPackage -Name <name> -AllUsers Lists every registration of that identity on the machine, not just yours. Needs elevation
Get-AppxPackage -PackageTypeFilter Bundle Finds the bundle parent, which is what -AllUsers removal works off
Remove-AppxPackage -Package <fullname> -AllUsers Removes the registration for all accounts. Administrator permissions required
Remove-AppxPackage -Package <fullname> -User <SID> Removes it for one profile. SIDs only; whoami /user prints the current one
Get-AppxProvisionedPackage -Online Lists packages provisioned into the image for new profiles
Remove-AppxProvisionedPackage -Online -PackageName <name> Removes the provisioned copy so it stops returning
Add-AppxPackage -Path .\package.msix -ForceApplicationShutdown Installs, closing processes associated with the package and its dependencies
Add-AppxPackage -Path .\package.msix -ForceUpdateFromAnyVersion Stages or registers a specific version regardless of a higher one already present
Get-AppxLog Returns the log for the most recent deployment operation. Get-AppxLog -All returns every log on the machine

-PreserveApplicationData is not a general way to keep user data across a reinstall. Microsoft documents it as applicable only to apps under development that were registered from a loose file layout, so on a normal signed package it is not the parameter you want.

Reading the failure properly

When Add-AppxPackage or Remove-AppxPackage fail they return an ActivityID, and that ID is what Get-AppxLog takes. Run Get-AppxLog immediately after the failure and you get the record for that attempt rather than a guess. The same material is in Event Viewer under Applications and Services Logs, Microsoft, Windows, AppXDeployment-Server, in the Operational channel; the packaging-side channel Microsoft points at separately is AppxPackaging, under Microsoft-Windows-AppxPackaging/Operational.

Read the code from that log rather than from whatever wrapper ran the install. A deployment tool will frequently surface a single generic failure for all five of the codes in this article, and they need four different responses.

Getting a clean slate on a machine that will not let go

  1. Query with -AllUsers and note every PackageFullName returned, including resource and framework entries that share the family name.
  2. Remove the registrations, then remove the provisioned entry, in that order.
  3. Sign out and back in. Registration state is per user and some of it is only released when the profile is unloaded.
  4. Re-query with -AllUsers and confirm nothing comes back before installing again.
  5. If a stale entry survives all of that, deploy the new build with -ForceUpdateFromAnyVersion, which stages regardless of what version is recorded.

In a deployment pipeline

  • Increment the version on every build. It is the cheaper of Microsoft’s two remedies and it removes this class of failure entirely.
  • Treat a re-sign as a new package. If your signing step runs after versioning, two artefacts with the same version number will still collide.
  • Do not rely on uninstalling through Settings. That removes the current user’s registration and leaves both other users’ registrations and the provisioned copy in place.
  • If you deploy to shared or multi-session machines, always test the removal path with a second signed-in profile. That is where the identity conflict actually lives.

Every code this article covers

Code What it points at Source
0x80073CFB ERROR_PACKAGE_ALREADY_EXISTS: the package is already installed and reinstallation is blocked. Also raised when the incoming package is not bitwise identical to the installed one – and the signature counts, so a rebuild or re-sign at the same version triggers it Microsoft Learn
0x80073D06 ERROR_INSTALL_PACKAGE_DOWNGRADE: a higher version of this package is already installed Microsoft Learn
0x80073D02 ERROR_PACKAGES_IN_USE: the package could not be installed because resources it modifies are currently in use Microsoft Learn
0x80073D05 ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED: the package’s previously existing application data could not be deleted, for example with the simulator running or files open in the app data Microsoft Learn

Confirm the fix worked

  1. Get-AppxPackage -Name <name> -AllUsers returns the version you intended to deploy, and only that version.
  2. Get-AppxProvisionedPackage -Online no longer lists the old build.
  3. The application launches for a second profile on the same machine, not just for you.
  4. Get-AppxLog for the install shows the deployment completing rather than a retry.

Questions people ask about this

I have not changed the version, and the package really is different. Why is that an error?

Because Microsoft treats identity plus version as the contract. The published note on 0x80073CFB says the error appears when the incoming package is not bitwise identical to the installed one, and that the digital signature is part of the package. Two different builds claiming the same version are exactly the situation the check exists to catch.

Is -ForceUpdateFromAnyVersion safe to use routinely?

It is documented and it works, but it exists for the deliberate downgrade. Using it as a standing workaround means your deployments no longer respect version ordering, so an older build can quietly replace a newer one on a machine that got ahead of your pipeline.

Why does the app come back after I remove it?

It was provisioned. A provisioned package installs itself for every new user profile, so removing your own registration only clears half of it. Get-AppxProvisionedPackage -Online shows what is provisioned and Remove-AppxProvisionedPackage -Online clears it.

Can I keep user data across the reinstall?

Not with -PreserveApplicationData on a normal package. Microsoft documents that parameter as applying only to apps under development registered from a loose file layout. For a signed production package, back up what you need out of the app data location before removing.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

License Error 0x803F8001: This App Is Not Licensed for Your Account or This Device Free Fix MSI 3010 and 0x80070BC9: Setup Needs a Reboot Before It Can Complete Free Fix MSI 1619 and 1620: This Installation Package Could Not Be Opened Free Fix 0x800C0006: .NET Web Installer and ClickOnce Downloads Fail Part-Way
โ† Back to Knowledge Base