| OLD | NEW |
| 1 <div id="pageData-name" class="pageData">External Extensions</div> | 1 <div id="pageData-name" class="pageData">External Extensions</div> |
| 2 <div id="pageData-showTOC" class="pageData">true</div> | 2 <div id="pageData-showTOC" class="pageData">true</div> |
| 3 | 3 |
| 4 <p> | 4 <p> |
| 5 Google Chrome implements a mechanism | 5 Google Chrome implements a mechanism |
| 6 to detect when an external extension | 6 to detect when an external extension |
| 7 needs to be installed. | 7 needs to be installed. |
| 8 Typically, this could be leveraged | 8 Typically, this could be leveraged |
| 9 by 3rd party vendors | 9 by 3rd party vendors |
| 10 to install an extension whenever | 10 to install an extension whenever |
| 11 the user installs their software. | 11 the user installs their software. |
| 12 Another use case includes network admins, | 12 Another use case includes network admins, |
| 13 who want to install the same extensions | 13 who want to install the same extensions |
| 14 throughout their company. | 14 throughout their company. |
| 15 | 15 |
| 16 <p> | 16 <p> |
| 17 Google Chrome supports two ways of | 17 Google Chrome supports two ways of |
| 18 installing external extensions: | 18 installing external extensions: |
| 19 using a preferences JSON file, | 19 using a preferences JSON file, |
| 20 or using the Windows registry | 20 or using the Windows registry |
| 21 (Windows only). | 21 (Windows only). |
| 22 | 22 |
| 23 <p> | 23 <p> |
| 24 <b>Important:</b> Before you begin, | 24 <b>Important:</b> Before you begin, |
| 25 make sure you have <a href="packaging.html">packaged | 25 make sure you have a <a href="packaging.html">packaged |
| 26 crx file</a> that installs successfully, | 26 crx file</a> that installs successfully, |
| 27 and make a note of both the version | 27 and make a note of both the version |
| 28 of the extension and its id (see chrome://extensions/). | 28 of the extension and its id (see chrome://extensions/). |
| 29 For the rest of this text, we'll assume you | 29 For the rest of this text, we'll assume |
| 30 the extension version is | 30 the extension version is |
| 31 <code>1.0</code> and its id is <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>. | 31 <code>1.0</code> and its id is <code>aaaaaaaaaabbbbbbbbbbcccccccccc</code>. |
| 32 | 32 |
| 33 <h2 id="preferences">Using the Preferences File</h2> | 33 <h2 id="preferences">Using the Preferences File</h2> |
| 34 | 34 |
| 35 <ol> | 35 <ol> |
| 36 <li>Make the .crx extension file available | 36 <li>Make the .crx extension file available |
| 37 to the machine you want to install the extension | 37 to the machine you want to install the extension |
| 38 on (copy it to a local directory | 38 on (copy it to a local directory |
| 39 or to a network share, ie. <code>\\server\share\extension.crx</code>). | 39 or to a network share, ie. <code>\\server\share\extension.crx</code>). |
| 40 <li>Locate the external_extensions.json file under the Chrome | 40 <li>Locate the external_extensions.json file under the Chrome |
| 41 installation directory and add the following key inside | 41 installation directory and add the following key inside |
| 42 the curly brackets (note the extra escaping for the slashes, | 42 the curly brackets (note the extra escaping for the slashes, |
| 43 which is also required when specifying local directories): | 43 which is also required when specifying local directories): |
| 44 <pre>{ | 44 <pre>{ |
| 45 "aaaaaaaaaabbbbbbbbbbcccccccccc": { | 45 "aaaaaaaaaabbbbbbbbbbcccccccccc": { |
| 46 "external_crx": "\\\\server\\share\\extension.crx", | 46 "external_crx": "\\\\server\\share\\extension.crx", |
| 47 "external_version": "1.0" | 47 "external_version": "1.0" |
| 48 } | 48 } |
| 49 }</pre> | 49 }</pre> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 65 32 bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions</code
><br> | 65 32 bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions</code
><br> |
| 66 64 bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Exte
nsions</code> | 66 64 bit Windows: <code>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Exte
nsions</code> |
| 67 <li>Create a new key (folder) | 67 <li>Create a new key (folder) |
| 68 under the Extensions key with the | 68 under the Extensions key with the |
| 69 same name as the id of your extension (<code>aaaaaaaaaabbbbbbbbbbcccccccccc</cod
e>). | 69 same name as the id of your extension (<code>aaaaaaaaaabbbbbbbbbbcccccccccc</cod
e>). |
| 70 <li>Create two string values (<code>REG_SZ</code>):<br> | 70 <li>Create two string values (<code>REG_SZ</code>):<br> |
| 71 path: <code>\\server\share\extension.crx</code><br> | 71 path: <code>\\server\share\extension.crx</code><br> |
| 72 version: <code>1.0</code> | 72 version: <code>1.0</code> |
| 73 <li>Launch the browser and go to | 73 <li>Launch the browser and go to |
| 74 chrome://extensions and you should | 74 chrome://extensions and you should |
| 75 see the extension listed. | 75 see the extension listed. |
| 76 </ol> | 76 </ol> |
| 77 | 77 |
| 78 <h2 id="updating">Updating and Uninstalling</h2> | 78 <h2 id="updating">Updating and Uninstalling</h2> |
| 79 | 79 |
| 80 <p>Google Chrome scans the metadata entries | 80 <p>Google Chrome scans the metadata entries |
| 81 in the preferences and registry | 81 in the preferences and registry |
| 82 each time the browser starts, and makes | 82 each time the browser starts, and makes |
| 83 any necessary changes to the installed | 83 any necessary changes to the installed |
| 84 external extensions. | 84 external extensions. |
| 85 | 85 |
| 86 <p>To update your extension to a new version, | 86 <p>To update your extension to a new version, |
| 87 update the file, and then update the version | 87 update the file, and then update the version |
| 88 in the preferences or registry. | 88 in the preferences or registry. |
| 89 | 89 |
| 90 <p>To uninstall your extension | 90 <p>To uninstall your extension |
| 91 (eg if your software is uninstalled), | 91 (eg if your software is uninstalled), |
| 92 remove the metadata from the preferences file | 92 remove the metadata from the preferences file |
| 93 or registry. | 93 or registry. |
| 94 | 94 |
| 95 <h2 id="faq">FAQ</h2> | 95 <h2 id="faq">FAQ</h2> |
| 96 | 96 |
| 97 <p><b>Can I specify a URL as a path to the external extension?</b> | 97 <p><b>Can I specify a URL as a path to the external extension?</b> |
| 98 <p>Not at this time. | 98 <p>Not at this time. |
| 99 Chrome only supports absolute/relative local paths | 99 Chrome only supports absolute/relative local paths |
| 100 and UNC paths. | 100 and UNC paths. |
| 101 Relative paths are relative | 101 Relative paths are relative |
| 102 to the Extensions directory | 102 to the Extensions directory |
| 103 (where the external_extensions.json file is located). | 103 (where the external_extensions.json file is located). |
| 104 <br> | 104 <br> |
| 105 <br> | 105 <br> |
| 106 | 106 |
| 107 <p><b>What are some common mistakes when installing with the preferences file?</
b> | 107 <p><b>What are some common mistakes when installing with the preferences file?</
b> |
| 108 <ul> | 108 <ul> |
| 109 <li>Not specifying the same id/version | 109 <li>Not specifying the same id/version |
| 110 as the one listed in the .crx | 110 as the one listed in the .crx |
| 111 <li>external_extension.json is not in the right location | 111 <li>external_extension.json is not in the right location |
| 112 <li>Syntax error in json file | 112 <li>Syntax error in json file |
| 113 (forgetting to separate entries with comma or | 113 (forgetting to separate entries with comma or |
| 114 leaving a trailing comma somewhere) | 114 leaving a trailing comma somewhere) |
| 115 <li>Extra curly brackets around the top level dictionary | 115 <li>Extra curly brackets around the top level dictionary |
| 116 <li>JSON file entry points to the wrong path | 116 <li>JSON file entry points to the wrong path |
| 117 to the .crx (or path specified but no filename) | 117 to the .crx (or path specified but no filename) |
| 118 <li>Backslashes in UNC path not escaped (eg <code>\\server\share\file</code> (in
correct), instead of <code>\\\\server\\share\\extension</code> (correct) |
| 118 <li>Permissions problems on a network share | 119 <li>Permissions problems on a network share |
| 119 </ul> | 120 </ul> |
| 120 | 121 |
| 121 <br> | 122 <br> |
| 122 | 123 |
| 123 <p><b>What are some common mistakes when installing with the registry?</b> | 124 <p><b>What are some common mistakes when installing with the registry?</b> |
| 124 <ul> | 125 <ul> |
| 125 <li>Not specifying the same id/version as the one listed in the .crx | 126 <li>Not specifying the same id/version as the one listed in the .crx |
| 126 <li>Key created in the wrong location in the registry | 127 <li>Key created in the wrong location in the registry |
| 127 <li>Registry entry points to the wrong path to the .crx (or path specified but n
o filename) | 128 <li>Registry entry points to the wrong path to the .crx (or path specified but n
o filename) |
| 128 <li>Backslashes in UNC path not escaped (eg <code>\\server\share\file</code> (in
correct), instead of <code>\\\\server\\share\\extension</code> (correct) | |
| 129 <li>Permissions problems on a network share | 129 <li>Permissions problems on a network share |
| 130 </ul> | 130 </ul> |
| 131 | 131 |
| 132 <br> | 132 <br> |
| 133 | 133 |
| 134 <p><b>What if the user uninstalls the extension?</b> | 134 <p><b>What if the user uninstalls the extension?</b> |
| 135 <p>If the user uninstalls the extension through the UI, it will no | 135 <p>If the user uninstalls the extension through the UI, it will no |
| 136 longer be installed or updated on each startup. In other words, the | 136 longer be installed or updated on each startup. In other words, the |
| 137 external extension is blacklisted. | 137 external extension is blacklisted. |
| 138 | 138 |
| 139 <br><br> | 139 <br><br> |
| 140 | 140 |
| 141 | 141 |
| 142 <p><b>How do I get off the blacklist?</b> | 142 <p><b>How do I get off the blacklist?</b> |
| 143 <p>If the user uninstalls your extension, you should respect that | 143 <p>If the user uninstalls your extension, you should respect that |
| 144 decision. However, if you (the developer) accidentally uninstalled | 144 decision. However, if you (the developer) accidentally uninstalled |
| 145 your extension through the UI, | 145 your extension through the UI, |
| 146 you can remove the blacklist tag | 146 you can remove the blacklist tag |
| 147 by installing the extension normally | 147 by installing the extension normally |
| 148 through the UI, then uninstalling it. | 148 through the UI, and then uninstalling it. |
| OLD | NEW |