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