| <div id="pageData-name" class="pageData">Packaged Apps</div> |
| <div id="pageData-showTOC" class="pageData">true</div> |
| |
| <p> |
| This page talks about packaged apps—how |
| you implement them, |
| and how they're different from |
| extensions and ordinary web apps. |
| </p> |
| |
| |
| <h2 id="overview">Overview</h2> |
| |
| <p> |
| A packaged app is a web app |
| that's bundled into a <code>.crx</code> file |
| and can use Chrome extension features. |
| You build a packaged app just like you build an extension, |
| except that a packaged app can't include a |
| <a href="browserAction.html">browser action</a> or |
| <a href="pageAction.html">page action</a>. |
| Instead, a packaged app includes at least one HTML file |
| within its <code>.crx</code> file |
| that provides the app's user interface. |
| </p> |
| |
| <p> |
| Packaged apps are a type of |
| <a href="http://code.google.com/chrome/apps/">installable web app</a>—a |
| web app that can be installed in Chrome. |
| The other type of installable web app is a |
| <a href="http://code.google.com/chrome/apps/docs/developers_guide.html">hosted app</a>, |
| which is an ordinary web app with a bit of additional metadata. |
| </p> |
| |
| <p> |
| If you're developing a web app for the Chrome Web Store, |
| you might want to use a packaged app |
| instead of a hosted app if any of the following are true: |
| </p> |
| |
| <ul> |
| <li> |
| You don't want to run a service to host your app. |
| </li> |
| <li> |
| You want to build an app that works really well offline. |
| </li> |
| <li> |
| You want tighter integration with Chrome, |
| using the extension APIs. |
| </li> |
| </ul> |
| |
| <p> |
| The following articles can help you understand |
| the differences between web apps and websites, |
| extensions and packaged apps, and packaged apps and hosted apps: |
| </p> |
| |
| <ul> |
| <li> <a href="http://code.google.com/chrome/apps/articles/thinking_in_web_apps.html">Thinking in Web Apps</a> </li> |
| <li> <a href="http://codesite-staging:29006/chrome/webstore/articles/apps_vs_extensions.html">Extensions, Packaged Apps, and Hosted Apps in the Chrome Web Store</a> </li> |
| </ul> |
| |
| |
| <h2 id="manifest"> The manifest </h2> |
| |
| <p> |
| A packaged app's manifest can have any field |
| that's available to extensions, |
| except for "browser_action" and "page_action". |
| In addition, a packaged app's manifest <b>must</b> |
| have an "app" field. |
| Here is a typical manifest for a packaged app: |
| </p> |
| |
| <pre> |
| { |
| "name": "My Awesome Racing Game", |
| "description": "Enter a world where a Vanagon can beat a Maserati", |
| "version": "1", |
| <b>"app": { |
| "launch": { |
| "local_path": "main.html" |
| } |
| },</b> |
| "icons": { |
| "16": "icon_16.png", |
| "128": "icon_128.png" |
| }, |
| "permissions": [ |
| "unlimitedStorage", |
| "notifications" |
| ] |
| } |
| </pre> |
| |
| <p> |
| The "app" field has one subfield, "launch", |
| which specifies the <em>launch page</em> for the app—the |
| page (HTML file bundled into the <code>.crx</code> file) |
| that the browser goes to when the user clicks the app's icon |
| in the New Tab page. |
| The "launch" field can contain the following: |
| </p> |
| |
| <dl> |
| <dt>local_path:</dt> |
| <dd><em>Required.</em> |
| Specifies the launch page |
| as a relative path referring to a file |
| in the <code>.crx</code> package. |
| </dd> |
| <dt>container:</dt> |
| <dd> The value "panel" makes the app appear |
| in an app panel. |
| By default, or when you specify "tab", |
| the app appears in a tab. |
| |
| <!-- PENDING: In the overview |
| (or somewhere else before here) |
| we should show and define both app panels and tabs. |
| We should link to that place from here. --> |
| </dd> |
| <dt>height:</dt> |
| <dd> |
| If the container is set to "panel", |
| this integer specifies the height |
| of the panel in pixels. |
| For example, you might specify |
| <code>"height":400</code>. |
| Note that you don't use quotation marks in the value. |
| This field specifies the height of the area |
| to display contents in; |
| window decorations add a few more pixels to the total height. |
| If the container isn't a panel, this field is ignored. |
| </dd> |
| <dt>width:</dt> |
| <dd> |
| Similar to "height", |
| but specifies the width of the panel. |
| </dd> |
| </dd> |
| </dl> |
| |
| <p> |
| Packaged apps usually provide a 16x16 icon |
| to be used as the favicon for |
| tabs that contain app's pages. |
| They also should provide a 128x128 icon, |
| but not a 48x48 icon. |
| See the manifest documentation for the |
| <a href="manifest.html#icons">"icons" field</a> |
| for more information. |
| </p> |
| |
| <p> |
| For further details on what a packaged app's manifest can contain, see the |
| <a href="manifest.html">manifest documentation</a>. |
| </p> |
| |
| <h2 id="next">What next?</h2> |
| |
| <p> |
| Read the <a href="overview.html">Overview</a> to learn |
| basic concepts about extensions. |
| </p> |
| |
| <p class="backtotop"><a href="#top">Back to top</a></p> |
| |