1<div id="pageData-name" class="pageData">Other Deployment Options</div> 2<div id="pageData-showTOC" class="pageData">true</div> 3 4<p> 5Usually, users install their own extensions. 6But sometimes you might want an extension 7to be installed automatically. 8Here are two typical cases: 9</p> 10 11<ul> 12 <li> 13 An extension is associated with some other software, 14 and the extension should be installed 15 whenever the user installs that other software. 16 The extension could also be uninstalled 17 when the user removes that other software. 18 </li> 19 <li> 20 A network admin wants to install the same extensions 21 throughout the company. 22 </li> 23</ul> 24 25<p> 26An extension that's installed automatically is known as an 27<em>external extension</em>. 28Google Chrome supports two ways of 29installing external extensions: 30</p> 31 32<ul> 33 <li> Using a preferences JSON file </li> 34 <li> Using the Windows registry (Windows only) </li> 35</ul> 36 37<p> 38Both ways support installing an extension from a <code>.crx</code> extension 39file on the user's computer. The preferences JSON file also supports installing 40an extension hosted at an 41<a href="autoupdate.html#H2-1">update URL</a>. 42See <a href="hosting.html">hosting</a> for details on hosting an extension. 43</p> 44 45<h2 id="prereqs">Before you begin</h2> 46 47<p> 48First, package a 49<a href="packaging.html"><code>.crx</code> file</a> 50and make sure that it installs successfully. 51</p> 52<p> 53If you wish to install from an 54 <a href="autoupdate.html#H2-1">update URL</a>, ensure that the extension 55is properly <a href="hosting.html">hosted</a>. 56</p> 57 58<p> 59Then, before you edit the preferences file or the registry, 60make a note of the following: 61</p> 62 63<ul> 64 <li> The intended <b>location</b> of the extension's <code>.crx</code> file, 65 or the update URL from which it is served </li> 66 <li> The extension's <b>version</b> 67 (from the manifest file or the <b>chrome://extensions</b> page) </li> 68 <li> The extension's <b>ID</b> 69 (from the <b>chrome://extensions</b> page 70 when you've loaded the packed extension) </li> 71</ul> 72 73<p> 74The following examples assume the version is <code>1.0</code> 75and the ID is <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>. 76</p> 77 78<h2 id="preferences">Using a preferences file</h2> 79 80<p class="note"> 81<b>Windows note:</b> 82Until <a href="http://crbug.com/41902">bug 41902</a> is fixed, 83you might want to use the <a href="#registry">Windows registry</a> 84instead of the preferences file. 85 86</p> 87 88<ol> 89<li>If you are installing from a file, make the <code>.crx</code> extension 90file available to the machine you want to install the extension on. 91(Copy it to a local directory or to a network share for example, 92<code>\\server\share\extension.crx</code> 93or <code>/home/share/extension.crx</code>.) 94</li> 95<li>Locate the <code>external_extensions.json</code> file 96 under the Google Chrome installation directory. 97 If the file doesn't exist, create it. 98 The location depends on the operating system. 99 <dl> 100 <dt> Windows: </dt> 101 <dd> <code><em>chrome_root</em>\Application\<em>chrome_version</em>\Extensions\</code> 102 <br /> 103 Example: <code>c:\Users\Me\AppData\Local\Google\Chrome\Application\6.0.422.0\Extensions\</code> 104 </dd> 105 <dt> Mac OS X: </dt> 106 <dd> <code>/Applications/Google Chrome.app/Contents/Extensions/</code> </dd> 107 <dt> Linux: </dt> 108 <dd> <code>/opt/google/chrome/extensions/</code> <br> 109 <b>Note:</b> Use <code>chmod</code> if necessary 110 to make sure that <code>extensions/external_extensions.json</code> 111 is world-readable. 112 </dd> 113 </dl> 114</li> 115<li> Add an entry to <code>external_extensions.json</code> 116for your extension's ID. If you are installing from a file, specify the 117extension's location and version with fields named "external_crx" and 118"external_version". 119 120Example: 121<pre>{ 122 "aaaaaaaaaabbbbbbbbbbcccccccccc": { 123 "external_crx": "/home/share/extension.crx", 124 "external_version": "1.0" 125 } 126}</pre> 127 128<p class="note"> 129<b>Note:</b> 130You need to escape 131each <code>\</code> character in the location. 132For example, 133<code>\\server\share\extension.crx</code> would be 134<code>"\\\\server\\share\\extension.crx"</code>. 135</p> 136<p> 137If you are installing from an update URL, specify the extension's update URL 138with field name "external_update_url". 139</p> 140Example: 141<pre>{ 142 "aaaaaaaaaabbbbbbbbbbcccccccccc": { 143 "external_update_url": "http://myhost.com/mytestextension/updates.xml" 144 } 145}</pre> 146</li> 147 148<li>Save the JSON file. </li> 149<li>Launch Google Chrome and go to <b>chrome://extensions</b>; 150you should see the extension listed. </li> 151</ol> 152 153<h2 id="registry">Using the Windows registry</h2> 154 155<ol> 156<li>Make the <code>.crx</code> extension file available 157to the machine you want to install the extension on. 158(Copy it to a local directory or to a network share — 159for example, <code>\\server\share\extension.crx</code>.) 160</li> 161<li>Find or create the following key in the 162registry: 163<ul> 164 <li> 32-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions</code> </li> 165 <li> 64-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions</code> </li> 166</ul> 167</li> 168 169<li>Create a new key (folder) 170under the <b>Extensions</b> key with the 171same name as the ID of your extension 172(for example, <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>). 173</li> 174<li>Create two string values (<code>REG_SZ</code>) named "path" and "version", 175 and set them to the extension's location and version. 176 For example: 177<ul> 178 <li>path: <code>\\server\share\extension.crx</code> </li> 179 <li>version: <code>1.0</code> </li> 180</ul> 181</li> 182<li>Launch the browser and go to 183<b>chrome://extensions</b>; you should 184see the extension listed. </li> 185</ol> 186 187<h2 id="updating">Updating and uninstalling</h2> 188 189<p>Google Chrome scans the metadata entries 190in the preferences and registry 191each time the browser starts, and makes 192any necessary changes to the installed 193external extensions. </p> 194 195<p>To update your extension to a new version, 196update the file, and then update the version 197in the preferences or registry. </p> 198 199<p>To uninstall your extension 200(for example, if your software is uninstalled), 201remove the metadata from the preferences file 202or registry. </p> 203 204<h2 id="faq">FAQ</h2> 205 206<p> 207This section answers common questions about external extensions. 208</p> 209 210<br> 211 212<p><b>Can I specify a URL as a path to the external extension?</b> </p> 213<p>Yes, if you host the extension as explained in 214<a href="hosting.html">hosting</a>. 215</p> 216 217<br> 218 219<p><b>What are some common mistakes when installing with the preferences 220file?</b></p> 221<ul> 222 <li> 223 Not specifying the same id/version 224 as the one listed in the <code>.crx</code> </li> 225 <li> 226 <code>external_extensions.json</code> is in the wrong location </li> 227 <li> 228 Syntax error in JSON file 229 (forgetting to separate entries with comma or 230 leaving a trailing comma somewhere) </li> 231 <li> 232 Extra curly brackets around the top level dictionary </li> 233 <li> 234 JSON file entry points to the wrong path 235 to the <code>.crx</code> (or path specified but no filename) </li> 236 <li> 237 Backslashes in UNC path not escaped 238 (for example, <code>"\\server\share\file"</code> is wrong; 239 it should be <code>"\\\\server\\share\\extension"</code>) </li> 240 <li> 241 Permissions problems on a network share </li> 242</ul> 243 244<br> 245 246<p><b>What are some common mistakes when installing with the registry?</b> </p> 247<ul> 248 <li>Not specifying the same id/version 249 as the one listed in the <code>.crx</code> </li> 250 <li>Key created in the wrong location in the registry </li> 251 <li>Registry entry points to the wrong path to the <code>.crx</code> file 252 (or path specified but no filename) </li> 253 <li>Permissions problems on a network share </li> 254</ul> 255 256<br> 257 258<p><b>What if the user uninstalls the extension?</b> </p> 259<p>If the user uninstalls the extension through the UI, it will no 260longer be installed or updated on each startup. In other words, the 261external extension is blacklisted. </p> 262 263<br> 264 265<p><b>How do I get off the blacklist?</b> </p> 266<p>If the user uninstalls your extension, you should respect that 267decision. However, if you (the developer) accidentally uninstalled 268your extension through the UI, 269you can remove the blacklist tag 270by installing the extension normally 271through the UI, and then uninstalling it. </p> 272