Commit c948e63d authored by mkearney's avatar mkearney Committed by Commit bot

Updating extension hosting docs

NOTRY=true

Review URL: https://codereview.chromium.org/1137753005

Cr-Commit-Position: refs/heads/master@{#329681}
parent 5c20d4ec
<h1>Other Deployment Options</h1> <h1>Alternative Extension Distribution Options</h1>
<p> <p>
Usually, users install their own extensions. All Chrome extensions must be distributed either directly from the Chrome Web Store,
using
<a href="/webstore/inline_installation">inline installation</a>,
or using the mechanisms described below.
Failure to comply with one of these distribution methods constitutes
a violation of the
<a href="/extensions/single_purpose">Chrome extension policy</a>
and may result in the extension
and/or the software distributing it to be flagged as
<a href="https://www.google.com/about/company/unwanted-software-policy.html">unwanted software</a>.
</p>
<p>
Usually, users install their own extensions from the Chrome Web Store
or some other site via
<a href="/webstore/inline_installation">inline installation</a>.
But sometimes you might want an extension But sometimes you might want an extension
to be installed automatically. to be installed via other means.
Here are two typical cases: Here are two typical cases:
</p> </p>
...@@ -12,53 +27,56 @@ Here are two typical cases: ...@@ -12,53 +27,56 @@ Here are two typical cases:
An extension is associated with some other software, An extension is associated with some other software,
and the extension should be installed and the extension should be installed
whenever the user installs that other software. whenever the user installs that other software.
The extension could also be uninstalled
when the user removes that other software.
</li> </li>
<li> <li>
A network admin wants to install the same extensions A network admin wants to install the same extensions
throughout the company. throughout their organization.
</li> </li>
</ul> </ul>
<p> <p>
An extension that's installed automatically is known as an An extension that's installed neither from the Chrome West Store
nor as an inline installation is known as an
<em>external extension</em>. <em>external extension</em>.
Google Chrome supports two ways of For developers who want to distribute an extension as part
installing external extensions: of the installation process for other software,
or for network admins that want to distribute an extension
throughout their organization,
Google Chrome supports the following extension installation methods:
</p> </p>
<ul> <ul>
<li> Using a preferences JSON file (Mac OS X and Linux only)</li> <li> Using a preferences JSON file (for Mac OS X and Linux only)</li>
<li> Using the Windows registry (Windows only) </li> <li> Using the Windows registry (for Windows only) </li>
</ul> </ul>
<p> <p>
Both ways support installing an extension hosted at an Both ways support installing an extension hosted at an
<code>update_URL</code>. <code>update_URL</code>.
In the Windows registry, On Windows and Mac,
the <code>update_URL</code> must point to the Chrome Web Store the <code>update_URL</code> must point to the Chrome Web Store
where the extension is hosted. where the extension must be hosted.
</p> </p>
<p> <p>
In the preferences file, The preferences file on Linux can point
it can point to your own server where you are hosting the extension to your own server where you are hosting the extension
(see <a href="autoupdate#update_url">autoupdating</a>). (see <a href="autoupdate#update_url">autoupdating</a>).
The preferences JSON file also supports installing The preferences JSON file also supports installing
an extension from a <code>.crx</code> extension an extension from a <code>.crx</code> extension
file on the user's computer file on the user's Linux computer
(see <a href="hosting">hosting</a>). (see <a href="hosting">hosting</a>).
</p> </p>
<p class="note"> <p class="note">
<b>Install extensions from your website:</b> <b>Install extensions from your website:</b>
The safest option for your users is to publish your extension Among these methods,
the safest option for your users is to publish your extension
in the Chrome Web Store. in the Chrome Web Store.
Instead of hosting your own extension, Instead of hosting your own extension,
publish it in the store, and link to the store install using publish it in the store, and provide an
<a href="https://developers.google.com/chrome/web-store/docs/inline_installation">inline installation</a>. <a href="https://developers.google.com/chrome/web-store/docs/inline_installation">inline installation</a> link from your website.
</p> </p>
<h2 id="prereqs">Before you begin</h2> <h2 id="prereqs">Before you begin</h2>
...@@ -72,10 +90,13 @@ and make sure that it installs successfully. ...@@ -72,10 +90,13 @@ and make sure that it installs successfully.
<p class="warning"> <p class="warning">
<b>Windows installs must come from Chrome Web Store:</b><br> <b>Windows and Mac installs must come from Chrome Web Store:</b><br>
As of Chrome 33, As of Chrome 33,
no external installs are allowed from a path to a local <code>.crx</code> no external installs are allowed from a path to a local <code>.crx</code> on Windows
(see <a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html">Protecting Windows users from malicious extensions</a>). (see <a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html">Protecting Windows users from malicious extensions</a>).
As of Chrome 44,
no external installs are allowed from a path to a local .crx on Mac
(see <a href="http://blog.chromium.org/2015/05/continuing-to-protect-chrome-users-from.html">Continuing to protect Chrome users from malicious extensions</a>).
</p> </p>
<p> <p>
...@@ -115,7 +136,7 @@ Use <a href="#registry">Windows registry</a> instead. ...@@ -115,7 +136,7 @@ Use <a href="#registry">Windows registry</a> instead.
</p> </p>
<ol> <ol>
<li>If you are installing from a file, make the <code>.crx</code> extension <li>If you are installing from a file on Linux, make the <code>.crx</code> extension
file available to the machine you want to install the extension on. file available to the machine you want to install the extension on.
(Copy it to a local directory or to a network share for example, (Copy it to a local directory or to a network share for example,
<code>\\server\share\extension.crx</code> <code>\\server\share\extension.crx</code>
...@@ -148,35 +169,59 @@ or <code>/home/share/extension.crx</code>.) ...@@ -148,35 +169,59 @@ or <code>/home/share/extension.crx</code>.)
</dl> </dl>
</li> </li>
<li>If you are installing from a file, specify the extension's location and version with fields <li>Linux only: If you are installing from a file, specify the extension's location and version with fields
named "external_crx" and "external_version" in the file created above. named "external_crx" and "external_version" in the file created above.
<p> <ul>
Example: <li>Example:</li>
<li>
<pre> <pre>
{ {
"external_crx": "/home/share/extension.crx", "external_crx": "/home/share/extension.crx",
"external_version": "1.0" "external_version": "1.0"
} }
</pre> </pre>
</p> </li>
<p class="note"> <li>
<b>Note:</b> <b>Note:</b>
You need to escape You need to escape
each <code>\</code> character in the location. each <code>\</code> character in the location.
For example, For example,
<code>\\server\share\extension.crx</code> would be <code>\\server\share\extension.crx</code> would be
<code>"\\\\server\\share\\extension.crx"</code>. <code>"\\\\server\\share\\extension.crx"</code>.
</p> </li>
<p> </ul>
<p> </li>
If you are installing from an update URL, specify the extension's update URL
with field name "external_update_url". <li>If you are installing from an update URL, specify the extension's update URL
</p> with field name "external_update_url".</li>
Example:
<pre>{ <li>
"external_update_url": "http://myhost.com/mytestextension/updates.xml" Example of installation from local .crx file (Linux only):
}</pre> <ol>
<p> <li>
<pre>
{
"external_update_url": "http://myhost.com/mytestextension/updates.xml"
}
</pre>
</li>
</ol>
</li>
<li>
Example of installation from the Chrome Webstore (Mac and Linux):
<ol>
<li>
<pre>
{
"external_update_url": "https://clients2.google.com/service/update2/crx"
}
</pre>
</li>
</ol>
</li>
<li>
If you would like to install extension only for some browser locales, If you would like to install extension only for some browser locales,
you can list supported locales in field name "supported_locale". Locale may you can list supported locales in field name "supported_locale". Locale may
specify parent locale like "en", in this case the extension will be specify parent locale like "en", in this case the extension will be
...@@ -184,12 +229,17 @@ installed for all English locales like "en-US", "en-GB", etc. ...@@ -184,12 +229,17 @@ installed for all English locales like "en-US", "en-GB", etc.
If another browser locale is selected that is not supported by the extension, If another browser locale is selected that is not supported by the extension,
the external extensions will be uninstalled. If "supported_locales" list the external extensions will be uninstalled. If "supported_locales" list
is missing, the extension will be installed for any locale. is missing, the extension will be installed for any locale.
</p> <ul>
Example: <li>Example:</li>
<pre>{ <li>
"external_update_url": "http://myhost.com/mytestextension/updates.xml", <pre>
"supported_locales": [ "en", "fr", "de" ] {
}</pre> "external_update_url": "https://clients2.google.com/service/update2/crx",
"supported_locales": [ "en", "fr", "de" ]
}
</pre>
</li>
</ul>
</li> </li>
<li>Save the JSON file.</li> <li>Save the JSON file.</li>
<li>Launch Google Chrome and go to <b>chrome://extensions</b>; <li>Launch Google Chrome and go to <b>chrome://extensions</b>;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<p class="warning"><b>Warning:</b> <p class="warning"><b>Warning:</b>
As of Chrome 33, As of Chrome 33,
Windows stable/beta channel users can only download extensions Windows users can only download extensions
hosted in the Chrome Web store, hosted in the Chrome Web store,
except for installs via except for installs via
<a href="https://support.google.com/chrome/a/answer/188453">enterprise policy</a> <a href="https://support.google.com/chrome/a/answer/188453">enterprise policy</a>
...@@ -10,8 +10,9 @@ or ...@@ -10,8 +10,9 @@ or
<a href="getstarted#unpacked">developer mode</a> <a href="getstarted#unpacked">developer mode</a>
(see (see
<a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html">Protecting Windows users from malicious extensions</a>). <a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html">Protecting Windows users from malicious extensions</a>).
You can still create your own <code>.crx</code> file and use it for testing in the dev channel, As of Chrome 44, no external installs are allowed from a path to a local .crx on Mac
but you can't host that file on your own server. (see
<a href="http://blog.chromium.org/2015/05/continuing-to-protect-chrome-users-from.html">Continuing to protect Chrome users from malicious extensions</a>).
</p> </p>
<p> <p>
......
...@@ -9,12 +9,14 @@ to have a single purpose. ...@@ -9,12 +9,14 @@ to have a single purpose.
We are also introducing the new We are also introducing the new
<a href="http://blog.chromium.org/2014/03/protecting-user-settings-on-windows.html">Settings Override API</a> <a href="http://blog.chromium.org/2014/03/protecting-user-settings-on-windows.html">Settings Override API</a>
to allow extensions to manage important Chrome settings on Windows. to allow extensions to manage important Chrome settings on Windows.
Beginning with the July release of Chrome, Beginning with the July 2014 release of Chrome,
the Settings Override API will be the only approved path the Settings Override API will be the only approved path
for offering settings changes to Chrome users on Windows. for offering settings changes to Chrome users on Windows.
In addition, starting with the May 20, 2014 release of Chrome, In addition, starting with the May 20, 2014 release of Chrome,
we <a href="http://blog.chromium.org/2014/02/make-sure-to-get-your-extension-in.html">have begun to require</a> we <a href="http://blog.chromium.org/2014/02/make-sure-to-get-your-extension-in.html">have begun to require</a>
that extensions in Chrome for Windows be hosted in the Chrome Web Store. that extensions in Chrome for Windows be hosted in the Chrome Web Store.
Starting in Chrome 44 in July 2015,
extensions in Mac are also required to be hosted in the Chrome Web Store.
</p> </p>
<h2 id="two">2.) Why did Google launch a “single purpose” Chrome extensions policy?</h2> <h2 id="two">2.) Why did Google launch a “single purpose” Chrome extensions policy?</h2>
...@@ -24,7 +26,7 @@ that extensions in Chrome for Windows be hosted in the Chrome Web Store. ...@@ -24,7 +26,7 @@ that extensions in Chrome for Windows be hosted in the Chrome Web Store.
<p>We launched this policy because <p>We launched this policy because
multi-purpose extensions can crowd your browser UI multi-purpose extensions can crowd your browser UI
and slow down your web browsing - sometimes significantly. and slow down your web browsing sometimes significantly.
Speed and simplicity have always been part of Chrome's core principles, Speed and simplicity have always been part of Chrome's core principles,
so this policy will help us get back to the design that was originally intended. so this policy will help us get back to the design that was originally intended.
Also, unexpected changes to browser functionality and Also, unexpected changes to browser functionality and
...@@ -75,6 +77,13 @@ change the browser’s homepage, or ...@@ -75,6 +77,13 @@ change the browser’s homepage, or
make any other changes to browser functionality. make any other changes to browser functionality.
</p> </p>
<p>
Be conscious of your extension’s permissions.
We assume your extension utilizes each of the permissions it requests.
Excessive permissions unrelated to your extension’s single purpose will be viewed
as enabling unrelated functionalities, resulting in a policy violation.
</p>
<h2 id="five">5.) Will this policy affect my extension?</h2> <h2 id="five">5.) Will this policy affect my extension?</h2>
<p> <p>
...@@ -93,6 +102,7 @@ Ask yourself these questions: ...@@ -93,6 +102,7 @@ Ask yourself these questions:
does it only affect a narrow function of the browser?</li> does it only affect a narrow function of the browser?</li>
<li>Does my extension modify Chrome’s behavior in a predictable way, <li>Does my extension modify Chrome’s behavior in a predictable way,
in line with the extension's narrow, stated purpose?</li> in line with the extension's narrow, stated purpose?</li>
<li>Does my extension request any unnecessary permissions?</li>
</ul> </ul>
<p> <p>
...@@ -225,13 +235,13 @@ will remain unchanged until the user manually updates those settings or ...@@ -225,13 +235,13 @@ will remain unchanged until the user manually updates those settings or
installs an extension that uses the Settings Override API to change them. installs an extension that uses the Settings Override API to change them.
</p> </p>
<h2 id="twelve">12.) Is this new policy Windows-only?</h2> <h2 id="twelve">12.) Is this new policy only on some operating systems?</h2>
<p> <p>
The <a href="https://developer.chrome.com/extensions/hosting_changes">requirement</a> The <a href="https://developer.chrome.com/extensions/hosting_changes">requirement</a>
that Chrome extensions be hosted in the Chrome Web Store that Chrome extensions be hosted in the Chrome Web Store
initially applies only to Windows extensions. initially applies only to Windows and Mac extensions.
Likewise, the new Settings Override API will initially be made available The new Settings Override API will initially be made available
only on Chrome for Windows. only on Chrome for Windows.
However, the single-purpose policy will apply to all Chrome extensions. However, the single-purpose policy will apply to all Chrome extensions.
</p> </p>
...@@ -283,7 +293,7 @@ It's a better user experience, with no performance or security downsides. ...@@ -283,7 +293,7 @@ It's a better user experience, with no performance or security downsides.
that were already installed by users?</h2> that were already installed by users?</h2>
<p> <p>
All extensions will need to comply with the Extension Quality Guidelines. All extensions must comply with the Extension Quality Guidelines.
If a user installed a non-compliant extension, If a user installed a non-compliant extension,
then you will need to update them to a compliant extension then you will need to update them to a compliant extension
that is hosted in the Chrome Web Store. that is hosted in the Chrome Web Store.
...@@ -307,9 +317,11 @@ in the Chrome Web Store comes into effect?</h2> ...@@ -307,9 +317,11 @@ in the Chrome Web Store comes into effect?</h2>
If your extension is rejected from the Chrome Web Store, If your extension is rejected from the Chrome Web Store,
you will need to make changes or appeal the decision. you will need to make changes or appeal the decision.
After the requirement to host extensions After the requirement to host extensions
in the Chrome Web Store comes into effect in late May 2014, in the Chrome Web Store comes into effect for Windows in late May 2014,
your extension must be hosted in the Chrome Web Store or your extension must be hosted in the Chrome Web Store or
it will be automatically disabled from the users’ browsers. it will be automatically disabled from the users’ browsers.
The same will occur for Mac extensions that are not hosted
on the Chrome Web Store prior to the release of 44 in July 2015.
</p> </p>
<h2 id="eighteen">18.) If my extension gets flagged for review under the single purpose policy, <h2 id="eighteen">18.) If my extension gets flagged for review under the single purpose policy,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment