<h1>Packaging</h1>


<p>
This page describes how to package your extension.
As the <a href="overview.html">Overview</a> explains,
extensions are packaged as signed ZIP files
with the file extension "crx"&mdash;for example,
<code>myextension.crx</code>.
</p>

<p>
<b>Note:</b>
You do not need to package your own extension.
If you publish your extension using the
<a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>,
then the only reason to create your own <code>.crx</code> file
would be to distribute a non-public version&mdash;for example,
to alpha testers.
You can find information on publishing extensions and apps in the
Chrome Web Store getting started tutorial, starting at
<a href="http://code.google.com/chrome/webstore/docs/get_started_simple.html#step5">Step 5: Zip up your app</a>.
</p>

<p>
When you package an extension,
the extension is assigned a unique key pair.
The extension's ID is based on a hash of the public key.
The private key is used to sign each version of the extension
and must be secured from public access.
Be careful not to include your private key within
your extensions!
</p>


<h2 id="creating">Creating a package</h2>

<p>To package an extension:</p>
<ol>
  <li>
    Bring up the Extensions management page
    by going to this URL:
    <blockquote>
    <b>chrome://extensions</b>
    </blockquote>
  </li>

  <li>
    Ensure that the "Developer mode" checkbox in the top right-hand corner
    is checked.
  </li>

  <li>
    Click the <b>Pack extension</b> button.
    A dialog appears.
  </li>

  <li>
    In the <b>Extension root directory</b> field,
    specify the path to the extension's folder&mdash;for example,
    <code>C:\myext</code>.
    (Ignore the other field;
    you don't specify a private key file
    the first time you package a particular extension.)
  </li>

  <li>
    Click <b>Package</b>.
    The packager creates two files:
    a <code>.crx</code> file,
    which is the actual extension that can be installed,
    and a <code>.pem</code> file,
    which contains the private key.
  </li>
</ol>


<p>
<b>Do not lose the private key!</b>
Keep the <code>.pem</code> file secret and in a safe place.
You'll need it later if you want to do any of the following:
</p>
<ul>
<li><a href="#update">Update</a> the extension</li>
<li><a href="#upload">Upload</a> the extension to the Chrome Web Store</li>
</ul>

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

<img src="{{static}}/images/package-success.png"
  width="540" height="251" />


<h2 id="update">Updating a package</h2>

<p>To create an updated version of your extension:</p>
<ol>
  <li>
    Increase the version number in <code>manifest.json</code>.
  </li>

  <li>
    Bring up the Extensions management page
    by going to this URL: <b>chrome://extensions</b>
  </li>

  <li>
    Click the <b>Pack extension</b> button.
    A dialog appears.
  </li>

  <li>
    In the <b>Extension root directory</b> field,
    specify the path to the extension's folder&mdash;for example,
    <code>C:\myext</code>.
  </li>

  <li>
    In the <b>Private key file</b> field,
    specify the location of the
    already generated <code>.pem</code> file for this extension&mdash;for
    example, <code>C:\myext.pem</code>.
  </li>

  <li>
    Click <b>OK</b>.
  </li>
</ol>

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

<img src="{{static}}/images/update-success.png"
  width="540" height="191" />


<h2 id="upload"> Uploading a previously packaged extension to the Chrome Web Store</h2>

<p>
You can use the Chrome Developer Dashboard
to upload an extension that you've previously packaged yourself.
However, unless you take special steps,
the extension's ID in the Chrome Web Store
will be different from its ID in the package you created.
This different ID might be a problem if you've
distributed your extension package,
because it allows users to install multiple versions of your extension,
each with its own local data.
</p>

<p>
If you want to keep the extension ID the same,
follow these steps:
</p>

<ol>
  <li> Rename the private key that was generated
    when you created the <code>.crx</code> file to <code>key.pem</code>. </li>
  <li> Put <code>key.pem</code> in the top directory
    of your extension. </li>
  <li> Compress that directory into a ZIP file. </li>
  <li> Upload the ZIP file using the
    <a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>. </li>
</ol>


<h2 id="packaging">Packaging at the command line</h2>

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

<pre>
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
</pre>

<h2 id="format">Package format and scripts</h2>
<p>
For more information on the format, as well as pointers to scripts you can use
to create <code>.crx</code> files, see <a href="crx.html">CRX Package Format</a>.
</p>
