| 1 <!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc.
Note: 1) The <head> information in this page is significant, should be uniform
across api docs and should be edited only with knowledge of the templating mecha
nism. 2) The <body> tag *must* retain id="body" 3) All <body>.innerHTML is gener
eated as an rendering step. If viewed in a browser, it will be re-generated from
the template, json schema and authored overview content. 4) The <body>.innerHTM
L is also generated by an offline step so that this page may easily be indexed b
y search engines. TODO(rafaelw): Abstract this into a "pageshell" that becomes t
he single version of page template shell and the "instance" pages (bookmarks.htm
l, etc...) can be generated with a build step. --><!-- <html> must retain id="te
mplate --><html xmlns="http://www.w3.org/1999/xhtml" jstcache="0"><!-- <head> da
ta is significant and loads the needed libraries and styles --><head jstcache="0
"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" jstcache="
0"> <title jscontent="pageTitle" jstcache="1">Packaging</title> <link href="css/
ApiRefStyles.css" rel="stylesheet" type="text/css" jstcache="0"> <script type="t
ext/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js" jst
cache="0"> </script> <script type="text/javascript" src="js/api_page_generator.j
s" jstcache="0"></script> <script type="text/javascript" src="js/bootstrap.js" j
stcache="0"></script> </head><!-- <body> content is completely generated. Do not
edit, as it will be and rewritten. --><body jstcache="0"> <div id="container" j
stcache="0"> <a name="top" jstcache="0"> </a> <!-- API HEADER --> <div id="pageH
eader" jstcache="0"> <!-- BREADCRUMB --> <!-- TODO: Fix these hrefs --> <div id=
"breadcrumbs" jstcache="0"> <a href="index.html" jstcache="0">Google Chrome Exte
nsions</a> > <a href="reference_index.html" jstcache="0">Reference</a> > <
a href="api_index.html" jstcache="0">chrome.* APIs</a> > <span jscontent="h1H
eader" jstcache="2">Packaging</span> </div> <div id="searchbox" jstcache="0"> <f
orm action="http://www.google.com/cse" id="cse-search-box" jstcache="0"> <div js
tcache="0"> <input type="hidden" name="cx" value="002967670403910741006:61_cvzfq
tno" jstcache="0"> <input type="hidden" name="ie" value="UTF-8" jstcache="0"> <i
nput type="text" name="q" size="31" jstcache="0"> <input type="submit" name="sa"
value="Search" jstcache="0"> </div> </form> <script type="text/javascript" src=
"http://www.google.com/jsapi" jstcache="0"></script> <script type="text/javascri
pt" jstcache="0">google.load("elements", "1", {packages: "transliteration"});</s
cript> <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?f
orm=cse-search-box&t13n_langs=en" jstcache="0"></script> <script type="text/
javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&la
ng=en" jstcache="0"></script> </div> <div id="pageTitle" jstcache="0"> <h1 jscon
tent="h1Header" jstcache="2">Packaging</h1> </div> </div> <!-- /pageHeader --> <
div id="pageContent" jstcache="0"> <!-- SIDENAV --> <div id="leftNav" jstcache="
0"> <ul jstcache="0"> <li jstcache="0"> <a href="index.html" jstcache="0">Home</
a></li> <li jstcache="0"> <a href="getstarted.html" jstcache="0">Get Started</a>
</li> <li jstcache="0"> <a href="overview.html" jstcache="0">Overview</a></li> <
li jstcache="0">Reference <ul jstcache="0"> <li jstcache="0"><a href="manifest.h
tml" jstcache="0">Manifest</a> </li><li jstcache="0"><a href="toolstrip.html" js
tcache="0">Toolstrips</a> </li><li jstcache="0"><a href="pageActions.html" jstca
che="0">Page actions</a> </li><li jstcache="0"><a href="background_pages.html" j
stcache="0">Background pages</a> </li><li jstcache="0"><a href="content_scripts.
html" jstcache="0">Content scripts</a> </li><li jstcache="0"><a href="tabs.html"
jstcache="0">Tabs</a> </li><li jstcache="0"><a href="windows.html" jstcache="0"
>Windows</a> </li><li jstcache="0"><a href="self.html" jstcache="0">Self</a> </l
i><li jstcache="0"><a href="npapi.html" jstcache="0">NPAPI Plugins</a> </li><li
jstcache="0"><a href="packaging.html" jstcache="0">Packaging</a> </li><li jstcac
he="0"><a href="autoupdate.html" jstcache="0">Autoupdate</a> </li></ul> </li><li
jstcache="0">Samples <ul jstcache="0"> <li jstcache="0">[sample 1] </li><li jst
cache="0">[sample 2] </li></ul> </li></ul> </div> <div id="mainColumn" jstcache=
"0"> <!-- TABLE OF CONTENTS --> <div id="toc" jsselect="apiDefinition" jstcache=
"3" style="display: none; "> <p jstcache="0">Contents</p> <ol jstcache="0"> <li
jstcache="0"> <a href="#overview" jstcache="0">Description</a> <ol jstcache="0">
<li jstcache="0"><a href="#overview-properties" jstcache="0">Properties</a></li
> <li jstcache="0"><a href="#overview-examples" jstcache="0">Examples</a></li> <
/ol> </li> <li jstcache="0"> <a href="#methods" jstcache="0">Methods</a> <ol jst
cache="0"> <li jsselect="functions" jstcache="4"> <a jscontent="name" jsvalues="
.href:'#method-' + name" href="#method-anchor" jstcache="17">methodName</a> </li
> </ol> </li> <li jstcache="0"> <a href="#events" jstcache="0">Events</a> <ol js
tcache="0"> <li jsselect="events" jstcache="5"> <a jscontent="name" jsvalues=".h
ref:'#event-' + name" href="#event-anchor" jstcache="18">eventName</a> </li> </o
l> </li> <!-- TODO: What do we do about structs/types? --> <li jstcache="0"> <a
href="#structs" jstcache="0">TODO: Structs</a> <ol jstcache="0"> <li jstcache="0
"><a href="#struct-BookmarkTreeNode" jstcache="0"></a></li> </ol> </li> </ol> [P
ENDING: links to all h2s and h3s should go here -- would it be possible to link
to overview h3s, as well? if so, how should we create their anchor/id values?] <
/div> <!-- /TABLE OF CONTENTS --> <!-- STATIC CONTENT PLACEHOLDER --> <div id="s
tatic" jstcache="0"><p jstcache="0">Extensions are packaged as signed zip files
with the file extension "crx" (eg myextension.crx). Each extension has its own u
nique key pair. The public key is used as the unique identifier for the extensio
n and the private key is kept private and used to sign each version of the exten
sion.</p> <h3 jstcache="0">Packaging an Extension</h3> <p jstcache="0">To packag
e an extension:</p> <ol jstcache="0"> <li jstcache="0">Close all your Chrome win
dows</li> <li jstcache="0">Open a command line and type: <pre jstcache="0"><p
ath-to-chrome>\chrome.exe --pack-extension=<path\to\extension\folder> <
/pre></li></ol> <img src="images/create-package.png" jstcache="0"> <h4 jstcache=
"0">Note</h4> <ul jstcache="0"> <li jstcache="0">In Windows XP, you can find <pa
th-to-chrome jstcache="0"> by right-clicking on your Google Chrome shortcut and
selecting Properties -> Shortcut and then pressing Find Target.</path-to-chro
me></li> <li jstcache="0">In Vista, you can do the same by right-clicking your G
oogle Chrome shortcut and selecting Open File Location.</li> </ul> <p jstcache="
0">The packager creates two files: a crx file (myextension.crx), which is the ac
tual extension that can be installed, and a private key (myextension.pem). You s
hould keep the private key secret and in a safe place.</p> <h4 jstcache="0">IMPO
RTANT: Do not lose the private key. You will need it later for two things</h4> <
ol jstcache="0"> <li jstcache="0">If you want to create a new version of the ext
ension, you'll need the original private key (see below).</li><li jstcache="0">
</li><li jstcache="0">In the future, Google will implement a gallery service for
extensions. You'll need your private key if you want to import an existing exte
nsion into that gallery.</li> </ol> <h3 jstcache="0">Updating an Extension</h3>
<p jstcache="0">To create an updated version of your extension:</p> <ol jstcache
="0"> <li jstcache="0">Increase the version number in manifest.json</li> <li jst
cache="0">Close all your Chrome windows</li> <li jstcache="0">Run <path-to-chrom
e jstcache="0">\chrome.exe --pack-extension=<path\to\extension\folder jstcache="
0"> --pack-extension-key=<path\to\extension-key jstcache="0">, specifying the pr
ivate key file you created earlier for the second parameter.</path\to\extension-
key></path\to\extension\folder></path-to-chrome></li> </ol> <p jstcache="0">If t
he updated extension is successfully packaged, you'll see a dialog like this</p>
<img src="images/package-success.png" jstcache="0"> <h3 jstcache="0">Tips and T
ricks</h3> <ul jstcache="0"> <li jstcache="0">In build 3.0.195 and later, you ca
n use the --no-message-box command line flag to suppress the dialog. This is use
ful if you're packing extensions in non-interactive scripts.</li> </ul></div> <!
-- API PAGE --> <div class="apiPage" jsselect="apiDefinition" jstcache="3" style
="display: none; "> <!-- METHODS --> <div class="apiGroup" id="methods" jstcache
="0"> <a name="#methods" jstcache="0"></a> <h2 jstcache="0">Methods</h2> <!-- it
erates over all functions --> <div class="apiItem" jsselect="functions" jstcache
="4"> <a jsvalues=".name:'method-' + name" jstcache="6"></a> <!-- method-anchor
--> <h3 jscontent="name" jstcache="7">method name</h3> <div class="summary" jstc
ache="0"><span jsdisplay="returns" jscontent="returns.typeName" jstcache="9">voi
d</span> <!-- Note: intentionally longer 80 columns --> <span jscontent="fullNam
e" jstcache="10">chrome.module.methodName</span>(<span jsselect="parameters" jsv
alues="class:optional ? 'optional' : ''" jstcache="11"><span jsdisplay="$index"
jstcache="19">, </span><span jscontent="typeName" jstcache="20"></span> <var jst
cache="0"><span jscontent="name" jstcache="7"></span></var></span>)</div> <div c
lass="description" jstcache="0"> <p class="todo" jsdisplay="!description" jstcac
he="12">Undocumented.</p> <p jsdisplay="description" jsvalues=".innerHTML:descri
ption" jstcache="13"> A description from the json schema def of the function goe
s here. </p> <!-- PARAMETERS --> <h4 jstcache="0">Parameters</h4> <dl jstcache="
0"> <div jsselect="parameters" jstcache="21"> <dt jstcache="0"> <!-- Note: inten
tionally longer 80 columns --> <var jscontent="name" jstcache="7">paramName</var
><em jstcache="0"> (<span class="optional" jsdisplay="optional" jstcache="28">op
tional </span><span jscontent="typeName" jstcache="20">paramType</span>)</em> </
dt> <dd class="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented.
</dd> <dd jsdisplay="$this.description" jsvalues=".innerHTML:$this.description"
jstcache="24"> Description of this parameter from the json schema. </dd> <!-- O
BJECT PROPERTIES --> <dd jsdisplay="_propertyList" jstcache="25"> <dl jstcache="
0"> <div jsselect="_propertyList" jstcache="29"> <dt jstcache="0"> <!-- Note: in
tentionally longer 80 columns --> <var jscontent="name" jstcache="7">paramName</
var><em jstcache="0"> (<span class="optional" jsdisplay="optional" jstcache="28"
>optional </span><span jscontent="typeName" jstcache="20">paramType</span>)</em>
</dt> <dd class="todo" jsdisplay="!$this.description" jstcache="23"> Undocument
ed. </dd> <dd jsdisplay="$this.description" jsvalues=".innerHTML:$this.descripti
on" jstcache="24"> Description of this parameter from the json schema. </dd> </d
iv> </dl> </dd> </div> </dl> <!-- RETURNS --> <h4 jsdisplay="returns" jstcache="
14">Returns</h4> <dl jstcache="0"> <div jsselect="returns" jstcache="22"> <dt js
tcache="0"> <!-- Note: intentionally longer 80 columns --> <var jscontent="name"
jstcache="7">paramName</var> <em jstcache="0">(<span jscontent="typeName" jstca
che="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$this.descrip
tion" jstcache="23"> Undocumented. </dd> <dd jsdisplay="$this.description" jsval
ues=".innerHTML:$this.description" jstcache="24"> Description of this parameter
from the json schema. </dd> <!-- OBJECT PROPERTIES --> <dd jsdisplay="_propertyL
ist" jstcache="25"> <dl jstcache="0"> <div jsselect="_propertyList" jstcache="29
"> <dt jstcache="0"> <!-- Note: intentionally longer 80 columns --> <var jsconte
nt="name" jstcache="7">paramName</var><em jstcache="0"> (<span class="optional"
jsdisplay="optional" jstcache="28">optional </span><span jscontent="typeName" js
tcache="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$this.desc
ription" jstcache="23"> Undocumented. </dd> <dd jsdisplay="$this.description" js
values=".innerHTML:$this.description" jstcache="24"> Description of this paramet
er from the json schema. </dd> </div> </dl> </dd> </div> </dl> <!-- CALLBACK -->
<div jsdisplay="callbackParameters" jstcache="15"> <h4 jstcache="0">Cal
lback function</h4> <p jstcache="0"> If you specify the <em jstcache="0">callbac
k</em> parameter, it should specify a function that looks like this: </p> <!-- N
ote: intentionally longer 80 columns --> <pre jstcache="0">function(<span jscont
ent="callbackSignature" jstcache="26">Type param1, Type param2</span>) <span cla
ss="subdued" jstcache="0">{...}</span>);</pre> <dl jstcache="0"> <div jsselect="
callbackParameters" jstcache="27"> <dt jstcache="0"> <!-- Note: intentionally lo
nger 80 columns --> <var jscontent="name" jstcache="7">paramName</var><em jstcac
he="0"> (<span jscontent="typeName" jstcache="20">paramType</span>)</em> </dt> <
dd class="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented. </dd
> <dd jsdisplay="$this.description" jsvalues=".innerHTML:$this.description" jstc
ache="24"> Description of this parameter from the json schema. </dd> <!-- OBJECT
PROPERTIES --> <dd jsdisplay="_propertyList" jstcache="25"> <dl jstcache="0"> <
div jsselect="_propertyList" jstcache="29"> <dt jstcache="0"> <!-- Note: intenti
onally longer 80 columns --> <var jscontent="name" jstcache="7">paramName</var><
em jstcache="0"> (<span class="optional" jsdisplay="optional" jstcache="28">opti
onal </span><span jscontent="typeName" jstcache="20">paramType</span>)</em> </dt
> <dd class="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented. <
/dd> <dd jsdisplay="$this.description" jsvalues=".innerHTML:$this.description" j
stcache="24"> Description of this parameter from the json schema. </dd> </div> <
/dl> </dd> </div> </dl> </div> </div> <!-- /description --> </div> <!-- /apiItem
--> </div> <!-- /apiGroup --> <!-- EVENTS --> <div class="apiGroup" id="events"
jstcache="0"> <a name="#events" jstcache="0"></a> <h2 id="events" jstcache="0">
Events</h2> <!-- iterates over all events --> <div jsselect="events" class="apiI
tem" jstcache="5"> <a jsvalues=".name:'event-' + name" jstcache="8"></a> <h3 jsc
ontent="name" jstcache="7">event name</h3> <div class="summary" jstcache="0"> <!
-- Note: intentionally longer 80 columns --> <span class="subdued" jstcache="0">
chrome.bookmarks.</span><span jscontent="name" jstcache="7">onEvent</span><span
class="subdued" jstcache="0">.addListener</span>(function(<span jscontent="callS
ignature" jstcache="16">Type param1, Type param2</span>) <span class="subdued" j
stcache="0">{...}</span>); </div> <div class="description" jstcache="0"> <p clas
s="todo" jsdisplay="!description" jstcache="12">Undocumented.</p> <p jsdisplay="
description" jsvalues=".innerHTML:description" jstcache="13"> A description from
the json schema def of the event goes here. </p> <!-- PARAMETERS --> <h4 jstcac
he="0">Parameters</h4> <dl jstcache="0"> <div jsselect="parameters" jstcache="21
"> <dt jstcache="0"> <!-- Note: intentionally longer 80 columns --> <var jsconte
nt="name" jstcache="7">paramName</var><em jstcache="0"> (<span jscontent="typeNa
me" jstcache="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$thi
s.description" jstcache="23">Undocumented.</dd> <dd jsdisplay="$this.description
" jsvalues=".innerHTML:$this.description" jstcache="24"> Description of this par
ameter from the json schema. </dd> <!-- OBJECT PROPERTIES --> <dd jsdisplay="_pr
opertyList" jstcache="25"> <dl jstcache="0"> <div jsselect="_propertyList" jstca
che="29"> <dt jstcache="0"> <!-- Note: intentionally longer 80 columns --> <var
jscontent="name" jstcache="7">paramName</var><em jstcache="0"> (<span class="opt
ional" jsdisplay="optional" jstcache="28">optional </span><span jscontent="typeN
ame" jstcache="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$th
is.description" jstcache="23"> Undocumented. </dd> <dd jsdisplay="$this.descript
ion" jsvalues=".innerHTML:$this.description" jstcache="24"> Description of this
parameter from the json schema. </dd> </div> </dl> </dd> </div> </dl> </div> <!-
- /decription --> </div> <!-- /apiItem --> </div> <!-- /apiGroup --> </div> <!--
/apiPage --> </div> <!-- /mainColumn --> </div> <!-- /pageContent --> <div id="
pageFooter" --="" jstcache="0"> Copyright 2009 <br jstcache="0"> TBD: copyright/
license should be automatically included here </div> <!-- /pageFooter --> </div>
<!-- /container --> </body></html> | 1 <!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc.
Note: 1) The <head> information in this page is significant, should be uniform
across api docs and should be edited only with knowledge of the templating mecha
nism. 2) The <body> tag *must* retain id="body" 3) All <body>.innerHTML is gener
eated as an rendering step. If viewed in a browser, it will be re-generated from
the template, json schema and authored overview content. 4) The <body>.innerHTM
L is also generated by an offline step so that this page may easily be indexed b
y search engines. TODO(rafaelw): Abstract this into a "pageshell" that becomes t
he single version of page template shell and the "instance" pages (bookmarks.htm
l, etc...) can be generated with a build step. --><!-- <html> must retain id="te
mplate --><html xmlns="http://www.w3.org/1999/xhtml" jstcache="0"><!-- <head> da
ta is significant and loads the needed libraries and styles --><head jstcache="0
"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" jstcache="
0"> <title jscontent="pageTitle" jstcache="1">Packaging</title> <link href="css/
ApiRefStyles.css" rel="stylesheet" type="text/css" jstcache="0"> <script type="t
ext/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js" jst
cache="0"> </script> <script type="text/javascript" src="js/api_page_generator.j
s" jstcache="0"></script> <script type="text/javascript" src="js/bootstrap.js" j
stcache="0"></script> </head><!-- <body> content is completely generated. Do not
edit, as it will be and rewritten. --><body jstcache="0"> <div id="container" j
stcache="0"> <a name="top" jstcache="0"> </a> <!-- API HEADER --> <div id="pageH
eader" jstcache="0"> <!-- BREADCRUMB --> <!-- TODO: Fix these hrefs --> <div id=
"breadcrumbs" jstcache="0"> <a href="index.html" jstcache="0">Google Chrome Exte
nsions</a> > <a href="reference_index.html" jstcache="0">Reference</a> > <
a href="api_index.html" jstcache="0">chrome.* APIs</a> > <span jscontent="h1H
eader" jstcache="2">Packaging</span> </div> <div id="searchbox" jstcache="0"> <f
orm action="http://www.google.com/cse" id="cse-search-box" jstcache="0"> <div js
tcache="0"> <input type="hidden" name="cx" value="002967670403910741006:61_cvzfq
tno" jstcache="0"> <input type="hidden" name="ie" value="UTF-8" jstcache="0"> <i
nput type="text" name="q" size="31" jstcache="0"> <input type="submit" name="sa"
value="Search" jstcache="0"> </div> </form> <script type="text/javascript" src=
"http://www.google.com/jsapi" jstcache="0"></script> <script type="text/javascri
pt" jstcache="0">google.load("elements", "1", {packages: "transliteration"});</s
cript> <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?f
orm=cse-search-box&t13n_langs=en" jstcache="0"></script> <script type="text/
javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&la
ng=en" jstcache="0"></script> </div> <div id="pageTitle" jstcache="0"> <h1 jscon
tent="h1Header" jstcache="2">Packaging</h1> </div> </div> <!-- /pageHeader --> <
div id="pageContent" jstcache="0"> <!-- SIDENAV --> <div id="leftNav" jstcache="
0"> <ul jstcache="0"> <li jstcache="0"> <a href="index.html" jstcache="0">Home</
a></li> <li jstcache="0"> <a href="getstarted.html" jstcache="0">Get Started</a>
</li> <li jstcache="0"> <a href="overview.html" jstcache="0">Overview</a></li> <
li jstcache="0">Reference <ul jstcache="0"> <li jstcache="0"><a href="manifest.h
tml" jstcache="0">Manifest</a> </li><li jstcache="0"><a href="toolstrip.html" js
tcache="0">Toolstrips</a> </li><li jstcache="0"><a href="pageActions.html" jstca
che="0">Page actions</a> </li><li jstcache="0"><a href="background_pages.html" j
stcache="0">Background pages</a> </li><li jstcache="0"><a href="content_scripts.
html" jstcache="0">Content scripts</a> </li><li jstcache="0"><a href="extension.
html" jstcache="0">Extension</a> </li><li jstcache="0"><a href="tabs.html" jstca
che="0">Tabs</a> </li><li jstcache="0"><a href="windows.html" jstcache="0">Windo
ws</a> </li><li jstcache="0"><a href="self.html" jstcache="0">Self</a> </li><li
jstcache="0"><a href="npapi.html" jstcache="0">NPAPI Plugins</a> </li><li jstcac
he="0"><a href="packaging.html" jstcache="0">Packaging</a> </li><li jstcache="0"
><a href="autoupdate.html" jstcache="0">Autoupdate</a> </li></ul> </li><li jstca
che="0">Samples <ul jstcache="0"> <li jstcache="0">[sample 1] </li><li jstcache=
"0">[sample 2] </li></ul> </li></ul> </div> <div id="mainColumn" jstcache="0"> <
!-- TABLE OF CONTENTS --> <div id="toc" jsselect="apiDefinition" jstcache="3" st
yle="display: none; "> <p jstcache="0">Contents</p> <ol jstcache="0"> <li jstcac
he="0"> <a href="#overview" jstcache="0">Description</a> <ol jstcache="0"> <li j
stcache="0"><a href="#overview-properties" jstcache="0">Properties</a></li> <li
jstcache="0"><a href="#overview-examples" jstcache="0">Examples</a></li> </ol> <
/li> <li jstcache="0"> <a href="#methods" jstcache="0">Methods</a> <ol jstcache=
"0"> <li jsselect="functions" jstcache="4"> <a jscontent="name" jsvalues=".href:
'#method-' + name" href="#method-anchor" jstcache="17">methodName</a> </li> </ol
> </li> <li jstcache="0"> <a href="#events" jstcache="0">Events</a> <ol jstcache
="0"> <li jsselect="events" jstcache="5"> <a jscontent="name" jsvalues=".href:'#
event-' + name" href="#event-anchor" jstcache="18">eventName</a> </li> </ol> </l
i> <!-- TODO: What do we do about structs/types? --> <li jstcache="0"> <a href="
#structs" jstcache="0">TODO: Structs</a> <ol jstcache="0"> <li jstcache="0"><a h
ref="#struct-BookmarkTreeNode" jstcache="0"></a></li> </ol> </li> </ol> [PENDING
: links to all h2s and h3s should go here -- would it be possible to link to ove
rview h3s, as well? if so, how should we create their anchor/id values?] </div>
<!-- /TABLE OF CONTENTS --> <!-- STATIC CONTENT PLACEHOLDER --> <div id="static"
jstcache="0"><p jstcache="0">Extensions are packaged as signed zip files with t
he file extension "crx" (eg myextension.crx). Each extension has its own unique
key pair. The public key is used as the unique identifier for the extension and
the private key is kept private and used to sign each version of the extension.<
/p> <h3 jstcache="0">Packaging an Extension</h3> <p jstcache="0">To package an e
xtension:</p> <ol jstcache="0"> <li jstcache="0">Close all your Chrome windows</
li> <li jstcache="0">Open a command line and type: <pre jstcache="0"><path-to
-chrome>\chrome.exe --pack-extension=<path\to\extension\folder> </pre><
/li></ol> <img src="images/create-package.png" jstcache="0"> <h4 jstcache="0">No
te</h4> <ul jstcache="0"> <li jstcache="0">In Windows XP, you can find <path-to-
chrome jstcache="0"> by right-clicking on your Google Chrome shortcut and select
ing Properties -> Shortcut and then pressing Find Target.</path-to-chrome></l
i> <li jstcache="0">In Vista, you can do the same by right-clicking your Google
Chrome shortcut and selecting Open File Location.</li> </ul> <p jstcache="0">The
packager creates two files: a crx file (myextension.crx), which is the actual e
xtension that can be installed, and a private key (myextension.pem). You should
keep the private key secret and in a safe place.</p> <h4 jstcache="0">IMPORTANT:
Do not lose the private key. You will need it later for two things</h4> <ol jst
cache="0"> <li jstcache="0">If you want to create a new version of the extension
, you'll need the original private key (see below).</li><li jstcache="0"> </li><
li jstcache="0">In the future, Google will implement a gallery service for exten
sions. You'll need your private key if you want to import an existing extension
into that gallery.</li> </ol> <h3 jstcache="0">Updating an Extension</h3> <p jst
cache="0">To create an updated version of your extension:</p> <ol jstcache="0">
<li jstcache="0">Increase the version number in manifest.json</li> <li jstcache=
"0">Close all your Chrome windows</li> <li jstcache="0">Run <path-to-chrome jstc
ache="0">\chrome.exe --pack-extension=<path\to\extension\folder jstcache="0"> --
pack-extension-key=<path\to\extension-key jstcache="0">, specifying the private
key file you created earlier for the second parameter.</path\to\extension-key></
path\to\extension\folder></path-to-chrome></li> </ol> <p jstcache="0">If the upd
ated extension is successfully packaged, you'll see a dialog like this</p> <img
src="images/package-success.png" jstcache="0"> <h3 jstcache="0">Tips and Tricks<
/h3> <ul jstcache="0"> <li jstcache="0">In build 3.0.195 and later, you can use
the --no-message-box command line flag to suppress the dialog. This is useful if
you're packing extensions in non-interactive scripts.</li> </ul></div> <!-- API
PAGE --> <div class="apiPage" jsselect="apiDefinition" jstcache="3" style="disp
lay: none; "> <!-- METHODS --> <div class="apiGroup" id="methods" jstcache="0">
<a name="#methods" jstcache="0"></a> <h2 jstcache="0">Methods</h2> <!-- iterates
over all functions --> <div class="apiItem" jsselect="functions" jstcache="4">
<a jsvalues=".name:'method-' + name" jstcache="6"></a> <!-- method-anchor --> <h
3 jscontent="name" jstcache="7">method name</h3> <div class="summary" jstcache="
0"><span jsdisplay="returns" jscontent="returns.typeName" jstcache="9">void</spa
n> <!-- Note: intentionally longer 80 columns --> <span jscontent="fullName" jst
cache="10">chrome.module.methodName</span>(<span jsselect="parameters" jsvalues=
"class:optional ? 'optional' : ''" jstcache="11"><span jsdisplay="$index" jstcac
he="19">, </span><span jscontent="typeName" jstcache="20"></span> <var jstcache=
"0"><span jscontent="name" jstcache="7"></span></var></span>)</div> <div class="
description" jstcache="0"> <p class="todo" jsdisplay="!description" jstcache="12
">Undocumented.</p> <p jsdisplay="description" jsvalues=".innerHTML:description"
jstcache="13"> A description from the json schema def of the function goes here
. </p> <!-- PARAMETERS --> <h4 jstcache="0">Parameters</h4> <dl jstcache="0"> <d
iv jsselect="parameters" jstcache="21"> <dt jstcache="0"> <!-- Note: intentional
ly longer 80 columns --> <var jscontent="name" jstcache="7">paramName</var><em j
stcache="0"> (<span class="optional" jsdisplay="optional" jstcache="28">optional
</span><span jscontent="typeName" jstcache="20">paramType</span>)</em> </dt> <d
d class="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented. </dd>
<dd jsdisplay="$this.description" jsvalues=".innerHTML:$this.description" jstca
che="24"> Description of this parameter from the json schema. </dd> <!-- OBJECT
PROPERTIES --> <dd jsdisplay="_propertyList" jstcache="25"> <dl jstcache="0"> <d
iv jsselect="_propertyList" jstcache="29"> <dt jstcache="0"> <!-- Note: intentio
nally longer 80 columns --> <var jscontent="name" jstcache="7">paramName</var><e
m jstcache="0"> (<span class="optional" jsdisplay="optional" jstcache="28">optio
nal </span><span jscontent="typeName" jstcache="20">paramType</span>)</em> </dt>
<dd class="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented. </
dd> <dd jsdisplay="$this.description" jsvalues=".innerHTML:$this.description" js
tcache="24"> Description of this parameter from the json schema. </dd> </div> </
dl> </dd> </div> </dl> <!-- RETURNS --> <h4 jsdisplay="returns" jstcache="14">Re
turns</h4> <dl jstcache="0"> <div jsselect="returns" jstcache="22"> <dt jstcache
="0"> <!-- Note: intentionally longer 80 columns --> <var jscontent="name" jstca
che="7">paramName</var> <em jstcache="0">(<span jscontent="typeName" jstcache="2
0">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$this.description"
jstcache="23"> Undocumented. </dd> <dd jsdisplay="$this.description" jsvalues=".
innerHTML:$this.description" jstcache="24"> Description of this parameter from t
he json schema. </dd> <!-- OBJECT PROPERTIES --> <dd jsdisplay="_propertyList" j
stcache="25"> <dl jstcache="0"> <div jsselect="_propertyList" jstcache="29"> <dt
jstcache="0"> <!-- Note: intentionally longer 80 columns --> <var jscontent="na
me" jstcache="7">paramName</var><em jstcache="0"> (<span class="optional" jsdisp
lay="optional" jstcache="28">optional </span><span jscontent="typeName" jstcache
="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$this.descriptio
n" jstcache="23"> Undocumented. </dd> <dd jsdisplay="$this.description" jsvalues
=".innerHTML:$this.description" jstcache="24"> Description of this parameter fro
m the json schema. </dd> </div> </dl> </dd> </div> </dl> <!-- CALLBACK -->
<div jsdisplay="callbackParameters" jstcache="15"> <h4 jstcache="0">Callback fu
nction</h4> <p jstcache="0"> If you specify the <em jstcache="0">callback</em> p
arameter, it should specify a function that looks like this: </p> <!-- Note: int
entionally longer 80 columns --> <pre jstcache="0">function(<span jscontent="cal
lbackSignature" jstcache="26">Type param1, Type param2</span>) <span class="subd
ued" jstcache="0">{...}</span>);</pre> <dl jstcache="0"> <div jsselect="callback
Parameters" jstcache="27"> <dt jstcache="0"> <!-- Note: intentionally longer 80
columns --> <var jscontent="name" jstcache="7">paramName</var><em jstcache="0">
(<span jscontent="typeName" jstcache="20">paramType</span>)</em> </dt> <dd class
="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented. </dd> <dd js
display="$this.description" jsvalues=".innerHTML:$this.description" jstcache="24
"> Description of this parameter from the json schema. </dd> <!-- OBJECT PROPERT
IES --> <dd jsdisplay="_propertyList" jstcache="25"> <dl jstcache="0"> <div jsse
lect="_propertyList" jstcache="29"> <dt jstcache="0"> <!-- Note: intentionally l
onger 80 columns --> <var jscontent="name" jstcache="7">paramName</var><em jstca
che="0"> (<span class="optional" jsdisplay="optional" jstcache="28">optional </s
pan><span jscontent="typeName" jstcache="20">paramType</span>)</em> </dt> <dd cl
ass="todo" jsdisplay="!$this.description" jstcache="23"> Undocumented. </dd> <dd
jsdisplay="$this.description" jsvalues=".innerHTML:$this.description" jstcache=
"24"> Description of this parameter from the json schema. </dd> </div> </dl> </d
d> </div> </dl> </div> </div> <!-- /description --> </div> <!-- /apiItem --> </d
iv> <!-- /apiGroup --> <!-- EVENTS --> <div class="apiGroup" id="events" jstcach
e="0"> <a name="#events" jstcache="0"></a> <h2 id="events" jstcache="0">Events</
h2> <!-- iterates over all events --> <div jsselect="events" class="apiItem" jst
cache="5"> <a jsvalues=".name:'event-' + name" jstcache="8"></a> <h3 jscontent="
name" jstcache="7">event name</h3> <div class="summary" jstcache="0"> <!-- Note:
intentionally longer 80 columns --> <span class="subdued" jstcache="0">chrome.b
ookmarks.</span><span jscontent="name" jstcache="7">onEvent</span><span class="s
ubdued" jstcache="0">.addListener</span>(function(<span jscontent="callSignature
" jstcache="16">Type param1, Type param2</span>) <span class="subdued" jstcache=
"0">{...}</span>); </div> <div class="description" jstcache="0"> <p class="todo"
jsdisplay="!description" jstcache="12">Undocumented.</p> <p jsdisplay="descript
ion" jsvalues=".innerHTML:description" jstcache="13"> A description from the jso
n schema def of the event goes here. </p> <!-- PARAMETERS --> <h4 jstcache="0">P
arameters</h4> <dl jstcache="0"> <div jsselect="parameters" jstcache="21"> <dt j
stcache="0"> <!-- Note: intentionally longer 80 columns --> <var jscontent="name
" jstcache="7">paramName</var><em jstcache="0"> (<span jscontent="typeName" jstc
ache="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$this.descri
ption" jstcache="23">Undocumented.</dd> <dd jsdisplay="$this.description" jsvalu
es=".innerHTML:$this.description" jstcache="24"> Description of this parameter f
rom the json schema. </dd> <!-- OBJECT PROPERTIES --> <dd jsdisplay="_propertyLi
st" jstcache="25"> <dl jstcache="0"> <div jsselect="_propertyList" jstcache="29"
> <dt jstcache="0"> <!-- Note: intentionally longer 80 columns --> <var jsconten
t="name" jstcache="7">paramName</var><em jstcache="0"> (<span class="optional" j
sdisplay="optional" jstcache="28">optional </span><span jscontent="typeName" jst
cache="20">paramType</span>)</em> </dt> <dd class="todo" jsdisplay="!$this.descr
iption" jstcache="23"> Undocumented. </dd> <dd jsdisplay="$this.description" jsv
alues=".innerHTML:$this.description" jstcache="24"> Description of this paramete
r from the json schema. </dd> </div> </dl> </dd> </div> </dl> </div> <!-- /decri
ption --> </div> <!-- /apiItem --> </div> <!-- /apiGroup --> </div> <!-- /apiPag
e --> </div> <!-- /mainColumn --> </div> <!-- /pageContent --> <div id="pageFoot
er" --="" jstcache="0"> Copyright 2009 <br jstcache="0"> TBD: copyright/license
should be automatically included here </div> <!-- /pageFooter --> </div> <!-- /c
ontainer --> </body></html> |