Using ManifoldJS to create extension AppX packages
Note
This documentation is for extensions for the legacy version of Microsoft Edge. For information on the new Microsoft Edge, see Microsoft Edge (Chromium) Extensions.
Important
The new Microsoft Edge program is now open to accept chromium-based extensions for the new Microsoft Edge (v77 or later). If you want to submit a new extension, visit Publish to Microsoft Edge (Chromium) Add-ons Store to learn about the submission process.
With this announcement, Microsoft is no longer accepting new extensions for the legacy version of Microsoft Edge. If you own an Extension for the legacy version, you should begin the process of porting your Extension to the new Microsoft Edge. The new Microsoft Edge is based on Chromium, so Extensions designed for the legacy version of Microsoft Edge do not work with the new version.
ManifoldJS is an open source Node.js tool that allows you to quickly and painlessly create a package that you can then use for submission to the Microsoft Store.
If you use native messaging in your extension, you should skip the following article and go to Native messaging in Microsoft Edge for packaging instruction.
Before getting started, you will still need to read up on the following articles.
Note
Submitting a Microsoft Edge extension to the Microsoft Store is currently a restricted capability. Once you have created, packaged and tested your extension, please submit a request on our extension submission form.
Installing Node.js and ManifoldJS
The first things you will need to do is install Node.js LTS.
Once you have Node, from a command line (preferably PowerShell), run the following command to install ManifoldJS.
npm install -g manifoldjs
To verify that you have correctly installed ManifoldJS, run manifoldjs
from the command line. If ManifoldJS was not recognized, add %APPDATA%\npm
to your PATH variables.
Packaging with ManifoldJS
To start the packaging process, you will need to open a command line and change directories to a folder that will be the destination for your packaged extension.
For example:
cd C:\manifoldJSTest
Note
The manifoldjs
command outputs in the current directory and overwrites content.
Now that you are in your destination folder, run the following command.
manifoldjs -l debug -p edgeextension -f edgeextension -m path\to\manifest.json
The mainifoldjs
command can be broken down into the following parts.
-l debug
Changes the log level to debug
to get a full print out.
-p edgeextension
Sets the only platform to run the conversion on to edgeextension
.
-f edgeextension
Tells the program that the format of the manifest is an edgeextension
format and not to care if it fails validation.
-m \path\to\manifest.json
The path to the extension manifest that you want to convert.
After ManifoldJS has finished running, you will have a folder with the following contents.
┌ My Extension
└┬ edgeextension
├- generationInfo.json
└┬ manifest
├- appxmanifest.xml
├┬ Assets
|├- Square150x150Logo.png
|├- Square44x44Logo.png
|└- StoreLogo.png
└┬ Extension
├- manifest.json
└- popup.html
The generationInfo.json file is a log produced by running ManifoldJS and will not be included in your extension package. Only the contents of the manifest
folder will be packaged. Within the manifest folder, the Assets folder contains the images that will be used in the Windows and Microsoft Store UI, while the Extension folder has the contents of your extension within it.
Now that you have the correct files, you will need to edit the generated AppXManifest file within the manifest
folder. If the extension’s manifest.json file has an internationalized string for the "name" field, once ManifoldJS is run, the most top layer folder’s name will have no underscores and include "MSG".
For example, a manifest.json file with the following "name"
field.
"name" : "__MSG_appName__"
will have a manifest folder that lives in \<CURRENT DIRECTORY>\MSGappName\edgeextension\manifest
.
In the AppXManifest file, you will need to:
- Replace the required Identity fields and PublisherDisplayName field as outlined here. Note that if you are only packaging for testing purposes or for enterprise distribution, you can use placeholder values instead of registering for a Windows Dev Center account.
- Replace the placeholder icons in the Assets folder with icons for your extension with the same sizes (150x150, 50x50, 44x44) and names. See the Design guide for information about where these icons are used.
- If your extension is localized, follow the entire Localizing Microsoft Edge extensions guide. If it is not localized, only read the Localizing name and description in the Microsoft Store section.
Once your appxmanifest.xml
file is sorted out, run the following command to create your package.
manifoldjs -l debug -p edgeextension package <EXTENSION NAME>\edgeextension\manifest\
Your package will now be in the package folder located within the edgeextension folder. For more information about how to sideload your new package, see testing section of Creating and testing extension packages.
Once your package has been tested, feel free to submit a request on our extension submission form in order to be considered for publication to the Microsoft Store.