|
| 1 | +--- |
| 2 | +title: Troubleshoot Self-Hosted Extension Deployment Group Policy Issues |
| 3 | +description: Learn how to resolve deployment issues for self-hosted extensions in Microsoft Edge when using group policies like ExtensionInstallForcelist or ExtensionSettings. |
| 4 | +ms.custom: "sap:Web Platform and Development\Connectivity and Navigation: TCP, HTTP, TLS, DNS, Proxies, Downloads" |
| 5 | +ms.reviewer: dili, Johnny.Xu, v-shaywood |
| 6 | +ms.date: 01/12/2026 |
| 7 | +--- |
| 8 | +# Failure to deploy self-hosted extension via group policy |
| 9 | + |
| 10 | +When you attempt to deploy a self-hosted extension via group policy you might experience an issue where the extension doesn't appear for the target user. This article provides guidance for identifying and resolving the cause of this problem, enabling you to successfully deploy your extension. |
| 11 | + |
| 12 | +## Symptoms |
| 13 | + |
| 14 | +When you deploy a browser extension to Microsoft Edge by using the group policy [ExtensionInstallForcelist](/DeployEdge/microsoft-edge-browser-policies/extensioninstallforcelist) or [ExtensionSettings](/DeployEdge/microsoft-edge-browser-policies/extensionsettings), the deployment fails and the extension doesn't appear on the `edge://extensions` page for the target users. |
| 15 | + |
| 16 | +However, if you manually drag the same extension package (`.crx` file) onto the `edge://extensions` page with [Developer mode](/microsoft-edge/extensions/getting-started/extension-sideloading#locally-installing-and-running-an-extension) enabled, the extension installs successfully. |
| 17 | + |
| 18 | +## Cause: Incorrect group policy configuration |
| 19 | + |
| 20 | +The group policy **ExtensionInstallForcelist** or **ExtensionSettings** is configured incorrectly. |
| 21 | + |
| 22 | +### Solution: Verify and correct the group policy configuration |
| 23 | + |
| 24 | +Verify and correct the extension group policy configuration by using the following documentation: |
| 25 | + |
| 26 | +- [ExtensionInstallForcelist](/deployedge/microsoft-edge-browser-policies/extensioninstallforcelist) |
| 27 | +- [ExtensionSettings](/deployedge/microsoft-edge-browser-policies/extensionsettings) |
| 28 | + |
| 29 | +## Cause: Incorrect Content-Type header for the .crx file |
| 30 | + |
| 31 | +When the extension is hosted on an internal HTTP/HTTPS server and the server doesn't return the correct **Content-Type** header for the `.crx` file, the extension deployment will fail. |
| 32 | + |
| 33 | +If the `.crx` file isn't served with the header `Content-Type: application/x-chrome-extension`, Microsoft Edge or any other Chromium-based browser won't treat the file as an installable extension package when it's downloaded as part of the group policy installation flow. |
| 34 | + |
| 35 | +As a result, the policy is processed, but the browser silently fails to install the extension. |
| 36 | + |
| 37 | +### Solution: Configure the web server to return the correct Content-Type |
| 38 | + |
| 39 | +Configure the web server to return the correct `Content-Type` for `.crx` files. The HTTP response for the extension package must include the following header: |
| 40 | + |
| 41 | +```http |
| 42 | +Content-Type: application/x-chrome-extension |
| 43 | +``` |
| 44 | + |
| 45 | +After this header is correctly configured, Microsoft Edge will recognize the `.crx` file as an installable extension when it's downloaded via the policy. |
| 46 | + |
| 47 | +#### Example: Configure MIME mapping on IIS |
| 48 | + |
| 49 | +1. In **IIS Manager**, select the target site that hosts the extension. |
| 50 | +1. Double-click **MIME Types**. |
| 51 | +1. In the **Actions** pane, select **Add…**. |
| 52 | +1. Set **File name extension** to `.crx`. |
| 53 | +1. Set **MIME type** to `application/x-chrome-extension`. |
| 54 | +1. Select **OK**, then recycle the website or application pool if necessary. |
| 55 | + |
| 56 | +## Cause: Invalid extension manifest or update manifest XML |
| 57 | + |
| 58 | +The extension metadata in `manifest.json` or in the _update manifest XML_ is invalid. Examples include: |
| 59 | + |
| 60 | +- The `version` field in `manifest.json` uses an invalid format (for example, `1.0-beta` or other non-numeric characters). |
| 61 | +- The _update manifest XML_ used for self-hosted updates contains invalid or inconsistent values (for example, mismatched version numbers or malformed XML). |
| 62 | + |
| 63 | +In these cases, manual drag-and-drop installation might succeed in some scenarios, but policy-based installation or automatic updates might fail. |
| 64 | + |
| 65 | +### Solution: Validate and correct the extension manifests |
| 66 | + |
| 67 | +Validate and correct the extension manifest or update manifest XML by following the Chrome documentation, which also applies to Microsoft Edge and other Chromium-based browsers: |
| 68 | + |
| 69 | +- [Manifest - Version](https://developer.chrome.com/docs/extensions/reference/manifest/version) |
| 70 | +- [Self-host for Linux - Update manifest](https://developer.chrome.com/docs/extensions/how-to/distribute/host-on-linux#update_manifest) |
| 71 | + |
| 72 | +## Related content |
| 73 | + |
| 74 | +- [Self-host for Linux - Host](https://developer.chrome.com/docs/extensions/how-to/distribute/host-on-linux#hosting) |
| 75 | + |
| 76 | +[!INCLUDE [Third-party disclaimer](~/includes/third-party-disclaimer.md)] |
0 commit comments