1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<div id="pageData-title" class="pageData">Packaging</div>
<p>
Extensions are packaged as signed zip files
with the file extension "crx"
(for example, <code>myextension.crx</code>).
Each extension has its own unique key pair.
The public key is used as the unique identifier for the extension.
The private key is kept private
and used to sign each version of the extension.
</p>
<!--
[PENDING: Perhaps mention that once the gallery is up,
creating and updating a package will be much easier.
Also refer to instructions on submitting an extension
for inclusion in the gallery.]
-->
<h2>Creating a package</h2>
<p>To package an extension:</p>
<ol>
<li>Close all your Chrome windows</li>
<li>Execute Chrome, using the <code>--pack-extension</code> option
to specify the path to the extension's folder:
<pre>chrome.exe --pack-extension=<em>ext-folder-path</em></pre>
</li>
</ol>
<p>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.
</p>
<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>Import the extension into the extensions gallery,
once the gallery becomes available</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="images/create-package.png" />
<h3>Finding the path to Chrome</h3>
<p>
If <code>chrome.exe</code> isn't already in your path,
you need to specify the complete path to it.
Here's how:
</p>
<ul>
<li>
In Windows XP, right-click your Google Chrome shortcut,
choose <b>Properties > Shortcut</b>,
and then choose <b>Find Target</b>.
</li>
<li>
In Vista, right-click your Google Chrome shortcut
and select <b>Open File Location</b>.
</li>
</ul>
<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>Close all your Chrome windows.</li>
<li>Execute Chrome, using the <code>--pack-extension</code>
and <code>--pack-extension-key</code> options.
The value of the key option should be the path to
the already generated <code>.pem</code> file for this extension.
<pre>chrome.exe --pack-extension=<em>ext-folder-path</em> --pack-extension-key=<em>ext-key-path</em></pre>
</li>
</ol>
<p>If the updated extension is successfully packaged, you'll see a dialog like this:</p>
<img src="images/package-success.png">
<h2>Tips and Tricks</h2>
<ul>
<li>In build 3.0.195 and later, you can use the <code>--no-message-box</code> command line flag to suppress the dialog. This is useful if you're packing extensions in non-interactive scripts.</li>
</ul>
|