| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en"> |
| <HEAD> |
| |
| <meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2008. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." > |
| |
| <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> |
| <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> |
| |
| <LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css"> |
| <TITLE>Updating a product or extension</TITLE> |
| |
| <link rel="stylesheet" type="text/css" HREF="../book.css"> |
| </HEAD> |
| <BODY BGCOLOR="#ffffff"> |
| <h2>Updating a product or extension</h2> |
| <p>By following the prescribed procedures for packaging and installing products, |
| we can take advantage of <b>platform provisioning support,</b> which treats |
| products and extensions in a uniform way and allows users to discover and |
| install updated versions of products and extensions.</p> |
| <p>Before looking at the implementation of such a server, it's important to |
| revisit some important concepts:</p> |
| <ul> |
| <li>The platform provides a framework for defining <b>features</b> and software <b>sites</b>. |
| The platform itself defines a concrete implementation of features and |
| sites. This concrete implementation is what allows the platform |
| to upgrade and install additional features.</li> |
| <li>The platform <b>software site</b> can be used to <b>update</b> products by |
| installing new versions of features. It can also be used to <b>install</b> |
| or <b>update</b> extensions by adding or upgrading features. |
| This is only possible for products and extensions that conform to the |
| platform's concrete implementation of features and sites and conform to the |
| appropriate install guidelines.</li> |
| <li>Developers are free to use native installers and uninstallers to upgrade |
| their own products and extensions without regard to sites and the |
| platform update support.</li> |
| </ul> |
| <p>That said, what do we do if we want to fully participate in the platform |
| implementation of product updating and use its update server?</p> |
| <h3>Feature and plug-in packaging</h3> |
| <p>The previous example product and extension directory structures show how |
| features and plug-ins are laid out once they are installed. In order to |
| install features using the software site, the features must be packaged in a |
| feature archive file. This is described in <a href="../reference/misc/feature_archive.html"> Feature |
| Archive Files</a>. </p> |
| <p>Plug-ins and fragments must be packaged according to the format described in <a href="../reference/misc/plugin_archive.html"> Plug-in |
| Archive Files</a>.</p> |
| <h3>Software site layout</h3> |
| <p>The software site must be a URL-accessible server with a fixed layout. |
| The list of available features and plug-ins provided by the server is described |
| in a site map file, <b>content.xml</b>. The server URL can be |
| specified as a full URL to the site map file, or a URL of a directory path |
| containing the site map. Prefer using the directory path as this will allow |
| for future changes to the software site format. |
| The site map file contains a list of all the |
| available features and the location of the feature archives on the server. |
| It also describes the locations of the plug-in archives that are referenced in |
| the feature manifest.</p> |
| <p>A simple site layout for our example web product and extension could look something like this:</p> |
| <pre><site root>/ |
| artifacts.jar <i>(compressed p2 artifact repository - present in p2 optimized site)</i> |
| content.jar <i>(compressed p2 metadata repository - present in p2 optimized site)</i> |
| features/ <i>(contains feature archive files)</i> |
| com.example.acme.acmefeature_1.0.1.jar |
| com.example.betterwebs.betterfeature_1.0.1.jar |
| ... |
| plugins/ <i>(contains plug-in archive files)</i> |
| com.example.acme.acmefeature_1.0.1.jar |
| com.example.acme.acmewebsupport_1.0.3.jar |
| com.example.betterwebs.betterfeature_1.0.1.jar |
| com.example.betterwebs.betterwebsupport_1.0.1.jar |
| ...</pre> |
| <h3>Update servers</h3> |
| <p>An Eclipse project software site is provided for updating the platform |
| itself. In addition, the platform update UI allows users to maintain a list of software sites that |
| can be searched for new features. Any site that conforms to the specified update server |
| layout may be added to the list. Users can choose to manually or automatically search for |
| additional features or upgrades to their installed features. </p> |
| <p> |
| Software sites can be created and manipulated by creating an "update site" |
| project in PDE, or by using the <a href="p2_publisher.html">publishing</a> |
| and <a href="p2_repositorytasks.htm">repository manipulation</a> command |
| line tools and Ant tasks. |
| </p> |
| </BODY> |
| </HTML> |