Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: chrome/common/extensions/docs/packaging.html

Issue 179068: Extension Doc Changes (no building or testable changes): minor changes for tab & windows doc (Closed)
Patch Set: touch grd. rendered docs Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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="getPageTitle()" jstcache="1">Packaging</title> <link href= "css/ApiRefStyles.css" rel="stylesheet" type="text/css" jstcache="0"> <script ty pe="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js " jstcache="0"> </script> <script type="text/javascript" src="js/api_page_genera tor.js" jstcache="0"></script> <script type="text/javascript" src="js/bootstrap. js" jstcache="0"></script> </head><!-- <body> content is completely generated. D o not edit, as it will be and rewritten. --><body jstcache="0"> <div id="contain er" jstcache="0"> <a name="top" jstcache="0"> </a> <!-- API HEADER --> <div id=" pageHeader" jstcache="0"> <div id="searchbox" jstcache="0"> <form action="http:/ /www.google.com/cse" id="cse-search-box" jstcache="0"> <div jstcache="0"> <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno" jstcache="0"> <input type="hidden" name="ie" value="UTF-8" jstcache="0"> <input type="text" n ame="q" size="31" jstcache="0"> <input type="submit" name="sa" value="Search" js tcache="0"> </div> </form> <script type="text/javascript" src="http://www.google .com/jsapi" jstcache="0"></script> <script type="text/javascript" jstcache="0">g oogle.load("elements", "1", {packages: "transliteration"});</script> <script typ e="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse-search-box &amp;t13n_langs=en" jstcache="0"></script> <script type="text/javascript" src="h ttp://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en" jstcache="0 "></script> </div> <div id="pageTitle" jstcache="0"> <h1 jscontent="getPageTitle ()" jstcache="1">Packaging</h1> </div> </div> <!-- /pageHeader --> <div id="page Content" jstcache="0"> <!-- SIDENAV --> <div id="leftNav" jstcache="0"> <ul jstc ache="0"> <li jstcache="0"> <a href="index.html" jstcache="0">Home</a></li> <li jstcache="0"> <a href="getstarted.html" jstcache="0">Getting Started</a></li> <l i jstcache="0"> <a href="overview.html" jstcache="0">Overview</a></li> <li jstca che="0"> <a href="devguide.html" jstcache="0"><div jstcache="0">Developer's Guid e</div></a> <ul jstcache="0"> <li jstcache="0"><a href="toolstrip.html" jstcache ="0">Toolstrips</a></li> <li jstcache="0"><a href="pageActions.html" jstcache="0 ">Page Actions</a></li> <li jstcache="0"><a href="background_pages.html" jstcach e="0">Background Pages</a></li> <li jstcache="0"><a href="content_scripts.html" jstcache="0">Content Scripts</a></li> <li jstcache="0">Events</li> <li jstcache= "0"><a href="tabs.html" jstcache="0">Tabs</a></li> <li jstcache="0"><a href="win dows.html" jstcache="0">Windows</a></li> <li jstcache="0"><a href="bookmarks.htm l" jstcache="0">Bookmarks</a></li> <li jstcache="0">Themes</li> <li jstcache="0" ><a href="npapi.html" jstcache="0">NPAPI Plugins</a></li> <li jstcache="0" class ="leftNavSelected">Packaging</li> <li jstcache="0">Autoupdate</li> </ul> </li> < li jstcache="0"><a href="tutorials.html" jstcache="0"><div jstcache="0">Tutorial s</div></a> <ul jstcache="0"> <li jstcache="0"><a href="tut_debugging.html" jstc ache="0">Debugging</a></li> </ul> </li> <li jstcache="0">Reference <ul jstcache= "0"> <li jstcache="0"> Formats <ul jstcache="0"> <li jstcache="0"><a href="manif est.html" jstcache="0">Manifest Files</a></li> <li jstcache="0">Match Patterns</ li> <li jstcache="0">Packages (.crx)</li> </ul> </li> <li jstcache="0"> <a href= "api_index.html" jstcache="0">chrome.* APIs</a> </li> <li jstcache="0"> <a href= "api_other.html" jstcache="0">Other APIs</a> </li> </ul> </li> <li jstcache="0"> <a href="http://dev.chromium.org/developers/design-documents/extensions/samples" jstcache="0">Samples</a></li> </ul> </div> <div id="mainColumn" jstcache="0"> < !-- TABLE OF CONTENTS --> <div id="toc" jsdisplay="showPageTOC()" jstcache="2"> <p jstcache="0">Contents</p> <ol jstcache="0"> <li jsselect="getStaticTOC()" jst cache="9" jsinstance="0"> <a jscontent="name" jsvalues=".href:'#' + href" jstcac he="14" href="#H2-0">Creating a package</a> <ol jstcache="0"> <li jsselect="$thi s.children" jstcache="22" jsinstance="*0"> <a jscontent="name" jsvalues=".href:' #' + href" jstcache="14" href="#H3-1">Finding the path to Google Chrome</a> </li > </ol> </li><li jsselect="getStaticTOC()" jstcache="9" jsinstance="1"> <a jscon tent="name" jsvalues=".href:'#' + href" jstcache="14" href="#H2-2">Updating a pa ckage</a> <ol jstcache="0"> <li jsselect="$this.children" jstcache="22" jsinstan ce="*0" style="display: none; "> <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14">h3Name</a> </li> </ol> </li><li jsselect="getStaticTOC()" jstcach e="9" jsinstance="*2"> <a jscontent="name" jsvalues=".href:'#' + href" jstcache= "14" href="#H2-3">Tips and tricks</a> <ol jstcache="0"> <li jsselect="$this.chil dren" jstcache="22" jsinstance="*0" style="display: none; "> <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14">h3Name</a> </li> </ol> </li> <div jss elect="apiDefinition" jstcache="3" style="display: none; "> <li jstcache="0"> <a href="#apiReference" jscontent="'API reference: ' + getModuleName()" jstcache=" 4">API reference</a> <ol jstcache="0"> <li jsdisplay="$this.properties" jstcache ="5"> <a href="#properties" jstcache="0">Properties</a> <ol jstcache="0"> <li js select="getPropertyListFromObject($this)" jstcache="10"> <a jscontent="name" jsv alues=".href:'#property-' + name" href="#property-anchor" jstcache="41">property Name</a> </li> </ol> </li> <li jsdisplay="functions &amp;&amp; functions.length &gt; 0" jstcache="6"> <a href="#methods" jstcache="0">Methods</a> <ol jstcache=" 0"> <li jsselect="functions" jstcache="11"> <a jscontent="name" jsvalues=".href: '#method-' + name" href="#method-anchor" jstcache="42">methodName</a> </li> </ol > </li> <li jsdisplay="events &amp;&amp; events.length &gt; 0" jstcache="7"> <a href="#events" jstcache="0">Events</a> <ol jstcache="0"> <li jsselect="events" j stcache="12"> <a jscontent="name" jsvalues=".href:'#event-' + name" href="#event -anchor" jstcache="43">eventName</a> </li> </ol> </li> <li jsdisplay="types &amp ;&amp; types.length &gt; 0" jstcache="8"> <a href="#types" jstcache="0">Types</a > <ol jstcache="0"> <li jsselect="types" jstcache="13"> <a jscontent="id" jsvalu es=".href:'#type-' + id" href="#id-anchor" jstcache="44">id</a> </li> </ol> </li > </ol> </li> </div> </ol> </div> <!-- /TABLE OF CONTENTS --> <!-- STATIC CONTEN T PLACEHOLDER --> <div id="static" jstcache="0"><div id="pageData-title" class=" pageData" jstcache="0">Packaging</div> <div id="pageData-showTOC" class="pageDat a" jstcache="0">true</div> <p jstcache="0"> Extensions are packaged as signed zi p files with the file extension "crx" (for example, <code jstcache="0">myextensi on.crx</code>). Each extension has its own unique key pair. The public key is us ed as the unique identifier for the extension. The private key is kept private a nd used to sign each version of the extension. </p> <!-- [PENDING: Perhaps menti on that once the gallery is up, creating and updating a package will be much eas ier. Also refer to instructions on submitting an extension for inclusion in the gallery.] --> <a name="H2-0" jstcache="0"></a><h2 jstcache="0">Creating a packag e</h2> <p jstcache="0">To package an extension:</p> <ol jstcache="0"> <li jstcac he="0">Close all your Google Chrome windows</li> <li jstcache="0">Execute Google Chrome, using the <code jstcache="0">--pack-extension</code> option to specify the path to the extension's folder: <pre jstcache="0">chrome.exe --pack-extensio n=<em jstcache="0">ext-folder-path</em></pre> </li> </ol> <p jstcache="0">The pa ckager creates two files: a <code jstcache="0">.crx</code> file, which is the ac tual extension that can be installed, and a <code jstcache="0">.pem</code> file, which contains the private key. </p> <p jstcache="0"> <b jstcache="0">Do not lo se the private key!</b> Keep the <code jstcache="0">.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 jstcache="0"> <li jstcache="0"><a href="#update" jstcache="0">Update</a> the extension</li> <li jstcache="0">Import the extension into the extensions gal lery, once the gallery becomes available</li> </ul> <p jstcache="0"> If the exte nsion is successfully packaged, you'll see a dialog like this that tells you whe re to find the <code jstcache="0">.crx</code> and <code jstcache="0">.pem</code> files:</p> <p jstcache="0"></p> <img src="images/create-package.png" jstcache=" 0"> <a name="H3-1" jstcache="0"></a><h3 jstcache="0">Finding the path to Google Chrome</h3> <p jstcache="0"> If <code jstcache="0">chrome.exe</code> isn't alrea dy in your path, you need to specify the complete path to it. Here's how: </p> < ul jstcache="0"> <li jstcache="0"> In Windows XP, right-click your Google Chrome shortcut, choose <b jstcache="0">Properties &gt; Shortcut</b>, and then choose <b jstcache="0">Find Target</b>. </li> <li jstcache="0"> In Vista, right-click y our Google Chrome shortcut and select <b jstcache="0">Open File Location</b>. </ li> </ul> <a name="H2-2" jstcache="0"></a><h2 id="update" jstcache="0">Updating a package</h2> <p jstcache="0">To create an updated version of your extension:</ p> <ol jstcache="0"> <li jstcache="0">Increase the version number in <code jstca che="0">manifest.json</code>.</li> <li jstcache="0">Close all your Google Chrome windows.</li> <li jstcache="0">Execute Google Chrome, using the <code jstcache= "0">--pack-extension</code> and <code jstcache="0">--pack-extension-key</code> o ptions. The value of the key option should be the path to the already generated <code jstcache="0">.pem</code> file for this extension. <pre jstcache="0">chrome .exe --pack-extension=<em jstcache="0">ext-folder-path</em> --pack-extension-key =<em jstcache="0">ext-key-path</em></pre> </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"> <a name="H2-3" jstcache="0"></a> <h2 jstcache="0">Tips and tricks</h2> <p jstcache="0"> You can use the <code jst cache="0">--no-message-box</code> command-line flag to suppress the dialog. This is useful if you're packing extensions in non-interactive scripts. </p> </div> <!-- API PAGE --> <div class="apiPage" jsselect="apiDefinition" jstcache="3" sty le="display: none; "> <a name="apiReference" jstcache="0"></a> <h2 jscontent="'A PI reference: ' + getModuleName()" jstcache="4">API reference: chrome.apiname </ h2> <!-- PROPERTIES --> <div jsdisplay="$this.properties" class="apiGroup" jstca che="5"> <a name="properties" jstcache="0"></a> <h3 id="properties" jstcache="0" >Properties</h3> <div jsselect="getPropertyListFromObject($this)" jstcache="10"> <a jsvalues=".name:'property-' + name" jstcache="15"></a> <h4 jscontent="name" jstcache="16">getLastError</h4> <div class="summary" jstcache="0"> <!-- Note: in tentionally longer 80 columns --> <span jscontent="getModuleName() + '.'" jstcac he="23">chrome.extension</span><span jscontent="$this.name" jstcache="24">lastEr ror</span> </div> <div transclude="valueTemplate" jstcache="17"> </div> </div> < /div> <!-- /apiGroup --> <!-- METHODS --> <div jsdisplay="functions &amp;&amp; f unctions.length &gt; 0" class="apiGroup" id="methods" jstcache="6"> <a name="met hods" jstcache="0"></a> <h3 jstcache="0">Methods</h3> <!-- iterates over all fun ctions --> <div class="apiItem" jsselect="functions" jstcache="11"> <a jsvalues= ".name:'method-' + name" jstcache="18"></a> <!-- method-anchor --> <h4 jscontent ="name" jstcache="16">method name</h4> <div class="summary" jstcache="0"><span j sdisplay="returns" jscontent="getTypeName(returns)" jstcache="25">void</span> <! -- Note: intentionally longer 80 columns --> <span jscontent="getFullyQualifiedF unctionName($this)" jstcache="26">chrome.module.methodName</span>(<span jsselect ="parameters" jsvalues="class:optional ? 'optional' : ''" jstcache="27"><span js display="$index" jstcache="33">, </span><span jscontent="getTypeName($this)" jst cache="34"></span> <var jstcache="0"><span jscontent="name" jstcache="16"></span ></var></span>)</div> <div class="description" jstcache="0"> <p class="todo" jsd isplay="!description" jstcache="28">Undocumented.</p> <p jsdisplay="description" jsvalues=".innerHTML:description" jstcache="29"> A description from the json sc hema def of the function goes here. </p> <!-- PARAMETERS --> <h4 jstcache="0">Pa rameters</h4> <dl jstcache="0"> <div jsselect="parameters" jstcache="35"> <!-- V ALUE: This is a subtemplate that is used elsewhere via jsTemplate *transclude* - -> <div id="valueTemplate" jstcache="0"> <dt jstcache="0"> <var jsdisplay="$this .name" jscontent="$this.name" jstcache="45">paramName</var> <em jstcache="0"> <! -- TYPE --> <div style="display:inline" jstcache="0"> ( <span class="optional" j sdisplay="optional" jstcache="46">optional</span> <span id="typeTemplate" jstcac he="0"> <span jsdisplay="getTypeRef($this)" jstcache="47"> <a jsvalues=".href: g etTypeRefPage($this) + '#type-' + getTypeRef($this)" jscontent="getTypeRef($this )" jstcache="49"> Type</a> </span> <span jsdisplay="!getTypeRef($this)" jstcache ="48"> <span jsdisplay="isArray($this)" jstcache="50"> array of <span jsselect=" items" jstcache="52"><span transclude="typeTemplate" jstcache="53"></span></span > </span> <span jsdisplay="!isArray($this)" jscontent="getTypeName($this)" jstca che="51">paramType</span> </span> </span> ) </div> </em> </dt> <dd class="todo" jsdisplay="!$this.description" jstcache="38"> Undocumented. </dd> <dd jsdisplay= "$this.description" jsvalues=".innerHTML:$this.description" jstcache="39"> Descr iption of this parameter from the json schema. </dd> <!-- OBJECT PROPERTIES --> <dd jsdisplay="shouldExpandObject($this)" jstcache="40"> <dl jstcache="0"> <div jsselect="getPropertyListFromObject($this)" jstcache="10"> <div transclude="valu eTemplate" jstcache="17"> </div> </div> </dl> </dd> </div> <!-- /VALUE --> </div > </dl> <!-- RETURNS --> <h4 jsdisplay="returns" jstcache="30">Returns</h4> <dl jstcache="0"> <div jsselect="returns" jstcache="36"> <div transclude="valueTempl ate" jstcache="17"> </div> </div> </dl> <!-- CALLBACK --> <div jsdisplay= "hasCallback(parameters)" jstcache="31"> <div jsselect="getCallbackParameters(pa rameters)" jstcache="37"> <h4 jstcache="0">Callback function</h4> <p jstcache="0 "> If you specify the <em jstcache="0">callback</em> parameter, it should specif y a function that looks like this: </p> <!-- Note: intentionally longer 80 colum ns --> <pre jstcache="0">function(<span jscontent="getSignatureString(parameters )" jstcache="32">Type param1, Type param2</span>) <span class="subdued" jstcache ="0">{...}</span>);</pre> <dl jstcache="0"> <div jsselect="parameters" jstcache= "35"> <div transclude="valueTemplate" jstcache="17"> </div> </div> </dl> </div> </div> </div> <!-- /description --> </div> <!-- /apiItem --> </div> <!-- /apiGro up --> <!-- EVENTS --> <div jsdisplay="events &amp;&amp; events.length &gt; 0" c lass="apiGroup" jstcache="7"> <a name="events" jstcache="0"></a> <h3 id="events" jstcache="0">Events</h3> <!-- iterates over all events --> <div jsselect="event s" class="apiItem" jstcache="12"> <a jsvalues=".name:'event-' + name" jstcache=" 19"></a> <h4 jscontent="name" jstcache="16">event name</h4> <div class="summary" jstcache="0"> <!-- Note: intentionally longer 80 columns --> <span jscontent="g etModuleName() + '.'" class="subdued" jstcache="23">chrome.bookmarks</span><span jscontent="name" jstcache="16">onEvent</span><span class="subdued" jstcache="0" >.addListener</span>(function(<span jscontent="getSignatureString(parameters)" j stcache="32">Type param1, Type param2</span>) <span class="subdued" jstcache="0" >{...}</span>); </div> <div class="description" jstcache="0"> <p class="todo" js display="!description" jstcache="28">Undocumented.</p> <p jsdisplay="description " jsvalues=".innerHTML:description" jstcache="29"> A description from the json s chema def of the event goes here. </p> <!-- PARAMETERS --> <h4 jstcache="0">Para meters</h4> <dl jstcache="0"> <div jsselect="parameters" jstcache="35"> <div tra nsclude="valueTemplate" jstcache="17"> </div> </div> </dl> </div> <!-- /decripti on --> </div> <!-- /apiItem --> </div> <!-- /apiGroup --> <!-- TYPES --> <div js display="types &amp;&amp; types.length &gt; 0" class="apiGroup" jstcache="8"> <a name="types" jstcache="0"></a> <h3 id="types" jstcache="0">Types</h3> <!-- iter ates over all types --> <div jsselect="types" class="apiItem" jstcache="13"> <a jsvalues=".name:'type-' + id" jstcache="20"></a> <h4 jscontent="id" jstcache="21 ">type name</h4> <div transclude="valueTemplate" jstcache="17"> </div> </div> <! -- /apiItem --> </div> <!-- /apiGroup --> </div> <!-- /apiPage --> </div> <!-- / mainColumn --> </div> <!-- /pageContent --> <div id="pageFooter" --="" jstcache= "0"> <p jstcache="0"> Except as otherwise <a href="http://code.google.com/polici es.html#restrictions" jstcache="0">noted</a>, the content of this page is licens ed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/" jstcache="0">Creative Commons Attribution 3.0 License</a>, and code samples are licensed under the <a rel="license" href="http://code.google.com/google_bsd_lic ense.html" jstcache="0">BSD License</a>. </p> <p jstcache="0"> ©2009 Google </p> </div> <!-- /pageFooter --> </div> <!-- /container --> </body></html> 1 <!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note:
2 1) The <head> information in this page is significant, should be uniform
3 across api docs and should be edited only with knowledge of the
4 templating mechanism.
5 2) The <body> tag *must* retain id="body"
6 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
7 browser, it will be re-generated from the template, json schema and
8 authored overview content.
9 4) The <body>.innerHTML is also generated by an offline step so that this
10 page may easily be indexed by search engines.
11
12 TODO(rafaelw): Abstract this into a "pageshell" that becomes the single
13 version of page template shell and the "instance" pages (bookmarks.html,
14 etc...) can be generated with a build step.
15 --><!-- <html> must retain id="template --><html xmlns="http://www.w3.org/1999/x html" jstcache="0"><!-- <head> data is significant and loads the needed librarie s and styles --><head jstcache="0">
16 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" jstcache= "0">
17 <title jscontent="getPageTitle()" jstcache="1">Packaging</title>
18 <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css" jstcache= "0">
19 <script type="text/javascript" src="../../../third_party/jstemplate/jstempla te_compiled.js" jstcache="0">
20 </script>
21 <script type="text/javascript" src="js/api_page_generator.js" jstcache="0">< /script>
22 <script type="text/javascript" src="js/bootstrap.js" jstcache="0"></script>
23 </head><!-- <body> content is completely generated. Do not edit, as it will be
24 and rewritten. --><body jstcache="0"> <div id="container" jstcache="0">
25 <a name="top" jstcache="0"> </a>
26 <!-- API HEADER -->
27 <div id="pageHeader" jstcache="0">
28 <div id="searchbox" jstcache="0">
29 <form action="http://www.google.com/cse" id="cse-search-box" jstcache="0 ">
30 <div jstcache="0">
31 <input type="hidden" name="cx" value="002967670403910741006:61_cvzfq tno" jstcache="0">
32 <input type="hidden" name="ie" value="UTF-8" jstcache="0">
33 <input type="text" name="q" size="31" jstcache="0">
34 <input type="submit" name="sa" value="Search" jstcache="0">
35 </div>
36 </form>
37
38 <script type="text/javascript" src="http://www.google.com/jsapi" jstcach e="0"></script>
39 <script type="text/javascript" jstcache="0">google.load("elements", "1", {packages: "transliteration"});</script>
40 <script type="text/javascript" src="http://www.google.com/coop/cse/t13n? form=cse-search-box&amp;t13n_langs=en" jstcache="0"></script>
41 <script type="text/javascript" src="http://www.google.com/coop/cse/brand ?form=cse-search-box&amp;lang=en" jstcache="0"></script>
42 </div>
43 <div id="pageTitle" jstcache="0">
44 <h1 jscontent="getPageTitle()" jstcache="1">Packaging</h1>
45 </div>
46 </div> <!-- /pageHeader -->
47
48 <div id="pageContent" jstcache="0">
49 <!-- SIDENAV -->
50 <div id="leftNav" jstcache="0">
51 <ul jstcache="0">
52 <li jstcache="0"> <a href="index.html" jstcache="0">Home</a></li>
53 <li jstcache="0"> <a href="getstarted.html" jstcache="0">Getting Start ed</a></li>
54 <li jstcache="0"> <a href="overview.html" jstcache="0">Overview</a></l i>
55 <li jstcache="0"> <a href="devguide.html" jstcache="0"><div jstcache=" 0">Developer's Guide</div></a>
56 <ul jstcache="0">
57 <li jstcache="0"><a href="toolstrip.html" jstcache="0">Toolstrips< /a></li>
58 <li jstcache="0"><a href="pageActions.html" jstcache="0">Page Acti ons</a></li>
59 <li jstcache="0"><a href="background_pages.html" jstcache="0">Back ground Pages</a></li>
60 <li jstcache="0"><a href="content_scripts.html" jstcache="0">Conte nt Scripts</a></li>
61 <li jstcache="0"><a href="events.html" jstcache="0">Events</a></li >
62 <li jstcache="0"><a href="tabs.html" jstcache="0">Tabs</a></li>
63 <li jstcache="0"><a href="windows.html" jstcache="0">Windows</a></ li>
64 <li jstcache="0"><a href="bookmarks.html" jstcache="0">Bookmarks</ a></li>
65 <li jstcache="0"><a href="themes.html" jstcache="0">Themes</a></li >
66 <li jstcache="0"><a href="npapi.html" jstcache="0">NPAPI Plugins</ a></li>
67 <li jstcache="0" class="leftNavSelected">Packaging</li>
68 <li jstcache="0">Autoupdate</li>
69 </ul>
70 </li>
71 <li jstcache="0"><a href="tutorials.html" jstcache="0"><div jstcache=" 0">Tutorials</div></a>
72 <ul jstcache="0">
73 <li jstcache="0"><a href="tut_debugging.html" jstcache="0">Debuggi ng</a></li>
74 </ul>
75 </li>
76 <li jstcache="0">Reference
77 <ul jstcache="0">
78 <li jstcache="0"> Formats
79 <ul jstcache="0">
80 <li jstcache="0"><a href="manifest.html" jstcache="0">Manifest Files</a></li>
81 <li jstcache="0"><a href="match_patterns.html" jstcache="0">Ma tch Patterns</a></li>
82 <li jstcache="0">Packages (.crx)</li>
83 </ul>
84 </li>
85 <li jstcache="0"> <a href="api_index.html" jstcache="0">chrome.* A PIs</a> </li>
86 <li jstcache="0"> <a href="api_other.html" jstcache="0">Other APIs </a> </li>
87 </ul>
88 </li>
89 <li jstcache="0"><a href="http://dev.chromium.org/developers/design-doc uments/extensions/samples" jstcache="0">Samples</a></li>
90 </ul>
91 </div>
92
93 <div id="mainColumn" jstcache="0">
94 <!-- TABLE OF CONTENTS -->
95 <div id="toc" jsdisplay="showPageTOC()" jstcache="2">
96 <p jstcache="0">Contents</p>
97 <ol jstcache="0">
98 <li jsselect="getStaticTOC()" jstcache="9" jsinstance="0">
99 <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14" href ="#H2-0">Creating a package</a>
100 <ol jstcache="0">
101 <li jsselect="$this.children" jstcache="22" jsinstance="*0" styl e="display: none; ">
102 <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14"> h3Name</a>
103 </li>
104 </ol>
105 </li><li jsselect="getStaticTOC()" jstcache="9" jsinstance="1">
106 <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14" href ="#update">Updating a package</a>
107 <ol jstcache="0">
108 <li jsselect="$this.children" jstcache="22" jsinstance="*0" styl e="display: none; ">
109 <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14"> h3Name</a>
110 </li>
111 </ol>
112 </li><li jsselect="getStaticTOC()" jstcache="9" jsinstance="*2">
113 <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14" href ="#H2-2">Packaging at the command line</a>
114 <ol jstcache="0">
115 <li jsselect="$this.children" jstcache="22" jsinstance="*0" styl e="display: none; ">
116 <a jscontent="name" jsvalues=".href:'#' + href" jstcache="14"> h3Name</a>
117 </li>
118 </ol>
119 </li>
120 <div jsselect="apiDefinition" jstcache="3" style="display: none; ">
121 <li jstcache="0">
122 <a href="#apiReference" jscontent="'API reference: ' + getModule Name()" jstcache="4">API reference</a>
123 <ol jstcache="0">
124 <li jsdisplay="$this.properties" jstcache="5">
125 <a href="#properties" jstcache="0">Properties</a>
126 <ol jstcache="0">
127 <li jsselect="getPropertyListFromObject($this)" jstcache=" 10">
128 <a jscontent="name" jsvalues=".href:'#property-' + name" href="#property-anchor" jstcache="42">propertyName</a>
129 </li>
130 </ol>
131 </li>
132 <li jsdisplay="functions &amp;&amp; functions.length &gt; 0" j stcache="6">
133 <a href="#methods" jstcache="0">Methods</a>
134 <ol jstcache="0">
135 <li jsselect="functions.sort(sortByName)" jstcache="11">
136 <a jscontent="name" jsvalues=".href:'#method-' + name" h ref="#method-anchor" jstcache="43">methodName</a>
137 </li>
138 </ol>
139 </li>
140 <li jsdisplay="events &amp;&amp; events.length &gt; 0" jstcach e="7">
141 <a href="#events" jstcache="0">Events</a>
142 <ol jstcache="0">
143 <li jsselect="events.sort(sortByName)" jstcache="12">
144 <a jscontent="name" jsvalues=".href:'#event-' + name" hr ef="#event-anchor" jstcache="44">eventName</a>
145 </li>
146 </ol>
147 </li>
148 <li jsdisplay="types &amp;&amp; types.length &gt; 0" jstcache= "8">
149 <a href="#types" jstcache="0">Types</a>
150 <ol jstcache="0">
151 <li jsselect="types.sort(sortByName)" jstcache="38">
152 <a jscontent="id" jsvalues=".href:'#type-' + id" href="# id-anchor" jstcache="45">id</a>
153 </li>
154 </ol>
155 </li>
156 </ol>
157 </li>
158 </div>
159 </ol>
160 </div>
161 <!-- /TABLE OF CONTENTS -->
162
163 <!-- STATIC CONTENT PLACEHOLDER -->
164 <div id="static" jstcache="0"><div id="pageData-title" class="pageData" jstcache="0">Packaging</div>
165 <div id="pageData-showTOC" class="pageData" jstcache="0">true</div>
166
167 <p jstcache="0">
168 Extensions are packaged as signed zip files
169 with the file extension "crx"
170 (for example, <code jstcache="0">myextension.crx</code>).
171 Each extension has its own unique key pair.
172 The public key is used as the unique identifier for the extension.
173 The private key is kept private
174 and used to sign each version of the extension.
175 </p>
176
177 <!--
178 [PENDING: Perhaps mention that once the gallery is up,
179 creating and updating a package will be much easier.
180 Also refer to instructions on submitting an extension
181 for inclusion in the gallery.]
182 -->
183
184 <a name="H2-0" jstcache="0"></a><h2 jstcache="0">Creating a package</h2>
185
186 <p jstcache="0">To package an extension:</p>
187 <ol jstcache="0">
188 <li jstcache="0">
189 Bring up the Extensions page
190 by going to this URL:
191 <blockquote jstcache="0">
192 <b jstcache="0">chrome://extensions</b>
193 </blockquote>
194 </li>
195
196 <li jstcache="0">
197 Click the <b jstcache="0">Pack extension</b> button.
198 A dialog appears.
199 </li>
200
201 <li jstcache="0">
202 In the <b jstcache="0">Extension root directory</b> field,
203 specify the path to the extension's folder —
204 for example, <code jstcache="0">c:\myext</code>.
205 (Ignore the other field;
206 you don't specify a private key file
207 the first time you package a particular extension.)
208 </li>
209
210 <li jstcache="0">
211 Click <b jstcache="0">OK</b>.
212 The packager creates two files:
213 a <code jstcache="0">.crx</code> file,
214 which is the actual extension that can be installed,
215 and a <code jstcache="0">.pem</code> file,
216 which contains the private key.
217 </li>
218 </ol>
219
220
221 <p jstcache="0">
222 <b jstcache="0">Do not lose the private key!</b>
223 Keep the <code jstcache="0">.pem</code> file secret and in a safe place.
224 You'll need it later if you want to do any of the following:
225 </p>
226 <ul jstcache="0">
227 <li jstcache="0"><a href="#update" jstcache="0">Update</a> the extension</li>
228 <li jstcache="0">Import the extension into the extensions gallery,
229 once the gallery becomes available</li>
230 </ul>
231
232 <p jstcache="0">
233 If the extension is successfully packaged, you'll see a dialog like this
234 that tells you where to find
235 the <code jstcache="0">.crx</code> and <code jstcache="0">.pem</code> files:</p>
236 <p jstcache="0"></p>
237
238 <img src="images/package-success.gif" width="554" height="208" jstcache="0">
239
240
241 <h2 id="update" jstcache="0">Updating a package</h2>
242
243 <p jstcache="0">To create an updated version of your extension:</p>
244 <ol jstcache="0">
245 <li jstcache="0">
246 Increase the version number in <code jstcache="0">manifest.json</code>.
247 </li>
248
249 <li jstcache="0">
250 Bring up the Extensions page
251 by going to this URL: <b jstcache="0">chrome://extensions</b>
252 </li>
253
254 <li jstcache="0">
255 In the <b jstcache="0">Extension root directory</b> field,
256 specify the path to the extension's folder —
257 for example, <code jstcache="0">c:\myext</code>.
258 </li>
259
260 <li jstcache="0">
261 In the <b jstcache="0">Private key file</b> field,
262 specify the location of the
263 already generated <code jstcache="0">.pem</code> file for this extension —
264 for example, <code jstcache="0">c:\myext.pem</code>.
265 </li>
266
267 <li jstcache="0">
268 Click <b jstcache="0">OK</b>.
269 </li>
270 </ol>
271
272 <p jstcache="0">If the updated extension is successfully packaged, you'll see a dialog like this:</p>
273
274 <img src="images/update-success.gif" width="298" height="160" jstcache="0">
275
276 <a name="H2-2" jstcache="0"></a><h2 jstcache="0">Packaging at the command line</ h2>
277
278 <p jstcache="0">
279 Another way to package extensions
280 is by invoking <code jstcache="0">chrome.exe</code> at the command line.
281 Use the <code jstcache="0">--pack-extension</code> flag
282 to specify the location of the extension's folder.
283 Use <code jstcache="0">--pack-extension-key</code>
284 to specify the location of the extension's private key file.
285 For example:
286 </p>
287
288 <pre jstcache="0">chrome.exe --pack-extension=<em jstcache="0">ext-folder-path</ em> --pack-extension-key=<em jstcache="0">ext-key-path</em>
289 </pre>
290
291 <p jstcache="0">
292 To suppress the dialog,
293 add <code jstcache="0">--no-message-box</code> to the command.
294 </p>
295 </div>
296
297 <!-- API PAGE -->
298 <div class="apiPage" jsselect="apiDefinition" jstcache="3" style="displa y: none; ">
299 <a name="apiReference" jstcache="0"></a>
300 <h2 jscontent="'API reference: ' + getModuleName()" jstcache="4">API ref erence: chrome.apiname </h2>
301
302 <!-- PROPERTIES -->
303 <div jsdisplay="$this.properties" class="apiGroup" jstcache="5">
304 <a name="properties" jstcache="0"></a>
305 <h3 id="properties" jstcache="0">Properties</h3>
306
307 <div jsselect="getPropertyListFromObject($this)" jstcache="10">
308 <a jsvalues=".name:'property-' + name" jstcache="15"></a>
309 <h4 jscontent="name" jstcache="16">getLastError</h4>
310 <div class="summary" jstcache="0">
311 <!-- Note: intentionally longer 80 columns -->
312 <span jscontent="getModuleName() + '.'" jstcache="23">chrome.ext ension</span><span jscontent="$this.name" jstcache="24">lastError</span>
313 </div>
314 <div transclude="valueTemplate" jstcache="17">
315 </div>
316 </div>
317
318 </div> <!-- /apiGroup -->
319
320 <!-- METHODS -->
321 <div jsdisplay="functions &amp;&amp; functions.length &gt; 0" class="a piGroup" id="methods" jstcache="6">
322 <a name="methods" jstcache="0"></a>
323 <h3 jstcache="0">Methods</h3>
324
325 <!-- iterates over all functions -->
326 <div class="apiItem" jsselect="functions.sort(sortByName)" jstcache= "11">
327 <a jsvalues=".name:'method-' + name" jstcache="18"></a> <!-- metho d-anchor -->
328 <h4 jscontent="name" jstcache="16">method name</h4>
329
330 <div class="summary" jstcache="0"><span jsdisplay="returns" jscont ent="getTypeName(returns)" jstcache="25">void</span>
331 <!-- Note: intentionally longer 80 columns -->
332 <span jscontent="getFullyQualifiedFunctionName($this)" jstcach e="26">chrome.module.methodName</span>(<span jsselect="parameters" jsvalues="cla ss:optional ? 'optional' : ''" jstcache="27"><span jsdisplay="$index" jstcache=" 33">, </span><span jscontent="getTypeName($this)" jstcache="34"></span>
333 <var jstcache="0"><span jscontent="name" jstcache="16"></s pan></var></span>)</div>
334
335 <div class="description" jstcache="0">
336 <p class="todo" jsdisplay="!description" jstcache="28">Undocumen ted.</p>
337 <p jsdisplay="description" jsvalues=".innerHTML:description" jst cache="29">
338 A description from the json schema def of the function goes he re.
339 </p>
340
341 <!-- PARAMETERS -->
342 <h4 jstcache="0">Parameters</h4>
343 <dl jstcache="0">
344 <div jsselect="parameters" jstcache="35">
345
346 <!-- VALUE: This is a subtemplate that is used elsewhere
347 via jsTemplate *transclude* -->
348 <div id="valueTemplate" jstcache="0">
349 <dt jstcache="0">
350 <var jsdisplay="$this.name" jscontent="$this.name" jstca che="46">paramName</var>
351 <em jstcache="0">
352
353 <!-- TYPE -->
354 <div style="display:inline" jstcache="0">
355 (
356 <span class="optional" jsdisplay="optional" jstc ache="47">optional</span>
357 <span id="typeTemplate" jstcache="0">
358 <span jsdisplay="getTypeRef($this)" jstcache=" 48">
359 <a jsvalues=".href: getTypeRefPage($this) + '#type-' + getTypeRef($this)" jscontent="getTypeRef($this)" jstcache="50"> Type< /a>
360 </span>
361 <span jsdisplay="!getTypeRef($this)" jstcache= "49">
362 <span jsdisplay="isArray($this)" jstcache="5 1">
363 array of <span jsselect="items" jstcache=" 53"><span transclude="typeTemplate" jstcache="54"></span></span>
364 </span>
365 <span jsdisplay="!isArray($this)" jscontent= "getTypeName($this)" jstcache="52">paramType</span>
366 </span>
367 </span>
368 )
369 </div>
370
371 </em>
372 </dt>
373 <dd class="todo" jsdisplay="!$this.description" jstcache=" 39">
374 Undocumented.
375 </dd>
376 <dd jsdisplay="$this.description" jsvalues=".innerHTML:$th is.description" jstcache="40">
377 Description of this parameter from the json schema.
378 </dd>
379
380 <!-- OBJECT PROPERTIES -->
381 <dd jsdisplay="shouldExpandObject($this)" jstcache="41">
382 <dl jstcache="0">
383 <div jsselect="getPropertyListFromObject($this)" jstca che="10">
384 <div transclude="valueTemplate" jstcache="17">
385 </div>
386 </div>
387 </dl>
388 </dd>
389 </div> <!-- /VALUE -->
390
391 </div>
392 </dl>
393
394 <!-- RETURNS -->
395 <h4 jsdisplay="returns" jstcache="30">Returns</h4>
396 <dl jstcache="0">
397 <div jsselect="returns" jstcache="36">
398 <div transclude="valueTemplate" jstcache="17">
399 </div>
400 </div>
401 </dl>
402
403 <!-- CALLBACK -->
404 <div jsdisplay="hasCallback(parameters)" jstcache="31">
405 <div jsselect="getCallbackParameters(parameters)" jstcache="37 ">
406 <h4 jstcache="0">Callback function</h4>
407 <p jstcache="0">
408 If you specify the <em jstcache="0">callback</em> parameter,
409 it should specify a function that looks like this:
410 </p>
411
412 <!-- Note: intentionally longer 80 columns -->
413 <pre jstcache="0">function(<span jscontent="getSignatureString (parameters)" jstcache="32">Type param1, Type param2</span>) <span class="subdue d" jstcache="0">{...}</span>);</pre>
414 <dl jstcache="0">
415 <div jsselect="parameters" jstcache="35">
416 <div transclude="valueTemplate" jstcache="17">
417 </div>
418 </div>
419 </dl>
420 </div>
421 </div>
422
423 </div> <!-- /description -->
424
425 </div> <!-- /apiItem -->
426
427 </div> <!-- /apiGroup -->
428
429 <!-- EVENTS -->
430 <div jsdisplay="events &amp;&amp; events.length &gt; 0" class="apiGrou p" jstcache="7">
431 <a name="events" jstcache="0"></a>
432 <h3 id="events" jstcache="0">Events</h3>
433
434 <!-- iterates over all events -->
435 <div jsselect="events.sort(sortByName)" class="apiItem" jstcache="12 ">
436 <a jsvalues=".name:'event-' + name" jstcache="19"></a>
437 <h4 jscontent="name" jstcache="16">event name</h4>
438
439 <div class="summary" jstcache="0">
440 <!-- Note: intentionally longer 80 columns -->
441 <span jscontent="getModuleName() + '.'" class="subdued" jstcache ="23">chrome.bookmarks</span><span jscontent="name" jstcache="16">onEvent</span> <span class="subdued" jstcache="0">.addListener</span>(function(<span jscontent= "getSignatureString(parameters)" jstcache="32">Type param1, Type param2</span>) <span class="subdued" jstcache="0">{...}</span>);
442 </div>
443
444 <div class="description" jstcache="0">
445 <p class="todo" jsdisplay="!description" jstcache="28">Undocumen ted.</p>
446 <p jsdisplay="description" jsvalues=".innerHTML:description" jst cache="29">
447 A description from the json schema def of the event goes here.
448 </p>
449
450 <!-- PARAMETERS -->
451 <h4 jstcache="0">Parameters</h4>
452 <dl jstcache="0">
453 <div jsselect="parameters" jstcache="35">
454 <div transclude="valueTemplate" jstcache="17">
455 </div>
456 </div>
457 </dl>
458
459 </div> <!-- /decription -->
460
461 </div> <!-- /apiItem -->
462
463 </div> <!-- /apiGroup -->
464
465 <!-- TYPES -->
466 <div jsdisplay="types &amp;&amp; types.length &gt; 0" class="apiGroup" jstcache="8">
467 <a name="types.sort(sortByName)" jstcache="0"></a>
468 <h3 id="types" jstcache="0">Types</h3>
469
470 <!-- iterates over all types -->
471 <div jsselect="types" class="apiItem" jstcache="13">
472 <a jsvalues=".name:'type-' + id" jstcache="20"></a>
473 <h4 jscontent="id" jstcache="21">type name</h4>
474
475 <div transclude="valueTemplate" jstcache="17">
476 </div>
477
478 </div> <!-- /apiItem -->
479
480 </div> <!-- /apiGroup -->
481
482 </div> <!-- /apiPage -->
483 </div> <!-- /mainColumn -->
484 </div> <!-- /pageContent -->
485 <div id="pageFooter" --="" jstcache="0">
486 <p jstcache="0">
487 Except as otherwise <a href="http://code.google.com/policies.html#restrictions " jstcache="0">noted</a>,
488 the content of this page is licensed under the <a rel="license" href="http://c reativecommons.org/licenses/by/3.0/" jstcache="0">Creative Commons
489 Attribution 3.0 License</a>, and code samples are licensed under the
490 <a rel="license" href="http://code.google.com/google_bsd_license.html" jstcach e="0">BSD License</a>.
491 </p>
492 <p jstcache="0">
493 ©2009 Google
494 </p>
495 </div> <!-- /pageFooter -->
496 </div> <!-- /container -->
497 </body></html>
498 #EOF
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698