Packaging
true

This page describes how to package your extension. As the Overview explains, extensions are packaged as signed ZIP files with the file extension "crx" — for example, myextension.crx.

Note: You might not need to package your extension. If you publish your extension using the gallery, then the only reason to create your own .crx file would be to distribute a non-public version — for example, to alpha testers.

When you package an extension, the extension is assigned a unique key pair. The public key is used as the identifier for the extension. The private key is kept private and used to sign each version of the extension.

Creating a package

To package an extension:

  1. Bring up the Extensions management page by going to this URL:
    chrome://extensions
  2. If Developer mode has a + by it, click the +.
  3. Click the Pack extension button. A dialog appears.
  4. In the Extension root directory field, specify the path to the extension's folder — for example, c:\myext. (Ignore the other field; you don't specify a private key file the first time you package a particular extension.)
  5. Click OK. The packager creates two files: a .crx file, which is the actual extension that can be installed, and a .pem file, which contains the private key.

Do not lose the private key! Keep the .pem file secret and in a safe place. You'll need it later if you want to do any of the following:

If the extension is successfully packaged, you'll see a dialog like this that tells you where to find the .crx and .pem files:

Updating a package

To create an updated version of your extension:

  1. Increase the version number in manifest.json.
  2. Bring up the Extensions management page by going to this URL: chrome://extensions
  3. Click the Pack extension button. A dialog appears.
  4. In the Extension root directory field, specify the path to the extension's folder — for example, c:\myext.
  5. In the Private key file field, specify the location of the already generated .pem file for this extension — for example, c:\myext.pem.
  6. Click OK.

If the updated extension is successfully packaged, you'll see a dialog like this:

Packaging at the command line

Another way to package extensions is by invoking chrome.exe at the command line. Use the --pack-extension flag to specify the location of the extension's folder. Use --pack-extension-key to specify the location of the extension's private key file. For example:

chrome.exe --pack-extension=c:\myext --pack-extension-key=c:\myext.pem

To suppress the dialog, add --no-message-box to the command.

Ruby script

You can also use a Ruby script to create packages. See the following page for details:

github: crxmake