Skip to content

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

Your vault is empty.

Free Fix 0x800B0100

0x800B0100: MSIX Package Is Unsigned or Its Certificate Is Not Trusted

11 min read Updated October 4, 2026 Installers, Runtimes & App Deployment

Fix it now

MSIX will not deploy a package whose signature it cannot verify and chain to something the machine trusts. Which of these codes you have decides the fix: two are trust-store problems, one means the package itself has been altered since it was signed and must be signed again.

Run these in an elevated PowerShell session on the target device

CertUtil.exe -store Root
CertUtil.exe -store TrustedPeople
Import-Certificate -FilePath .\signing.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeople
Add-AppxPackage -Path .\package.msix
  1. Get the chain first. Right-click the package, Properties, Digital Signatures, select the signature, Details, View Certificate, Certification Path. The top entry is the root and the bottom one is the signing certificate.
  2. Take the serial number of each from the Details tab of its certificate dialog, then pass it to CertUtil to see whether this machine trusts that specific certificate: CertUtil.exe -store Root <rootSerial> and CertUtil.exe -store TrustedPeople <signingSerial>.
  3. Export the signing certificate to a .cer file and import it into Local Computer, Trusted People. That is the documented destination for a line-of-business MSIX signing certificate.
  4. For 0x800B0004 do not import anything. That code means the package contents no longer match its signature, and the documented action is to sign the package again.

Importing a certificate changes what the machine accepts as legitimate software. Import only certificates your organisation controls, into the narrowest store that works, and never a root that arrived alongside a downloaded package.

If the package installs, you are done. If it still fails, the next section separates the four different trust decisions these codes represent.

Why it happens

Every MSIX package carries a digital signature over its contents. At deployment the engine verifies that signature, builds a chain from the signing certificate up to a root, and checks whether this device trusts that root – in the local computer context, not just the user’s. Each stage has its own failure code, and they need different responses.

0x800B0100 is TRUST_E_NOSIGNATURE, no signature present in the subject. Microsoft’s note is blunt: the package must be signed to be deployed. 0x800B0109 is CERT_E_UNTRUSTEDROOT – a chain was processed but it terminated in a root the trust provider does not trust. 0x800B0112 is CERT_E_UNTRUSTEDCA, which is different again: the chain processed correctly and one of the CA certificates in it is not trusted by the policy provider, which is what a missing intermediate looks like.

0x800B0004 does not belong with those at all. It is TRUST_E_SUBJECT_NOT_TRUSTED, and Microsoft’s app-package guidance publishes it as “the app package has been tampered with”, with the action “the package contents no longer match its digital signature. You need to sign the package again.” Importing certificates for that one cannot work, because the trust store was never the problem.

The package is not signed

You have this one if 0x800B0100, and the file’s Properties dialog has no Digital Signatures tab at all.

  1. Go back to whoever built it. An unsigned MSIX cannot be deployed on a normally configured device.
  2. For development only, Add-AppxPackage -AllowUnsigned exists. It is not a deployment method for production packages.
  3. If the build pipeline is meant to sign and did not, check the signing step ran before packaging finished rather than after.

The chain ends at a root this machine does not trust

You have this one if 0x800B0109. The signature is present and the chain is complete, but the top of it is your own internal authority or a self-signed certificate.

  1. Confirm what the machine trusts before assuming: CertUtil.exe -store Root <rootCertSerialNumber>.
  2. Import the signing certificate into Local Computer, Trusted People – the documented store for a sideloaded line-of-business package.
  3. For more than a handful of machines, deploy the certificate through Group Policy or your device management platform rather than by hand.

An intermediate authority in the chain is not trusted

You have this one if 0x800B0112, or 0x800B010A where no chain could be built to a trusted root at all.

  1. Install the intermediate certificates as well as the root. A chain missing its middle fails even when both ends are present and trusted.
  2. Check the package’s Certification Path tab: every certificate between the signing certificate and the root has to be resolvable on the target device.
  3. 0x800B010A is CERT_E_CHAINING, no chain could be built to a trusted root certification authority. Same family, same remedy.

The package was modified after it was signed

You have this one if 0x800B0004, and importing certificates changes nothing.

  1. Stop working on the trust stores. Microsoft’s action for this code is to sign the package again.
  2. Find out what touched the file – a rebuild that edited contents after signing, a transfer that corrupted it, a repackaging step in a deployment tool.
  3. Re-download or rebuild from source, then re-sign, then deploy. Do not attempt to install the altered file.

The manifest publisher and the certificate subject do not match

You have this one if 0x8007000B or 0x80073CF0 rather than a 0x800B code, which is the distinction worth knowing.

  1. 0x8007000B is ERROR_BAD_FORMAT: the package is not correctly formatted and needs rebuilding or re-signing, and Microsoft names the certificate-subject-to-manifest-publisher mismatch as a cause.
  2. 0x80073CF0 lists the same mismatch alongside an unsigned package and a missing file:// prefix.
  3. Fix the manifest’s Publisher attribute so it matches the certificate subject exactly, then rebuild and re-sign. No certificate import will help.

Full reference

Which store, and why it matters

Store What belongs there
Local Computer, Trusted People The signing certificate for a sideloaded line-of-business MSIX. This is the documented destination
Local Computer, Trusted Root Certification Authorities The root of an internal certificate authority, where the package chains through one
Local Computer, Intermediate Certification Authorities Every intermediate between the signing certificate and that root
Current User stores Not sufficient. Deployment runs in the local computer context, so a certificate trusted only by your user account does not satisfy it

Microsoft is explicit that a package must be trusted in the local computer context as well as the user’s, and that the Digital Signatures tab can therefore show a valid signature while deployment still fails. That is the single most confusing symptom in this article, and CertUtil.exe -store is what settles it.

Working the chain by hand

  1. Open the package’s Properties, then the Digital Signatures tab. If the tab is missing, the package is unsigned and nothing below applies.
  2. Select the signature, click Details, then View Certificate, then the Certification Path tab.
  3. For each certificate in the path, open it and read the serial number from the Details tab.
  4. Run CertUtil.exe -store Root <rootCertSerialNumber> and CertUtil.exe -store TrustedPeople <signingCertSerialNumber> on the target device.
  5. Omit the serial number to list everything the machine trusts in that store, which is useful when you are not sure what you are looking for.
  6. Import whatever is missing, into the store that matches its position in the chain, then retry the deployment.

certlm.msc opens the local machine certificate stores directly, which is easier than driving mmc by hand when you want to see Trusted People as the deployment engine sees it.

Signature codes and their neighbours

Code Meaning What actually fixes it
0x800B0100 TRUST_E_NOSIGNATURE – no signature present Sign the package
0x800B0109 CERT_E_UNTRUSTEDROOT – chain ends in an untrusted root Trust the root, or place the signing certificate in Trusted People
0x800B0112 CERT_E_UNTRUSTEDCA – a CA in the chain is not trusted by the policy provider Install the missing intermediate
0x800B010A CERT_E_CHAINING – no chain could be built to a trusted root Install the intermediates so the chain can complete
0x800B0004 TRUST_E_SUBJECT_NOT_TRUSTED – the package has been tampered with Sign the package again. Certificate stores are irrelevant
0x80073D04 ERROR_INVALID_STAGED_SIGNATURE – the signature is not valid For developer-mode registration, AppxSignature.p7x and AppxBlockMap.xml must be valid or absent
0x8007000B ERROR_BAD_FORMAT – not correctly formatted, rebuild or re-sign Match the manifest Publisher to the certificate subject

Developer-mode registration and stale signature files

0x80073D04 has a specific and easily missed cause. When you register from a loose file layout, Microsoft requires that AppxSignature.p7x and AppxBlockMap.xml are either valid or not present at all. A build directory that still holds those files from an earlier packaged version of the project will fail here every time, and the fix is to delete them rather than to re-sign anything.

Rolling the certificate out to a fleet

  • Deploy the certificate with the same tool you deploy the package with, so the two never arrive out of order.
  • Put it in the machine store, not the user store. Deployment does not run in the user’s context.
  • Keep the intermediates with it. A chain that resolves on your build machine because the CA published there will not necessarily resolve on a laptop offline.
  • Re-check after a certificate renewal. A renewed signing certificate is a different certificate, and packages signed with it need the new one trusted.

Every code this article covers

Code What it points at Source
0x800B0100 TRUST_E_NOSIGNATURE: no signature is present in the subject. Raised when the package is unsigned or the signature is not valid; the package must be signed to be deployed Microsoft Learn
0x800B0109 CERT_E_UNTRUSTEDROOT: a certificate chain processed but terminated in a root certificate the trust provider does not trust Microsoft Learn
0x800B0004 TRUST_E_SUBJECT_NOT_TRUSTED: the app package has been tampered with – the contents no longer match its digital signature, and the package must be signed again Microsoft Learn
0x80073D04 ERROR_INVALID_STAGED_SIGNATURE: the signature is not valid. For developer-mode registration, AppxSignature.p7x and AppxBlockMap.xml must be valid or absent Microsoft Learn
0x800B0112 CERT_E_UNTRUSTEDCA: a certification chain processed correctly, but one of the CA certificates is not trusted by the policy provider Microsoft Learn

Confirm the fix worked

  1. CertUtil.exe -store TrustedPeople <signingCertSerialNumber> returns the certificate on the target device, not just on yours.
  2. The package’s Properties, Digital Signatures tab reports the signature as valid on that device.
  3. Add-AppxPackage -Path .\package.msix completes without a 0x800B code.
  4. A second device that received the certificate through the same mechanism installs it too.

Questions people ask about this

Can I just put the certificate in Trusted Root and be done?

It will often work and it is more trust than you need. Trusted People is the documented store for a line-of-business MSIX signing certificate, and it grants far less. Use Trusted Root only for the root of an internal authority you actually run.

The signature looks valid in Explorer but deployment still fails. Why?

Because the Digital Signatures tab reflects the user context and deployment checks the local computer context. Microsoft calls this out directly. Confirm with CertUtil against the machine stores rather than trusting the dialog.

I got 0x800B0004 and importing the certificate did nothing.

It would not. That code means the package contents no longer match the signature – the file has been changed since it was signed. The documented action is to sign the package again, so find what modified it and rebuild.

Does an expired signing certificate break already-deployed packages?

Deployment of a new package signed with an expired certificate will fail validation. Whether an existing installation keeps working depends on how the package was signed and timestamped, and Microsoft does not publish a single rule for it, so treat certificate renewal as something to plan for rather than something to discover.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

Free Fix MSI 1633: This Installation Package Is Not Supported on This Platform Free Fix Error 2502 and 2503: Called RunScript When Not Marked in Progress on Install Free Fix 0x80073D0A: Firewall Service Not Running, Low Disk Space or Network Failure Free Fix MSI 1335: The Cabinet File Required for This Installation Is Corrupt
โ† Back to Knowledge Base