• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<h1>Hosting</h1>
2
3<p class="warning"><b>Warning:</b>
4As of Chrome 33,
5Windows stable/beta channel users can only download extensions
6hosted in the Chrome Web store,
7except for installs via
8<a href="https://support.google.com/chrome/a/answer/188453">enterprise policy</a>
9or
10<a href="getstarted#unpacked">developer mode</a>
11 (see
12 <a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html">Protecting Windows users from malicious extensions</a>).
13You can still create your own <code>.crx</code> file and use it for testing in the dev channel,
14but you can't host that file on your own server.
15</p>
16
17<p>
18This page tells you how to host <code>.crx</code> files
19on your own server.
20If you distribute your extension, app, or theme solely through the
21<a href="http://chrome.google.com/webstore">Chrome Web Store</a>,
22you don't need this page.
23Instead, consult the
24<a href="http://www.google.com/support/chrome_webstore/">store help</a> and
25<a href="http://code.google.com/chrome/webstore/index">developer documentation</a>.
26</p>
27
28<p>
29By convention, extensions,
30installable web apps, and themes are served&mdash;whether
31by the Chrome Web Store or by a custom server&mdash;as
32<code>.crx</code> files.
33When you upload a ZIP file with the
34<a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>,
35the dashboard creates the <code>.crx</code> file for you.
36</p>
37
38<p>
39If you aren't publishing using the dashboard,
40you need to create the <code>.crx</code> file yourself,
41as described in <a href="packaging">Packaging</a>.
42You can also specify
43<a href="autoupdate">autoupdate</a> information to ensure that
44your users will have the latest copy of the <code>.crx</code> file.
45</p>
46
47<p>
48A server that hosts <code>.crx</code> files
49must use appropriate HTTP headers,
50so that users can install the file
51by clicking a link to it.
52</p>
53
54<p>
55Google Chrome considers a file to be installable
56if <b>either</b> of the following is true:
57</p>
58
59<ul>
60  <li>
61    The file has the content type
62    <code>application/x-chrome-extension</code>
63  </li>
64  <li>
65    The file suffix is <code>.crx</code>
66    and <b>both</b> of the following are true:
67    <ul>
68      <li>
69        The file <b>is not</b> served with
70        the HTTP header <code>X-Content-Type-Options: nosniff</code>
71      </li>
72      <li>
73        The file <b>is</b> served
74        with one of the following content types:
75        <ul>
76          <li> empty string </li>
77          <li> "text/plain" </li>
78          <li> "application/octet-stream" </li>
79          <li> "unknown/unknown" </li>
80          <li> "application/unknown" </li>
81          <li> "*/*" </li>
82        </ul>
83      </li>
84    </ul>
85  </li>
86</ul>
87
88<p>
89The most common reason for failing to recognize an installable file
90is that the server sends the header
91<code>X-Content-Type-Options: nosniff</code>.
92The second most common reason
93is that the server sends an unknown content type&mdash;one
94that isn't in the previous list.
95To fix an HTTP header issue,
96either change the configuration of the server
97or try hosting the <code>.crx</code> file at another server.
98</p>
99