summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/docs/static/hosting.html
blob: d4c5e017b4ba944f9580b6288d4e225876fb6fb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<div id="pageData-name" class="pageData">Hosting</div>

<p>
This page tells you how to host <code>.crx</code> files
on your own server.
If you distribute your extension, app, or theme solely through the
<a href="http://chrome.google.com/webstore">Chrome Web Store</a>,
you don't need this page.
Instead, consult the
<a href="http://www.google.com/support/chrome_webstore/">store help</a> and
<a href="http://code.google.com/chrome/webstore/index.html">developer documentation</a>.
</p>

<p>
By convention, extensions,
installable web apps, and themes are served&mdash;whether
by the Chrome Web Store or by a custom server&mdash;as
<code>.crx</code> files.
When you upload a ZIP file with the
<a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>,
the dashboard creates the <code>.crx</code> file for you.
</p>

<p>
If you aren't publishing using the dashboard,
you need to create the <code>.crx</code> file yourself,
as described in <a href="packaging.html">Packaging</a>.
You can also specify
<a href="autoupdate.html">autoupdate</a> information to ensure that
your users will have the latest copy of the <code>.crx</code> file.
</p>

<p>
A server that hosts <code>.crx</code> files
must use appropriate HTTP headers,
so that users can install the file
by clicking a link to it.
</p>

<p>
Google Chrome considers a file to be installable
if <b>either</b> of the following is true:
</p>

<ul>
  <li>
    The file has the content type
    <code>application/x-chrome-extension</code>
  </li>
  <li>
    The file suffix is <code>.crx</code>
    and <b>both</b> of the following are true:
    <ul>
      <li>
        The file <b>is not</b> served with
        the HTTP header <code>X-Content-Type-Options: nosniff</code>
      </li>
      <li>
        The file <b>is</b> served
        with one of the following content types:
        <ul>
          <li> empty string </li>
          <li> "text/plain" </li>
          <li> "application/octet-stream" </li>
          <li> "unknown/unknown" </li>
          <li> "application/unknown" </li>
          <li> "*/*" </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p>
The most common reason for failing to recognize an installable file
is that the server sends the header
<code>X-Content-Type-Options: no sniff</code>.
The second most common reason
is that the server sends an unknown content type&mdash;one
that isn't in the previous list.
To fix an HTTP header issue,
either change the configuration of the server
or try hosting the <code>.crx</code> file at another server.
</p>