Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <h1>Other Deployment Options</h1> | 1 <h1>Other Deployment Options</h1> |
| 2 | 2 |
| 3 | |
| 4 <p> | 3 <p> |
| 5 Usually, users install their own extensions. | 4 Usually, users install their own extensions. |
| 6 But sometimes you might want an extension | 5 But sometimes you might want an extension |
| 7 to be installed automatically. | 6 to be installed automatically. |
| 8 Here are two typical cases: | 7 Here are two typical cases: |
| 9 </p> | 8 </p> |
| 10 | 9 |
| 11 <ul> | 10 <ul> |
| 12 <li> | 11 <li> |
| 13 An extension is associated with some other software, | 12 An extension is associated with some other software, |
| 14 and the extension should be installed | 13 and the extension should be installed |
| 15 whenever the user installs that other software. | 14 whenever the user installs that other software. |
| 16 The extension could also be uninstalled | 15 The extension could also be uninstalled |
| 17 when the user removes that other software. | 16 when the user removes that other software. |
| 18 </li> | 17 </li> |
| 19 <li> | 18 <li> |
| 20 A network admin wants to install the same extensions | 19 A network admin wants to install the same extensions |
| 21 throughout the company. | 20 throughout the company. |
| 22 </li> | 21 </li> |
| 23 </ul> | 22 </ul> |
| 24 | 23 |
| 25 <p> | 24 <p> |
| 26 An extension that's installed automatically is known as an | 25 An extension that's installed automatically is known as an |
| 27 <em>external extension</em>. | 26 <em>external extension</em>. |
| 28 Google Chrome supports two ways of | 27 Google Chrome supports two ways of |
| 29 installing external extensions: | 28 installing external extensions: |
| 30 </p> | 29 </p> |
| 31 | 30 |
| 32 <ul> | 31 <ul> |
| 33 <li> Using a preferences JSON file </li> | 32 <li> Using a preferences JSON file (Mac OS X and Linux only)</li> |
| 34 <li> Using the Windows registry (Windows only) </li> | 33 <li> Using the Windows registry (Windows only) </li> |
| 35 </ul> | 34 </ul> |
| 36 | 35 |
| 37 <p> | 36 <p> |
| 38 Both ways support installing an extension from a <code>.crx</code> extension | 37 Both ways support installing an extension hosted at an |
| 39 file on the user's computer. The preferences JSON file also supports installing | 38 <code>update_URL</code>. |
| 40 an extension hosted at an | 39 In the Windows registry, |
| 41 <a href="autoupdate.html#update_url">update URL</a>. | 40 the <code>update_URL</code> must point to the Chrome Web Store |
| 42 See <a href="hosting.html">hosting</a> for details on hosting an extension. | 41 where the extension is hosted. |
| 42 </p> | |
| 43 | |
| 44 <p> | |
| 45 In the preferences file, | |
| 46 it can point to your own server where you are hosting the extension | |
| 47 (see <a href="autoupdate.html#update_url">autoupdating</a>). | |
| 48 The preferences JSON file also supports installing | |
| 49 an extension from a <code>.crx</code> extension | |
| 50 file on the user's computer | |
| 51 (see <a href="hosting.html">hosting</a>). | |
| 52 </p> | |
| 53 | |
| 54 | |
| 55 <p class="note"> | |
| 56 <b>Install extensions from your website:</b> | |
| 57 The safest option for your users is to publish your extension | |
| 58 in the Chrome Web Store. | |
| 59 Instead of hosting your own extension, | |
| 60 publish it in the store, and link to the store install using | |
| 61 <a href="https://developers.google.com/chrome/web-store/docs/inline_installation ">inline installation</a>. | |
| 43 </p> | 62 </p> |
| 44 | 63 |
| 45 <h2 id="prereqs">Before you begin</h2> | 64 <h2 id="prereqs">Before you begin</h2> |
| 46 | 65 |
| 47 <p> | 66 <p> |
| 48 First, package a | 67 First, <a href="/webstore/publish.html">publish</a> |
| 49 <a href="packaging.html"><code>.crx</code> file</a> | 68 the extension in the Chrome Web Store, |
| 69 or package a <a href="packaging.html"><code>.crx</code> file</a> | |
| 50 and make sure that it installs successfully. | 70 and make sure that it installs successfully. |
| 51 </p> | 71 </p> |
| 72 | |
| 73 | |
| 74 <p class="warning"> | |
| 75 <b>Windows installs must come from Chrome Web Store:</b><br> | |
| 76 As of Chrome 33, | |
| 77 no external installs are allowed from a path to a local <code>.crx</code> | |
| 78 (see <a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-mal icious.html">Protecting Windows users from malicious extensions</a>). | |
| 79 </p> | |
| 80 | |
| 52 <p> | 81 <p> |
| 53 If you wish to install from an | 82 If installing from an |
| 54 <a href="autoupdate.html#update_url">update URL</a>, ensure that the extension | 83 <a href="autoupdate.html#update_url">update URL</a>, ensure that the extension |
| 55 is properly <a href="hosting.html">hosted</a>. | 84 is properly <a href="hosting.html">hosted</a>. |
| 56 </p> | 85 </p> |
| 57 | 86 |
| 58 <p> | 87 <p> |
| 59 Then, before you edit the preferences file or the registry, | 88 Before you edit the preferences file or the registry, |
| 60 make a note of the following: | 89 make a note of the following: |
| 61 </p> | 90 </p> |
| 62 | 91 |
| 63 <ul> | 92 <ul> |
| 64 <li> The intended <b>location</b> of the extension's <code>.crx</code> file, | 93 <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> | 94 or the update URL from which it is served </li> |
| 66 <li> The extension's <b>version</b> | 95 <li> The extension's <b>version</b> |
| 67 (from the manifest file or the <b>chrome://extensions</b> page) </li> | 96 (from the manifest file or the <b>chrome://extensions</b> page) </li> |
| 68 <li> The extension's <b>ID</b> | 97 <li> The extension's <b>ID</b> |
| 69 (from the <b>chrome://extensions</b> page | 98 (from the <b>chrome://extensions</b> page |
| 70 when you've loaded the packed extension) </li> | 99 when you've loaded the packed extension) </li> |
| 71 </ul> | 100 </ul> |
| 72 | 101 |
| 73 <p> | 102 <p> |
| 74 The following examples assume the version is <code>1.0</code> | 103 The following examples assume the version is <code>1.0</code> |
| 75 and the ID is <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>. | 104 and the ID is <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>. |
| 76 </p> | 105 </p> |
| 77 | 106 |
| 78 <h2 id="preferences">Using a preferences file</h2> | 107 <h2 id="preferences">Using a preferences file</h2> |
| 79 | 108 |
| 80 <p class="note"> | 109 <br> |
| 81 <b>Windows note:</b> | |
| 82 Until <a href="http://crbug.com/41902">bug 41902</a> is fixed, | |
| 83 you might want to use the <a href="#registry">Windows registry</a> | |
| 84 instead of the preferences file. | |
| 85 </p> | |
| 86 | 110 |
| 87 <p class="note"> | 111 <p class="note"> |
| 88 <b>Note:</b> | 112 <b>Mac OS X and Linux only:</b> |
| 89 Previous versions of Google Chrome used an | 113 Do not use the preferences file for Windows. |
|
saroop
2014/01/16 22:16:17
Should we link to the registry approach for Window
mkearney1
2014/01/21 21:17:17
Done.
| |
| 90 <code>external_extensions.json</code> file to specify which extensions to | |
| 91 install. This file has been deprecated in favor of individual <code>.json</code> | |
| 92 files, one per extension. | |
| 93 </p> | 114 </p> |
| 94 | 115 |
| 95 <ol> | 116 <ol> |
| 96 <li>If you are installing from a file, make the <code>.crx</code> extension | 117 <li>If you are installing from a file, make the <code>.crx</code> extension |
| 97 file available to the machine you want to install the extension on. | 118 file available to the machine you want to install the extension on. |
| 98 (Copy it to a local directory or to a network share for example, | 119 (Copy it to a local directory or to a network share for example, |
| 99 <code>\\server\share\extension.crx</code> | 120 <code>\\server\share\extension.crx</code> |
| 100 or <code>/home/share/extension.crx</code>.) | 121 or <code>/home/share/extension.crx</code>.) |
| 101 </li> | 122 </li> |
| 102 | 123 |
| 103 <li>Create a file with the following name in one of the folders listed below: | 124 <li>Create a file with the following name in one of the folders listed below: |
| 104 <code>aaaaaaaaaabbbbbbbbbbcccccccccc.json</code> where the file name (without the extension) | 125 <code>aaaaaaaaaabbbbbbbbbbcccccccccc.json</code> where the file name (without the extension) |
| 105 corresponds to your extension's ID. | 126 corresponds to your extension's ID. |
| 106 The location depends on the operating system. | 127 The location depends on the operating system. |
| 107 <dl> | 128 <dl> |
| 108 <dt> Windows: </dt> | |
| 109 <dd> <code><em>chrome_root</em>\Application\<em>chrome_version</em>\Extensio ns\</code> | |
| 110 <br /> | |
| 111 Example: <code>c:\Users\Me\AppData\Local\Google\Chrome\Application\6.0.422.0 \Extensions\</code> | |
| 112 </dd> | |
| 113 <dt> Mac OS X:</dt> | 129 <dt> Mac OS X:</dt> |
| 114 <dd>For a specific user: <code>~USERNAME/Library/Application Support/Google/ Chrome/External Extensions/</code><br> | 130 <dd>For a specific user: <code>~USERNAME/Library/Application Support/Google/ Chrome/External Extensions/</code><br> |
| 115 For all users: <code>/Library/Application Support/Google/Chrome/External Extensions/</code> | 131 For all users: <code>/Library/Application Support/Google/Chrome/External Extensions/</code> |
| 116 <p>The external extension file for all users is read only if every directory in the path is owned by the user <code>root</code>, has the group <code>admin</ code> or <code>wheel</code>, and is not world writable. The path must also be f ree of symbolic links. These restrictions prevent an unprivileged user from cau sing extensions to be installed for all users. See <a href="#troubleshooting">t roubleshooting</a> for details.</p> | 132 <p>The external extension file for all users is read only if every directory in the path is owned by the user <code>root</code>, has the group <code>admin</ code> or <code>wheel</code>, and is not world writable. The path must also be f ree of symbolic links. These restrictions prevent an unprivileged user from cau sing extensions to be installed for all users. See <a href="#troubleshooting">t roubleshooting</a> for details.</p> |
| 117 <p class="note"> | 133 <p class="note"> |
| 118 <b>Note:</b> The above path for all users was added in Chrome 16. Prior ver sions used a different path:<br/> | 134 <b>Note:</b> The above path for all users was added in Chrome 16. Prior ver sions used a different path:<br/> |
| 119 <code>/Applications/Google Chrome.app/Contents/Extensions/</code> | 135 <code>/Applications/Google Chrome.app/Contents/Extensions/</code> |
| 120 This path was deprecated in version 17. Support was removed in version 20. Use one of the paths above instead.</p> | 136 This path was deprecated in version 17. Support was removed in version 20. Use one of the paths above instead.</p> |
| 121 </dd> | 137 </dd> |
| 122 | 138 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 167 If another browser locale is selected that is not supported by the extension, | 183 If another browser locale is selected that is not supported by the extension, |
| 168 the external extensions will be uninstalled. If "supported_locales" list | 184 the external extensions will be uninstalled. If "supported_locales" list |
| 169 is missing, the extension will be installed for any locale. | 185 is missing, the extension will be installed for any locale. |
| 170 </p> | 186 </p> |
| 171 Example: | 187 Example: |
| 172 <pre>{ | 188 <pre>{ |
| 173 "external_update_url": "http://myhost.com/mytestextension/updates.xml", | 189 "external_update_url": "http://myhost.com/mytestextension/updates.xml", |
| 174 "supported_locales": [ "en", "fr", "de" ] | 190 "supported_locales": [ "en", "fr", "de" ] |
| 175 }</pre> | 191 }</pre> |
| 176 </li> | 192 </li> |
| 177 <li>Save the JSON file. </li> | 193 <li>Save the JSON file.</li> |
| 178 <li>Launch Google Chrome and go to <b>chrome://extensions</b>; | 194 <li>Launch Google Chrome and go to <b>chrome://extensions</b>; |
| 179 you should see the extension listed. </li> | 195 you should see the extension listed. </li> |
| 180 </ol> | 196 </ol> |
| 181 | 197 |
| 198 <p class="note"> | |
| 199 <b>Note:</b> | |
| 200 Previous versions of Google Chrome used an | |
| 201 <code>external_extensions.json</code> file to specify which extensions to | |
| 202 install. This file has been deprecated in favor of individual <code>.json</code> | |
| 203 files, one per extension. | |
| 204 </p> | |
| 205 | |
| 182 <h3 id="troubleshooting">Troubleshooting Mac OS permissions problems</h3> | 206 <h3 id="troubleshooting">Troubleshooting Mac OS permissions problems</h3> |
| 183 | 207 |
| 184 <p>On Mac OS, the external extensions files for all users are only read if file system permissions prevent unprivileged users from changing it. If you do not s ee external extensions installed when Chrome is launched, there may be a permiss ions problem with the external extensions preferences files. To see if this is the problem, follow these steps:</p> | 208 <p>On Mac OS, the external extensions files for all users are only read if file system permissions prevent unprivileged users from changing it. If you do not s ee external extensions installed when Chrome is launched, there may be a permiss ions problem with the external extensions preferences files. To see if this is the problem, follow these steps:</p> |
| 185 | 209 |
| 186 <ol> | 210 <ol> |
| 187 <li> Launch the Console program. You can find it under /Applications/Utilitie s/Console. </li> | 211 <li> Launch the Console program. You can find it under /Applications/Utilitie s/Console. </li> |
| 188 <li> If the leftmost icon in the Console says "Show Log List", click that icon . A second column appears at the left. </li> | 212 <li> If the leftmost icon in the Console says "Show Log List", click that icon . A second column appears at the left. </li> |
| 189 <li> Click "Console Messages" in the left pane. </li> | 213 <li> Click "Console Messages" in the left pane. </li> |
| 190 <li> Search for the string <b>Can not read external extensions</b>. If there is a problem reading the external extensions files, you will see an error messag e. Look for another error message directly above it, which should explain the i ssue. For example, if you see the following error: | 214 <li> Search for the string <b>Can not read external extensions</b>. If there is a problem reading the external extensions files, you will see an error messag e. Look for another error message directly above it, which should explain the i ssue. For example, if you see the following error: |
| 191 "Path /Library/Application Support/Google/Chrome is owned by the wrong grou p", you need to use <code>chgrp</code> or the Finder's Get Info dialog to change the directory's group owner to the Administrator group.</li> | 215 "Path /Library/Application Support/Google/Chrome is owned by the wrong grou p", you need to use <code>chgrp</code> or the Finder's Get Info dialog to change the directory's group owner to the Administrator group.</li> |
| 192 <li> After fixing the issue, relaunch Chrome. Test that the external extensio n is now installed. It is possible that one permissions error keeps Chrome from detecting a second error. If the external extension was not installed, repeat these steps until you do not see an error in the Console application. | 216 <li> After fixing the issue, relaunch Chrome. Test that the external extensio n is now installed. It is possible that one permissions error keeps Chrome from detecting a second error. If the external extension was not installed, repeat these steps until you do not see an error in the Console application. |
| 193 </ol> | 217 </ol> |
| 194 | 218 |
| 195 <h2 id="registry">Using the Windows registry</h2> | 219 <h2 id="registry">Using the Windows registry</h2> |
| 196 | 220 |
| 197 <ol> | 221 <ol> |
| 198 <li>Make the <code>.crx</code> extension file available | |
| 199 to the machine you want to install the extension on. | |
| 200 (Copy it to a local directory or to a network share — | |
| 201 for example, <code>\\server\share\extension.crx</code>.) | |
| 202 </li> | |
| 203 <li>Find or create the following key in the | 222 <li>Find or create the following key in the |
| 204 registry: | 223 registry: |
| 205 <ul> | 224 <ul> |
| 206 <li> 32-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extension s</code> </li> | 225 <li> 32-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extension s</code> </li> |
| 207 <li> 64-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chro me\Extensions</code> </li> | 226 <li> 64-bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chro me\Extensions</code> </li> |
| 208 </ul> | 227 </ul> |
| 209 </li> | 228 </li> |
| 210 | 229 |
| 211 <li>Create a new key (folder) | 230 <li>Create a new key (folder) |
| 212 under the <b>Extensions</b> key with the | 231 under the <b>Extensions</b> key with the |
| 213 same name as the ID of your extension | 232 same name as the ID of your extension |
| 214 (for example, <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>). | 233 (for example, <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>). |
| 215 </li> | 234 </li> |
| 216 <li>Create two string values (<code>REG_SZ</code>) named "path" and "version", | 235 <li>In your extension key, |
| 217 and set them to the extension's location and version. | 236 create a property, "update_url", and set it to the value: |
| 218 For example: | 237 "https://clients2.google.com/service/update2/crx" |
| 219 <ul> | 238 (this points to your extension's crx in the Chrome Web Store): |
| 220 <li>path: <code>\\server\share\extension.crx</code> </li> | 239 <pre>{ |
| 221 <li>version: <code>1.0</code> </li> | 240 "update_url": "https://clients2.google.com/service/update2/crx" |
| 222 </ul> | 241 }</pre> |
| 223 </li> | 242 </li> |
| 224 <li>Launch the browser and go to | 243 <li>Launch the browser and go to |
| 225 <b>chrome://extensions</b>; you should | 244 <b>chrome://extensions</b>; you should |
| 226 see the extension listed. </li> | 245 see the extension listed. </li> |
| 227 </ol> | 246 </ol> |
| 228 | 247 |
| 229 <h2 id="updating">Updating and uninstalling</h2> | 248 <h2 id="updating">Updating and uninstalling</h2> |
| 230 | 249 |
| 231 <p>Google Chrome scans the metadata entries | 250 <p>Google Chrome scans the metadata entries |
| 232 in the preferences and registry | 251 in the preferences and registry |
| 233 each time the browser starts, and makes | 252 each time the browser starts, and makes |
| 234 any necessary changes to the installed | 253 any necessary changes to the installed |
| 235 external extensions. </p> | 254 external extensions. </p> |
| 236 | 255 |
| 237 <p>To update your extension to a new version, | 256 <p>To update your extension to a new version, |
| 238 update the file, and then update the version | 257 update the file, and then update the version |
| 239 in the preferences or registry. </p> | 258 in the preferences or registry. </p> |
| 240 | 259 |
| 241 <p>To uninstall your extension | 260 <p>To uninstall your extension |
| 242 (for example, if your software is uninstalled), | 261 (for example, if your software is uninstalled), |
| 243 remove your preference file (aaaaaaaaaabbbbbbbbbbcccccccccc.json) | 262 remove your preference file (aaaaaaaaaabbbbbbbbbbcccccccccc.json) |
| 244 or the metadata from the registry. </p> | 263 or the metadata from the registry. </p> |
| 245 | 264 |
| 246 <h2 id="faq">FAQ</h2> | 265 <h2 id="faq">FAQ</h2> |
| 247 | 266 |
| 248 <p> | 267 <p> |
| 249 This section answers common questions about external extensions. | 268 This section answers common questions about external extensions. |
| 250 </p> | 269 </p> |
| 251 | 270 |
| 252 <br> | 271 <p><b>Will the methodology for allowing a “pre-install” still be supported |
| 272 by Google Chrome from M33 onwards?</b></p> | |
| 273 <p>Yes, but only as an install from a Chrome Web Store | |
| 274 <code>update_URL</code>, | |
| 275 not from a local file path.</p> | |
| 253 | 276 |
| 254 <p><b>Can I specify a URL as a path to the external extension?</b> </p> | 277 <p><b>Can I specify a URL as a path to the external extension?</b> </p> |
| 255 <p>Yes, if you use a <a href="#preferences">preferences JSON</a> file. The | 278 <p>Yes, use the <a href="#preferences">preferences JSON</a> file |
| 256 extension must be hosted as explained in <a href="hosting.html">hosting</a>. | 279 for Mac OS X and Linux; the <a href=#"registry">registry</a> for Windows. |
| 257 Use the "external_update_url" property to point to an | 280 The extension must be hosted as explained in |
| 281 <a href="hosting.html">hosting</a>. | |
| 282 In the preferences file, | |
| 283 use the "external_update_url" property to point to an | |
| 258 <a href="autoupdate.html#update_manifest">update manifest</a> that has the URL f or your | 284 <a href="autoupdate.html#update_manifest">update manifest</a> that has the URL f or your |
| 259 extension.</p> | 285 extension. |
| 260 | 286 In the Windows registry, |
| 261 <br> | 287 use the "update_url" property.</p> |
| 262 | 288 |
| 263 <p><b>What are some common mistakes when installing with the preferences | 289 <p><b>What are some common mistakes when installing with the preferences |
| 264 file?</b></p> | 290 file?</b></p> |
| 265 <ul> | 291 <ul> |
| 266 <li> | 292 <li> |
| 267 Not specifying the same id/version | 293 Not specifying the same id/version |
| 268 as the one listed in the <code>.crx</code> </li> | 294 as the one listed in the <code>.crx</code> </li> |
| 269 <li> | 295 <li> |
| 270 The .json file (<code>aaaaaaaaaabbbbbbbbbbcccccccccc.json</code>) is in | 296 The .json file (<code>aaaaaaaaaabbbbbbbbbbcccccccccc.json</code>) is in |
| 271 the wrong location or the ID specified does not match the extension ID. | 297 the wrong location or the ID specified does not match the extension ID. |
| 272 <li> | 298 <li> |
| 273 Syntax error in JSON file | 299 Syntax error in JSON file |
| 274 (forgetting to separate entries with comma or | 300 (forgetting to separate entries with comma or |
| 275 leaving a trailing comma somewhere) </li> | 301 leaving a trailing comma somewhere) </li> |
| 276 <li> | 302 <li> |
| 277 JSON file entry points to the wrong path | 303 JSON file entry points to the wrong path |
| 278 to the <code>.crx</code> (or path specified but no filename) </li> | 304 to the <code>.crx</code> (or path specified but no filename) </li> |
| 279 <li> | 305 <li> |
| 280 Backslashes in UNC path not escaped | 306 Backslashes in UNC path not escaped |
| 281 (for example, <code>"\\server\share\file"</code> is wrong; | 307 (for example, <code>"\\server\share\file"</code> is wrong; |
| 282 it should be <code>"\\\\server\\share\\extension"</code>) </li> | 308 it should be <code>"\\\\server\\share\\extension"</code>) </li> |
| 283 <li> | 309 <li> |
| 284 Permissions problems on a network share </li> | 310 Permissions problems on a network share </li> |
| 285 </ul> | 311 </ul> |
| 286 | 312 |
| 287 <br> | |
| 288 | |
| 289 <p><b>What are some common mistakes when installing with the registry?</b> </p> | 313 <p><b>What are some common mistakes when installing with the registry?</b> </p> |
| 290 <ul> | 314 <ul> |
| 291 <li>Not specifying the same id/version | 315 <li>Not specifying the same id/version |
| 292 as the one listed in the <code>.crx</code> </li> | 316 as the one listed in the Chrome Web Store </li> |
| 293 <li>Key created in the wrong location in the registry </li> | 317 <li>Key created in the wrong location in the registry </li> |
| 294 <li>Registry entry points to the wrong path to the <code>.crx</code> file | 318 <li>Registry entry points to the wrong path |
| 295 (or path specified but no filename) </li> | 319 to the <code>.crx</code> file in the Chrome Web Store</li> |
| 296 <li>Permissions problems on a network share </li> | 320 <li>Permissions problems on a network share </li> |
| 297 </ul> | 321 </ul> |
| 298 | 322 |
| 299 <br> | 323 <p><b>How do I update my native binaries and extension in-step?</b></p> |
| 324 <p>Previously when off-store extensions were supported, | |
| 325 it was possible to have the native binaries and the extension be updated in lock step. | |
| 326 However, extensions hosted on the Chrome Web Store are updated | |
| 327 via the Chrome update mechanism which developers do not control. | |
| 328 Extension developers should be careful about updating extensions | |
| 329 that have a dependency on the native binary | |
| 330 (for example, legacy extensions using <a href="npapi.html">NPAPI</a>). | |
| 331 </p> | |
| 300 | 332 |
| 301 <p><b>What if the user uninstalls the extension?</b> </p> | 333 <p><b>What if the user uninstalls the extension?</b> </p> |
| 302 <p>If the user uninstalls the extension through the UI, it will no | 334 <p>If the user uninstalls the extension through the UI, it will no |
| 303 longer be installed or updated on each startup. In other words, the | 335 longer be installed or updated on each startup. In other words, the |
| 304 external extension is blacklisted. </p> | 336 external extension is blacklisted. </p> |
| 305 | 337 |
| 306 <br> | |
| 307 | |
| 308 <p><b>How do I get off the blacklist?</b> </p> | 338 <p><b>How do I get off the blacklist?</b> </p> |
| 309 <p>If the user uninstalls your extension, you should respect that | 339 <p>If the user uninstalls your extension, you should respect that |
| 310 decision. However, if you (the developer) accidentally uninstalled | 340 decision. However, if you (the developer) accidentally uninstalled |
| 311 your extension through the UI, | 341 your extension through the UI, |
| 312 you can remove the blacklist tag | 342 you can remove the blacklist tag |
| 313 by installing the extension normally | 343 by installing the extension normally |
| 314 through the UI, and then uninstalling it. </p> | 344 through the UI, and then uninstalling it. </p> |
| 345 | |
| OLD | NEW |