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—whether 31by the Chrome Web Store or by a custom server—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—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