platform-update-home/doc/eclipse_update_packaging.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13, Mon Jan 13 19:01:27 2003 UTC revision 1.14, Wed Jan 15 15:30:07 2003 UTC
# Line 9  Line 9 
9    
10    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
11    <title>Eclipse Platform: Installation and Update</title>    <title>Eclipse Platform: Installation and Update</title>
12    
13  </head>  </head>
14    <body>    <body>
15    
16  <h1> Eclipse Platform<br>  <h1> Eclipse Platform<br>
17        Update Packaging Conventions</h1>        Update Packaging Conventions</h1>
18        <font size="-1">Revision Date: 01/02/2003 9:33AM - Version: 2.0.16</font><br>            <font size="-1">Revision Date: 01/15/2003 9:33AM - Version: 2.0.17</font><br>
19       <a href="../../../../../hglegal.htm"><img src="ngibmcpy.gif"       <a href="../../../../../hglegal.htm"><img src="ngibmcpy.gif"
20   border="0" height="12" width="195">   border="0" height="12" width="195">
21       </a>       </a>
22  <p><b>Change History:</b> </p>  <p><b>Change History:</b> </p>
23    
24  <ul>  <ul>
25               <li><small>2.0.17</small></li>
26      <ul>
27        <li><small>added $os$,$ws$,$arch$ and $nl$ for copyright, description
28    and license URL tag in feature.<br>
29          </small></li>
30      </ul>
31         <li><small>2.0.16</small>     <small><br>         <li><small>2.0.16</small>     <small><br>
32        </small>        </small>
33      <ul>      <ul>
# Line 44  Line 51 
51    
52      </ul>      </ul>
53        </li>        </li>
54        <li><font size="-1">2.0.13</font>             <small><br>            <li><small>2.0.13<br>
55         </small>             </small> </li>
56    
57      <ul>      <ul>
58           <li><small>added &lt;includes name,optional,match,search_location</small>           <li><small>added &lt;includes name,optional,match,search_location</small>
59    &gt;</li>    &gt;</li>
60           <li><small>added &lt;import feature,patch&gt;</small></li>           <li><small>added &lt;import feature,patch&gt;</small></li>
61    
62      </ul>      </ul>
63       </li>                           <li><small>2.0.12<br>
64          </small></li>
 </ul>  
   
 <ul>  
        <li><font size="-1">2.0.12</font></li>  
65    
66    <ul>    <ul>
67        <li> <font size="-1">added reference to the <a        <li> <font size="-1">added reference to the <a
# Line 85  Line 89 
89  up  searches</font></li>  up  searches</font></li>
90         <li> <font size="-1">removed obsolete text</font></li>         <li> <font size="-1">removed obsolete text</font></li>
91         <li> <font size="-1">web-triggered update not in 2.0</font></li>         <li> <font size="-1">web-triggered update not in 2.0</font></li>
92         <li> <font size="-1">no assist in 2.0 for license/ "key file" handling             <li> <font size="-1">no assist in 2.0 for license/ "key file"
93    (individual application/ plugin responsibility)</font></li>  handling     (individual application/ plugin responsibility)</font></li>
94    
95    </ul>    </ul>
96         <li> <font size="-1">2.0.8</font></li>         <li> <font size="-1">2.0.8</font></li>
# Line 119  Line 123 
123        <li> <font size="-1">general text cleanup</font></li>        <li> <font size="-1">general text cleanup</font></li>
124         <li> <font size="-1">&lt;feature&gt;&lt;group&gt; support removed         <li> <font size="-1">&lt;feature&gt;&lt;group&gt; support removed
125  (will   not be in Eclipse 2.0)</font></li>  (will   not be in Eclipse 2.0)</font></li>
126         <li> <font size="-1">arch= support added to &lt;feature&gt; and &lt;feature&gt;&lt;plugin&gt;</font></li>             <li> <font size="-1">arch= support added to &lt;feature&gt; and
127     &lt;feature&gt;&lt;plugin&gt;</font></li>
128         <li> <font size="-1">os=/ arch=/ ws=/ nl= added to &lt;fetaure&gt;&lt;data&gt;</font></li>         <li> <font size="-1">os=/ arch=/ ws=/ nl= added to &lt;fetaure&gt;&lt;data&gt;</font></li>
129         <li> <font size="-1">&lt;site url=""&gt; new semantics</font></li>         <li> <font size="-1">&lt;site url=""&gt; new semantics</font></li>
130         <li> <font size="-1">corrected errors in native installer link support</font></li>             <li> <font size="-1">corrected errors in native installer link
131    support</font></li>
132         <li> <font size="-1">defined callback query strings for browser-triggered         <li> <font size="-1">defined callback query strings for browser-triggered
133    processing</font></li>    processing</font></li>
134    
# Line 132  Line 138 
138    
139  <h3> <font size="+2">Table of Contents</font></h3>  <h3> <font size="+2">Table of Contents</font></h3>
140        <a href="#Introduction">Introduction</a>  <br>        <a href="#Introduction">Introduction</a>  <br>
141       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Changes_from_R1.0">Changes           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
142     from 1.0</a>  <br>   href="#Changes_from_R1.0">Changes     from 1.0</a>  <br>
143       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Concepts">Concepts</a>       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Concepts">Concepts</a>
144    <br>    <br>
145       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Framework">Framework</a>       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Framework">Framework</a>
# Line 168  Line 174 
174       <a href="#Update_Server">Update Server</a>  <br>       <a href="#Update_Server">Update Server</a>  <br>
175       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Site_Map">Site Map</a>       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Site_Map">Site Map</a>
176    <br>    <br>
177       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Default_Site_Layout">Default           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
178     Site Layout</a>  <br>   href="#Default_Site_Layout">Default    Site Layout</a>  <br>
179       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Controlling_Access">Controlling           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
180     Access</a>  <br>   href="#Controlling_Access">Controlling     Access</a>  <br>
181       <a href="#Eclipse_Install">Eclipse Install</a>  <br>       <a href="#Eclipse_Install">Eclipse Install</a>  <br>
182       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
183   href="#Default_Install_Layout">Default   Install Layout</a>  <br>   href="#Default_Install_Layout">Default   Install Layout</a>  <br>
184       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Unmanaged_Plugins">"Unmanaged"           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
185     Plug-Ins</a>  <br>   href="#Unmanaged_Plugins">"Unmanaged"     Plug-Ins</a>  <br>
186       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
187   href="#Using_Native_Platform_Installers"> Using Native Platform Installers</a>   href="#Using_Native_Platform_Installers"> Using Native Platform Installers</a>
188    
189  <h2> <a name="Introduction"></a> Introduction</h2>  <h2> <a name="Introduction"></a> Introduction</h2>
190        This document outlines the support for managing the delivery of function            This document outlines the support for managing the delivery of
191     within the Eclipse platform. Also refer to the "<a  function     within the Eclipse platform. Also refer to the "<a
192   href="http://www.eclipse.org/legal/updatemanager.html"> Eclipse.org Update   href="http://www.eclipse.org/legal/updatemanager.html"> Eclipse.org Update
193    Manager Agreement</a> " for additional legal information governing the    Manager Agreement</a> " for additional legal information governing the
194  use   of the Eclipse update manager function.  use   of the Eclipse update manager function.
# Line 193  Line 199 
199  <ul>  <ul>
200        <li> <b>extendable framework</b></li>        <li> <b>extendable framework</b></li>
201         <br>         <br>
202       In R2.0 Eclipse defines an extendable framework for installation and           In R2.0 Eclipse defines an extendable framework for installation
203  update,   allowing the support for alternate packaging and site management  and   update,   allowing the support for alternate packaging and site management
204  schemes.   R2.0 supplies a default concrete implementation of this framework.  schemes.   R2.0 supplies a default concrete implementation of this framework.
205    <li>     <b>  feature support</b></li>    <li>     <b>  feature support</b></li>
206         <br>         <br>
207       In R2.0 the concept of a <i>component</i> and <i>configuration</i> is           In R2.0 the concept of a <i>component</i> and <i>configuration</i>
208   merged  into <i>feature</i>. Features define the packaging structure for   is  merged  into <i>feature</i>. Features define the packaging structure
209  a group of related plug-ins, plug-in fragments, and optionally non-plug-in  for a group of related plug-ins, plug-in fragments, and optionally non-plug-in
210  files. Features are treated purely as an installation and packaging construct.  files. Features are treated purely as an installation and packaging construct.
211  They do not play a role during Eclipse plug-in execution. Features do not  They do not play a role during Eclipse plug-in execution. Features do not
212  nest. They are simply an inclusive "manifest" of the plug-ins, fragments  nest. They are simply an inclusive "manifest" of the plug-ins, fragments
# Line 208  Line 214 
214  up of plug-ins from "sub-features", the top-level feature "manifest" must  up of plug-ins from "sub-features", the top-level feature "manifest" must
215  be fully resolved at packaging time. <li> <b>default feature archive format</b></li>  be fully resolved at packaging time. <li> <b>default feature archive format</b></li>
216         <br>         <br>
217       R1.0 components were packaged as a single Java .jar containing the component           R1.0 components were packaged as a single Java .jar containing the
218    manifest as well as the actual plug-in files. The problem with this approach   component    manifest as well as the actual plug-in files. The problem with
219    is lack of granularity at download time. In R2.0, the feature archive consists   this approach    is lack of granularity at download time. In R2.0, the feature
220    of multiple separate .jars - one .jar per plug-in and fragment, plus one   archive consists    of multiple separate .jars - one .jar per plug-in and
221   .jar for the actual feature information. The Installation and Update support   fragment, plus one   .jar for the actual feature information. The Installation
222   selectively downloads only those jars required for the installation. <li>   and Update support   selectively downloads only those jars required for the
223    <b>site map</b></li>   installation. <li>    <b>site map</b></li>
224         <br>             <br>
225       Default Eclipse update server must contain a <i>site map</i> file (site.xml).           Default Eclipse update server must contain a <i>site map</i> file
226     This is an evolution of the R1.0 install.index support. The rationale   (site.xml).     This is an evolution of the R1.0 install.index support.
227  for    using a structured site defined by the map rather than a "free form"  The  rationale for    using a structured site defined by the map rather than
228  web   site, is the ability to present a consistent installation experience  a  "free form" web   site, is the ability to present a consistent installation
229  for  the user. Also, this provides the necessary structure for discovery   experience for  the user. Also, this provides the necessary structure for
230  of available   updates. Additional support for "free form" browsing may be   discovery of available   updates. Additional support for "free form" browsing
231  considered in   future work.    <li> <b>using native install/ uninstall</b></li>   may be considered in   future work.    <li> <b>using native install/ uninstall</b></li>
232         <br>         <br>
233       The primary mechanism for installing and updating Eclipse features is           The primary mechanism for installing and updating Eclipse features
234   the  built-in installation and update support. Some products may instead   is  the  built-in installation and update support. Some products may instead
235  choose  to use native installer technology (eg. MSI, RPM, etc) to deliver  choose  to use native installer technology (eg. MSI, RPM, etc) to deliver
236  Eclipse  features. However, native installers do not implement the required  Eclipse  features. However, native installers do not implement the required
237  support  for understanding the Eclipse installation structure. In particular,  support  for understanding the Eclipse installation structure. In particular,
238  the native uninstallers will, by default, remove plug-in files that were  the native uninstallers will, by default, remove plug-in files that were
239  installed using the native installer without regard to these plug-ins being  installed using the native installer without regard to these plug-ins being
240  needed by other features. As a result, features installed using native installers  needed by other features. As a result, features installed using native installers
241   must be written into private product-specific installation location and not     must be written into private product-specific installation location and
242   the shared Eclipse installation location. The shared Eclipse is made aware   not  the shared Eclipse installation location. The shared Eclipse is made
243   of the produce-specific location via an installed "link file". <li>   aware  of the produce-specific location via an installed "link file". <li>
244      <b>custom  install handling</b></li>      <b>custom  install handling</b></li>
245         <br>         <br>
246       In many cases the standard installation handling supplied by Eclipse       In many cases the standard installation handling supplied by Eclipse
247  is  not be sufficient to handle various custom requirements. To accommodate  is  not be sufficient to handle various custom requirements. To accommodate
248   this,  R2.0 Eclipse supports custom install handlers packaged as part of     this,  R2.0 Eclipse supports custom install handlers packaged as part
249  the feature  and executed during the feature installation. <li> <b>path naming  of   the feature  and executed during the feature installation. <li> <b>path
250   conventions</b></li>  naming   conventions</b></li>
251         <br>         <br>
252       R1.0 mandated the use of the various identifiers and versions inside       R1.0 mandated the use of the various identifiers and versions inside
253  the   packaged archives (eg. directory path names for plug-ins). This approach  the   packaged archives (eg. directory path names for plug-ins). This approach
254    has proven to be ackward and error prone. In 2.0, the packaging requirements    has proven to be ackward and error prone. In 2.0, the packaging requirements
255    no longer mandate that path names of packaged files precisely reflect the      no longer mandate that path names of packaged files precisely reflect
256    contained identifiers and versions. The properly identified install subdirectories  the    contained identifiers and versions. The properly identified install
257    are created by the Eclipse support during the installation and update process  subdirectories    are created by the Eclipse support during the installation
258     based on the archive content (rather than explicit jar path structure  and update process     based on the archive content (rather than explicit
259  set    up at packaging time)  jar path structure set    up at packaging time)
260  </ul>  </ul>
261    
262  <h3> <a name="Concepts"></a> Concepts</h3>  <h3> <a name="Concepts"></a> Concepts</h3>
263        <b>Plug-in</b> <br>        <b>Plug-in</b> <br>
264       Eclipse developers build plug-ins. Plug-ins are the base units of execution           Eclipse developers build plug-ins. Plug-ins are the base units of
265     recognized by the Eclipse runtime environment. In general, plug-ins are   execution     recognized by the Eclipse runtime environment. In general,
266   not exposed to users that select function during installation or update.  plug-ins are   not exposed to users that select function during installation
267  The reason is that plug-in boundaries are established by developers for development  or update.  The reason is that plug-in boundaries are established by developers
268    reasons (like function reuse) and present the wrong level of granularity  for development    reasons (like function reuse) and present the wrong level
269   in terms of what the user sees as the unit of function.  of granularity   in terms of what the user sees as the unit of function.
270    
271  <p>While plug-ins are being developed (ie. are frequently being changed),  <p>While plug-ins are being developed (ie. are frequently being changed),
272     their internal file structure will reflect what is convenient to the developer.       their internal file structure will reflect what is convenient to the
273     This will generally depend on the particular development tool being used.  developer.     This will generally depend on the particular development tool
274     Typically, however, the developer will likely setup the plug-in to execute  being used.     Typically, however, the developer will likely setup the plug-in
275     from a directory tree containing exposed .class files, rather than executing  to execute     from a directory tree containing exposed .class files, rather
276     from a .jar (requires an extra step to create the .jar and we all know  than executing     from a .jar (requires an extra step to create the .jar
277  developers  hate extra steps). Also, at this stage the developer does not  and we all know  developers  hate extra steps). Also, at this stage the developer
278  pay particular  attention to plug-in versioning information, because the  does not  pay particular  attention to plug-in versioning information, because
279  plug-in is continually  changing. </p>  the plug-in is continually  changing. </p>
280    
281  <p>However, when the plug-in is ready to be packaged, it needs to be converted  <p>However, when the plug-in is ready to be packaged, it needs to be converted
282     to a form suitable for packaging and installation. Typically it means     to a form suitable for packaging and installation. Typically it means
283  creation    of the runtime .jar(s) and removing any development-time files  creation    of the runtime .jar(s) and removing any development-time files
284  (source,  exposed .class files, etc). It also means updating the plugin.xml  (source,  exposed .class files, etc). It also means updating the plugin.xml
285  manifest  with the formal plug-in version and reflecting the version in the   manifest  with the formal plug-in version and reflecting the version in
286  plug-in  directory name (see "Concurrent Plug-In Version Support" for details).  the  plug-in  directory name (see "Concurrent Plug-In Version Support" for
287  </p>  details).  </p>
288    
289  <p><b>Plug-in Fragment</b> <br>  <p><b>Plug-in Fragment</b> <br>
290       Plug-in Fragments (or simply Fragments) allow independent packaging       Plug-in Fragments (or simply Fragments) allow independent packaging
291  of  certain  aspects of the base plug-in. This includes (but may not be limited    of  certain  aspects of the base plug-in. This includes (but may not be
292   to) translated  resources for the plug-in, OS-specific or windowing-system-specific  limited   to) translated  resources for the plug-in, OS-specific or windowing-system-specific
293   code.  At runtime, fragments are logically merged into the base plug-in.   code.  At runtime, fragments are logically merged into the base plug-in.
294  From a packaging point of view, the install and update support does not really    From a packaging point of view, the install and update support does not
295   differentiate  between plug-ins and their related fragments. </p>  really   differentiate  between plug-ins and their related fragments. </p>
296    
297  <p><b>Feature</b> <br>  <p><b>Feature</b> <br>
298       A feature is an installation packaging mechanism used to define a group           A feature is an installation packaging mechanism used to define
299    of versioned plug-ins and/or plug-in fragments plus non-plug-in files that  a  group    of versioned plug-ins and/or plug-in fragments plus non-plug-in
300    is used to deliver some user function. A feature can also include other  files that    is used to deliver some user function. A feature can also include
301  features.  Features are exposed to users as part of the packaging and installation   other  features.  Features are exposed to users as part of the packaging
302   process,  because they represent a unit of function selection. Features also  and installation   process,  because they represent a unit of function selection.
303   represent  a unit of installation. Features carry a version identifier.</p>   Features also  represent  a unit of installation. Features carry a version
304     identifier.</p>
305    
306  <p>Features are packaged as a feature archive, referencing the required plug-ins,  <p>Features are packaged as a feature archive, referencing the required plug-ins,
307    plug-in fragments and optional non-plug-in files. The feature archives are      plug-in fragments and optional non-plug-in files. The feature archives
308    placed on an update server for download and installation by the Eclipse   are   placed on an update server for download and installation by the Eclipse
309  update  manager, or they can be used as the input into a formal packaging  update  manager, or they can be used as the input into a formal packaging
310  process  using one of the "traditional" installer technologies. The format  process  using one of the "traditional" installer technologies. The format
311  of the feature archive is described later. </p>  of the feature archive is described later. </p>
# Line 311  Line 319 
319  can   be used to support alternate packaging schemes. New concrete feature  can   be used to support alternate packaging schemes. New concrete feature
320  types   are  registere via the "org.eclipse.update.featureTypes" extension  types   are  registere via the "org.eclipse.update.featureTypes" extension
321  point.</li>  point.</li>
322         <li> concrete implementations of site (ISite interface) that can be             <li> concrete implementations of site (ISite interface) that can
323   used  to support alternate site layout, or site behavior. New concrete site   be  used  to support alternate site layout, or site behavior. New concrete
324   types   are registered via the "org.eclipse.update.siteTypes" extension   site  types   are registered via the "org.eclipse.update.siteTypes" extension
325  point.</li>  point.</li>
326         <li> each feature can specify a custom install handler as part of             <li> each feature can specify a custom install handler as part
327  its   feature  manifest. Install handlers (IInstallHandler interface) are  of  its   feature  manifest. Install handlers (IInstallHandler interface)
328  dynamically   invoked as part of the installation process to handle non-plugin  are  dynamically   invoked as part of the installation process to handle non-plugin
329  data, plus   perform other custom processing allowed by the framework.</li>  data, plus   perform other custom processing allowed by the framework.</li>
330    
331  </ul>  </ul>
# Line 341  Line 349 
349    
350  <h2> <a name="Packaging_Conventions"></a> Packaging Conventions</h2>  <h2> <a name="Packaging_Conventions"></a> Packaging Conventions</h2>
351        Default feature packages consist of several related files:        Default feature packages consist of several related files:
352    
353  <ul>  <ul>
354        <li> exactly one jar containing the feature manifest and related files.            <li> exactly one jar containing the feature manifest and related
355    This one is refered to as the "<b>feature archive</b>"</li>   files.    This one is refered to as the "<b>feature archive</b>"</li>
356         <li> zero or more jars containing the feature plug-ins. These are             <li> zero or more jars containing the feature plug-ins. These
357  refered   to as the "<b>plug-in archives</b>"</li>  are   refered   to as the "<b>plug-in archives</b>"</li>
358         <li> zero or more non-plug-in files associated with the feature. They             <li> zero or more non-plug-in files associated with the feature.
359    are used by feature custom install handlers and contain data not interpreted   They   are used by feature custom install handlers and contain data not interpreted
360    by Eclipse</li>    by Eclipse</li>
361    
362  </ul>  </ul>
363    
364  <h3> <a name="Feature_Archive"></a> Feature Archive</h3>  <h3> <a name="Feature_Archive"></a> Feature Archive</h3>
365        The feature packaging information is placed into a separate Java .jar.            The feature packaging information is placed into a separate Java
366    Standard Java jar facilities are used for constructing feature archives.   .jar.    Standard Java jar facilities are used for constructing feature
367   Feature archives reference separately packaged plug-in archives (see next  archives.    Feature archives reference separately packaged plug-in archives
368   section) and non-plug-in files.  (see next    section) and non-plug-in files.
369  <p>Features are identified using a structured identifier based on the provider  <p>Features are identified using a structured identifier based on the provider
370     internet domain name. For example, organization eclipse.org may produce     internet domain name. For example, organization eclipse.org may produce
371   feature org.eclipse.javatooling. The character set used for feature identifiers   feature org.eclipse.javatooling. The character set used for feature identifiers
# Line 385  Line 394 
394     <br>     <br>
395       <tt>other feature files and subdirectories (TBD)</tt> <br>       <tt>other feature files and subdirectories (TBD)</tt> <br>
396       <tt>META-INF/</tt> <br>       <tt>META-INF/</tt> <br>
397       <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt> </p>           <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt>
398    </p>
399    
400  <p>The feature install.xml format is defined by the following dtd: </p>  <p>The feature install.xml format is defined by the following dtd: </p>
401    
# Line 396  Line 406 
406       <tt>&lt;!ATTLIST feature</tt> <br>       <tt>&lt;!ATTLIST feature</tt> <br>
407       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
408     CDATA #REQUIRED</tt> <br>     CDATA #REQUIRED</tt> <br>
409       <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA           <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
410    #REQUIRED</tt> <br>   CDATA    #REQUIRED</tt> <br>
411       <tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
412     CDATA #IMPLIED</tt> <br>     CDATA #IMPLIED</tt> <br>
413       <tt>&nbsp;&nbsp;&nbsp; provider-name CDATA #IMPLIED</tt> <br>       <tt>&nbsp;&nbsp;&nbsp; provider-name CDATA #IMPLIED</tt> <br>
# Line 414  Line 424 
424       <tt>&nbsp;&nbsp;&nbsp; colocation-affinity</tt> <br>       <tt>&nbsp;&nbsp;&nbsp; colocation-affinity</tt> <br>
425       <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
426     CDATA #IMPLIED</tt> <br>     CDATA #IMPLIED</tt> <br>
427       <tt>&nbsp;&nbsp;&nbsp; primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true           <tt>&nbsp;&nbsp;&nbsp; primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
428    | false) "false"</tt> <br>   (true    | false) "false"</tt> <br>
429       <tt>&nbsp;&nbsp;&nbsp; application&nbsp;&nbsp; CDATA #IMPLIED</tt> <br>           <tt>&nbsp;&nbsp;&nbsp; application&nbsp;&nbsp; CDATA #IMPLIED</tt>
430     <br>
431       <tt>&gt;</tt> </p>       <tt>&gt;</tt> </p>
432    
433  <p><tt>&lt;!ELEMENT install-handler EMPTY&gt;</tt> <br>  <p><tt>&lt;!ELEMENT install-handler EMPTY&gt;</tt> <br>
434       <tt>&lt;!ATTLIST install-handler</tt> <br>       <tt>&lt;!ATTLIST install-handler</tt> <br>
435       <tt>&nbsp;&nbsp;&nbsp; library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA           <tt>&nbsp;&nbsp;&nbsp; library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
436    #IMPLIED</tt> <br>   CDATA    #IMPLIED</tt> <br>
437       <tt>&nbsp;&nbsp;&nbsp; handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA           <tt>&nbsp;&nbsp;&nbsp; handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
438    #IMPLIED</tt> <br>   CDATA    #IMPLIED</tt> <br>
439       <tt>&gt;</tt> </p>       <tt>&gt;</tt> </p>
440    
441  <p><tt>&lt;!ELEMENT description (#PCDATA)&gt;</tt> <br>  <p><tt>&lt;!ELEMENT description (#PCDATA)&gt;</tt> <br>
# Line 467  Line 478 
478       <tt>&lt;!ATTLIST includes</tt> <br>       <tt>&lt;!ATTLIST includes</tt> <br>
479       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
480     &nbsp;&nbsp;&nbsp; CDATA #REQUIRED</tt> <br>     &nbsp;&nbsp;&nbsp; CDATA #REQUIRED</tt> <br>
481       <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;           <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
482    CDATA #REQUIRED</tt>&nbsp;<br>   &nbsp;&nbsp;&nbsp;    CDATA #REQUIRED</tt>&nbsp;<br>
483       <tt>&nbsp;&nbsp;&nbsp; name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
484    &nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt> <br>    &nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt> <br>
485       <tt>&nbsp;&nbsp;&nbsp; optional &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; optional &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;&nbsp;
# Line 488  Line 499 
499    CDATA #IMPLIED</tt><br>    CDATA #IMPLIED</tt><br>
500       <tt>&nbsp;&nbsp;&nbsp; feature &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA       <tt>&nbsp;&nbsp;&nbsp; feature &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA
501  #IMPLIED</tt><br>  #IMPLIED</tt><br>
502       <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA           <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
503    #IMPLIED</tt> <br>   CDATA    #IMPLIED</tt> <br>
504       <tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
505   &nbsp;(perfect  | equivalent | compatible | greaterOrEqual) "compatible"</tt>&nbsp;<br>   &nbsp;(perfect  | equivalent | compatible | greaterOrEqual) "compatible"</tt>&nbsp;<br>
506       <tt>&nbsp;&nbsp;&nbsp; patch &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; patch &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;
# Line 501  Line 512 
512       <tt>&lt;!ATTLIST plugin</tt> <br>       <tt>&lt;!ATTLIST plugin</tt> <br>
513       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
514     CDATA #REQUIRED</tt> <br>     CDATA #REQUIRED</tt> <br>
515       <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA           <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
516    #REQUIRED</tt> <br>   CDATA    #REQUIRED</tt> <br>
517       <tt>&nbsp;&nbsp;&nbsp; fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true       <tt>&nbsp;&nbsp;&nbsp; fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true
518  |  false)  "false"</tt> <br>  |  false)  "false"</tt> <br>
519       <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# Line 541  Line 552 
552    <ul>    <ul>
553        <li> id - required feature identifier (eg. com.xyz.myfeature)</li>        <li> id - required feature identifier (eg. com.xyz.myfeature)</li>
554         <li> version - required component version (eg. 1.0.3)</li>         <li> version - required component version (eg. 1.0.3)</li>
555         <li> label - optional displayable label (name). Intended to be translated.</li>             <li> label - optional displayable label (name). Intended to be
556    translated.</li>
557         <li> provider-name - optional display label identifying the organization         <li> provider-name - optional display label identifying the organization
558    providing this component. Intended to be translated.</li>    providing this component. Intended to be translated.</li>
559         <li> image - optional image to use when displaying information about             <li> image - optional image to use when displaying information
560   the  feature.&nbsp; Specified relative to the feature.xml.</li>  about    the  feature.&nbsp; Specified relative to the feature.xml.</li>
561         <li> os - optional operating system specification. A comma-separated         <li> os - optional operating system specification. A comma-separated
562   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
563    . Indicates this feature should only be installed on one of the specified    . Indicates this feature should only be installed on one of the specified
# Line 554  Line 566 
566  a  hint by the installation and update support (user can force installation  a  hint by the installation and update support (user can force installation
567  of feature regardless of this setting).</li>  of feature regardless of this setting).</li>
568         <li> arch - optional machine architecture specification. A comma-separated         <li> arch - optional machine architecture specification. A comma-separated
569    list of architecture designators defined by Eclipse (see Javadoc for <tt>      list of architecture designators defined by Eclipse (see Javadoc for
570    org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only       <tt>     org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
571    be installed on one of the specified systems. If this attribute is not specified,  should only    be installed on one of the specified systems. If this attribute
572    the feature can be installed on all systems (portable implementation). This  is not specified,   the feature can be installed on all systems (portable
573    information is used as a hint by the installation and update support (user  implementation).  This   information is used as a hint by the installation
574    can force installation of feature regardless of this setting).</li>  and update support  (user   can force installation of feature regardless of
575    this setting).</li>
576         <li> ws - optional windowing system specification. A comma-separated         <li> ws - optional windowing system specification. A comma-separated
577   list  of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
578    . Indicates this feature should only be installed on one of the specified    . Indicates this feature should only be installed on one of the specified
# Line 567  Line 580 
580     on all systems (portable implementation). This information is used as     on all systems (portable implementation). This information is used as
581  a  hint by the installation and update support (user can force installation  a  hint by the installation and update support (user can force installation
582  of feature regardless of this setting).</li>  of feature regardless of this setting).</li>
583         <li> nl - optional locale specification. A comma-separated list of             <li> nl - optional locale specification. A comma-separated list
584  locale   designators defined by Java. Indicates this feature should only be   of  locale   designators defined by Java. Indicates this feature should
585  installed   on a system running with a compatible locale (using Java locale-matching  only  be installed   on a system running with a compatible locale (using
586   rules). If this attribute is not specified, the feature can be installed  Java locale-matching    rules). If this attribute is not specified, the feature
587  on all systems (language-neutral implementation). This information is used  can be installed   on all systems (language-neutral implementation). This
588  as a hint by the installation and update support (user can force installation  information is used   as a hint by the installation and update support (user
589   of feature regardless of this setting).</li>  can force installation    of feature regardless of this setting).</li>
590         <li> colocation-affinity - optional reference to another feature identifier             <li> colocation-affinity - optional reference to another feature
591     used to select the default installation location for this feature. When   identifier    used to select the default installation location for this feature.
592   this feature is being installed as a new feature (no other versions of it   When  this feature is being installed as a new feature (no other versions
593   are installed), an attempt is made to install this feature in the same installation   of it  are installed), an attempt is made to install this feature in the
594    location as the referenced feature.</li>  same installation    location as the referenced feature.</li>
595         <li> primary - optional indication specifying whether this feature         <li> primary - optional indication specifying whether this feature
596  can   be used as a <a href="#Dominant_Feature">primary feature</a> . Default  can   be used as a <a href="#Dominant_Feature">primary feature</a> . Default
597  if        <i>false</i> (not a primary feature).</li>  if        <i>false</i> (not a primary feature).</li>
# Line 595  Line 608 
608        <li> library - optional .jar library containing the install handler        <li> library - optional .jar library containing the install handler
609  classes.   If specified, the referenced .jar must be contained in the feature  classes.   If specified, the referenced .jar must be contained in the feature
610  archive.   It is specified as a path within the feature archive, relative  archive.   It is specified as a path within the feature archive, relative
611  to the feature.xml   entry. If not specified, the feature archive itself is    to the feature.xml   entry. If not specified, the feature archive itself
612  used to load the install handler classes. This attribute is only interpreted   is used to load the install handler classes. This attribute is only interpreted
613  if <i>class</i> attribute is also specified</li>  if <i>class</i> attribute is also specified</li>
614         <li> handler - optional identifier of the install handler. The value             <li> handler - optional identifier of the install handler. The
615   is  interpreted depending on the value of the <i>library</i> attribute. If  value    is  interpreted depending on the value of the <i>library</i> attribute.
616         <i>  library</i> is specified,&nbsp; the value is interpreted as a   If        <i>  library</i> is specified,&nbsp; the value is interpreted as
617  fully qualified  name of a class contained in the specified <i>library</i>.   a fully qualified  name of a class contained in the specified <i>library</i>.
618  If       <i>library</i>   is not specified, the value is is interpreted as    If       <i>library</i>   is not specified, the value is is interpreted
619  an extension identifier  of an extension registered in the <i>org.eclipse.update.installHandlers</i>  as  an extension identifier  of an extension registered in the <i>org.eclipse.update.installHandlers</i>
620     extension point. In either case, the resulting class must implement the     extension point. In either case, the resulting class must implement the
621          <i> IInstallHandler</i> interface. The class is dynamically loaded          <i> IInstallHandler</i> interface. The class is dynamically loaded
622   and called at specific points during feature processing. The handler has   and called at specific points during feature processing. The handler has
# Line 611  Line 624 
624  required by the update plugin.</li>  required by the update plugin.</li>
625    
626    </ul>    </ul>
627         <li> &lt;description&gt; - brief component description as simple text.             <li> &lt;description&gt; - brief component description as simple
628    Intended to be translated.</li>   text.    Intended to be translated.</li>
629    
630    <ul>    <ul>
631        <li> url - optional URL for the full description as HTML. The URL can            <li> url - optional URL for the full description as HTML. The URL
632   be  specified as absolute of relative. If relative, it is assumed to be relative   can   be  specified as absolute of relative. If relative, it is assumed to
633    to (and packaged in) the feature archive. Note, that for NL handling the   be relative   to (and packaged in) the feature archive. Note, that for NL
634   URL value should be separated to allow alternate URLs to be specified for   handling the  URL value should be separated to allow alternate URLs to be
635   each national language.</li>   specified for  each national language. &nbsp;URL support keywords $os$,$ws$,$arch$
636    and $nl$ that will be replaced by the appropriate operating system, windowing
637    system, operating architecture or national language value.</li>
638    
639    </ul>    </ul>
640         <li> &lt;copyright&gt; - feature copyright as simple text. Intended         <li> &lt;copyright&gt; - feature copyright as simple text. Intended
641   to  be translated.</li>   to  be translated.</li>
642    
643    <ul>    <ul>
644        <li> url - optional URL for the full description as HTML. The URL can            <li> url - optional URL for the full description as HTML. The URL
645   be  specified as absolute of relative. If relative, it is assumed to be relative   can   be  specified as absolute of relative. If relative, it is assumed to
646    to (and packaged in) the feature archive. Note, that for NL handling the   be relative   to (and packaged in) the feature archive. Note, that for NL
647   URL value should be separated to allow alternate URLs to be specified for   handling the  URL value should be separated to allow alternate URLs to be
648   each national language.</li>   specified for  each national language. URL support keywords $os$,$ws$,$arch$
649    and $nl$ that will be replaced by the appropriate operating system, windowing
650    </ul>  system, operating architecture or national language value.</li>
651         <li> &lt;license&gt; - feature "click-through" license as simple text.  
652    Intended to be translated. It is displayed in a standard dialog with [Accept]    </ul>
653    [Reject] actions during the download/ installation process. Note, that click-through             <li> &lt;license&gt; - feature "click-through" license as simple
654    license must be specified for any feature that will be selected for installation   text.    Intended to be translated. It is displayed in a standard dialog
655    or update using the Eclipse update manager. When using nested features,  with [Accept]    [Reject] actions during the download/ installation process.
656  only the nesting parent (ie. the feature selected for installation or update)  Note, that click-through   license must be specified for any feature that
657  must have click-through license text defined. The license text is required  will be selected for installation   or update using the Eclipse update manager.
658  even if the optional <i>url</i> attribute is specified.</li>   When using nested features, only the nesting parent (ie. the feature selected
659     for installation or update) must have click-through license text defined.
660    <ul>   The license text is required even if the optional <i>url</i> attribute is
661        <li> url - optional URL for the full description as HTML. The URL can   specified.</li>
662   be  specified as absolute of relative. If relative, it is assumed to be relative  
663    to (and packaged in) the feature archive. Note, that for NL handling the    <ul>
664   URL value should be separated to allow alternate URLs to be specified for            <li> url - optional URL for the full description as HTML. The URL
665   each national language. Note, that the "content" of this URL is <b>not</b>   can   be  specified as absolute of relative. If relative, it is assumed to
666    what is presented as the click-through license during installation processing.   be relative   to (and packaged in) the feature archive. Note, that for NL
667    The click-through license is the actual value of the <i>&lt;license&gt;</i>   handling the  URL value should be separated to allow alternate URLs to be
668     element (eg. <tt>&lt;license&gt;click through text&lt;/license&gt;</tt>)</li>   specified for  each national language. Note, that the "content" of this URL
669     is <b>not</b>    what is presented as the click-through license during installation
670     processing.    The click-through license is the actual value of the <i>&lt;license&gt;</i>
671         element (eg. <tt>&lt;license&gt;click through text&lt;/license&gt;</tt>).&nbsp;URL
672    support keywords $os$,$ws$,$arch$ and $nl$ that will be replaced by the appropriate
673    operating system, windowing system, operating architecture or national language
674    value.</li>
675    
676    </ul>    </ul>
677         <li> &lt;url&gt; - optional URL specifying site(s) contain feature         <li> &lt;url&gt; - optional URL specifying site(s) contain feature
# Line 676  Line 697 
697      </ul>      </ul>
698    
699    </ul>    </ul>
700         <li> &lt;includes&gt; - optional reference to a nested feature that             <li> &lt;includes&gt; - optional reference to a nested feature
701   is  considered to be part of this feature. Nested features must be located  that   is  considered to be part of this feature. Nested features must be
702   on  the same update site as this feature</li>  located   on  the same update site as this feature</li>
703    
704    <ul>    <ul>
705        <li> id - required nested feature identifier</li>        <li> id - required nested feature identifier</li>
706         <li> version - required nested feature version</li>         <li> version - required nested feature version</li>
707           <li> name- optional displayable label (name). Intended to be translated.</li>               <li> name- optional displayable label (name). Intended to be
708    translated.</li>
709           <li>optional - optional specification indicating if this included           <li>optional - optional specification indicating if this included
710   feature  can be optionally installed. Default is "false"<br>   feature  can be optionally installed. Default is "false"<br>
711           </li>           </li>
712           <li>match&nbsp; - optional rule that will be applied when resolving           <li>match&nbsp; - optional rule that will be applied when resolving
713    the feature reference. A <samp>perfect</samp> match (the default that matches      the feature reference. A <samp>perfect</samp> match (the default that
714    the 2.0.1 behavior) requires that the feature has exactly the version specified  matches    the 2.0.1 behavior) requires that the feature has exactly the
715    by the version attribute. Other choices progressively relax the rule (<samp>  version specified    by the version attribute. Other choices progressively
716    equivalent</samp> allows only service part of the version to be more recent,  relax the rule (<samp>    equivalent</samp> allows only service part of the
717          <samp>compatible</samp> also allows minor part to be included in the  version to be more recent,          <samp>compatible</samp> also allows minor
718    consideration, while <samp>greaterOrEqual</samp> simply allows any version  part to be included in the   consideration, while <samp>greaterOrEqual</samp>
719    that is more recent or identical to the one specified).</li>   simply allows any version   that is more recent or identical to the one specified).</li>
720           <li>search_location&nbsp; - optional. Indicates whether the "New               <li>search_location&nbsp; - optional. Indicates whether the
721  Updates"   action should search the update location determined by the nesting  "New   Updates"   action should search the update location determined by
722  root feature  (<tt>root</tt>, is the default), or the location defined by  the nesting   root feature  (<tt>root</tt>, is the default), or the location
723  the nested feature  (<tt>self</tt>), or search both (<tt>both</tt>) in that  defined by   the nested feature  (<tt>self</tt>), or search both (<tt>both</tt>)
724  order (root first,  self if nothing is found).</li>  in that   order (root first,  self if nothing is found).</li>
725    
726    </ul>    </ul>
727         <li> &lt;requires&gt; - optional feature dependency information. Is             <li> &lt;requires&gt; - optional feature dependency information.
728   expressed  in terms of plug-in dependencies. If specified, is enforced by   Is  expressed  in terms of plug-in dependencies. If specified, is enforced
729   the installation   and update support at the time of installation</li>   by  the installation   and update support at the time of installation</li>
730    
731    <ul>    <ul>
732        <li> &lt;import&gt; - dependency entry. Specification and processing        <li> &lt;import&gt; - dependency entry. Specification and processing
# Line 712  Line 734 
734    
735      <ul>      <ul>
736        <li> plugin - identifier of dependent plug-in.</li>        <li> plugin - identifier of dependent plug-in.</li>
737             <li> feature - identifier of dependent feature. If plugin and                 <li> feature - identifier of dependent feature. If plugin
738  feature   are specified, plugin takes precedence upon feature. Feature or  and   feature   are specified, plugin takes precedence upon feature. Feature
739  plugin must   be specified.</li>  or   plugin must   be specified.</li>
740         <li> version - optional plug-in/feature version specification</li>         <li> version - optional plug-in/feature version specification</li>
741             <li>patch - optional specification indicating if this feature             <li>patch - optional specification indicating if this feature
742  is  a  patch of the dependant feature. Default is "false". If patch is true,    is  a  patch of the dependant feature. Default is "false". If patch is
743  version  must be specified. If patch is true, only feature must be specified.  true,   version  must be specified. If patch is true, only feature must be
744  If patch  is true, and match is specified, it must be 'perfect'.<br>  specified.   If patch  is true, and match is specified, it must be 'perfect'.<br>
745             </li>             </li>
746         <li> match - optional matching rule. Valid values and processing are             <li> match - optional matching rule. Valid values and processing
747   as  follows:</li>   are   as  follows:</li>
748    
749    
750        <ul>        <ul>
751        <li> if version attribute is not specified, the match attribute (if            <li> if version attribute is not specified, the match attribute
752  specified)   is ignored.</li>  (if   specified)   is ignored.</li>
753               <li>if version is specified, match defaults to compatible.<br>               <li>if version is specified, match defaults to compatible.<br>
754               </li>               </li>
755               <li>if patch is true, and match is not specified, match defaults                   <li>if patch is true, and match is not specified, match
756    to perfect.<br>  defaults     to perfect.<br>
757               </li>               </li>
758         <li> <b><i>perfect</i></b> - dependent plug-in version must match         <li> <b><i>perfect</i></b> - dependent plug-in version must match
759  exactly   the specified version.</li>  exactly   the specified version.</li>
760         <li> <b><i>equivalent</i></b> - dependent plug-in version must be             <li> <b><i>equivalent</i></b> - dependent plug-in version must
761  at  least  at the version specified, or at a higher service level (major  be  at  least  at the version specified, or at a higher service level (major
762  and minor version  levels must equal the specified version).</li>  and minor version  levels must equal the specified version).</li>
763         <li> <b><i>compatible</i></b> - dependent plug-in version must be             <li> <b><i>compatible</i></b> - dependent plug-in version must
764  at  least  at the version specified, or at a higher service level or minor  be  at  least  at the version specified, or at a higher service level or minor
765  level  (major  version level must equal the specified version).</li>  level  (major  version level must equal the specified version).</li>
766         <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version must             <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version
767  be  at least at the version specified, or at a higher service, minor or major  must   be  at least at the version specified, or at a higher service, minor
768    level.</li>  or major   level.</li>
769    
770        </ul>        </ul>
771    
# Line 754  Line 777 
777    <ul>    <ul>
778        <li> id - required plug-in identifier (from plugin.xml)</li>        <li> id - required plug-in identifier (from plugin.xml)</li>
779         <li> version - required plug-in version (from plugin.xml)</li>         <li> version - required plug-in version (from plugin.xml)</li>
780         <li> fragment - optional specification indicating if this entry is             <li> fragment - optional specification indicating if this entry
781  a  plug-in  fragment. Default is "false"</li>   is  a  plug-in  fragment. Default is "false"</li>
782         <li> os - optional operating system specification. A comma-separated         <li> os - optional operating system specification. A comma-separated
783   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
784    . Indicates this entry should only be installed on one of the specified    . Indicates this entry should only be installed on one of the specified
785  os  systems. If this attribute is not specified, the entry can be installed  os  systems. If this attribute is not specified, the entry can be installed
786    on all systems (portable implementation). This information is used as a      on all systems (portable implementation). This information is used as
787  hint  by the installation and update support (user can force installation  a  hint  by the installation and update support (user can force installation
788  of entry  regardless of this setting).</li>  of entry  regardless of this setting).</li>
789         <li> arch - optional machine architecture specification. A comma-separated         <li> arch - optional machine architecture specification. A comma-separated
790    list of architecture designators defined by Eclipse (see Javadoc for <tt>      list of architecture designators defined by Eclipse (see Javadoc for
791    org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only       <tt>     org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
792    be installed on one of the specified systems. If this attribute is not specified,  should only    be installed on one of the specified systems. If this attribute
793    the feature can be installed on all systems (portable implementation). This  is not specified,   the feature can be installed on all systems (portable
794    information is used as a hint by the installation and update support (user  implementation).  This   information is used as a hint by the installation
795    can force installation of feature regardless of this setting).</li>  and update support  (user   can force installation of feature regardless of
796    this setting).</li>
797         <li> ws - optional windowing system specification. A comma-separated         <li> ws - optional windowing system specification. A comma-separated
798   list  of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
799    . Indicates this entry should only be installed on one of the specified    . Indicates this entry should only be installed on one of the specified
800  ws  systems. If this attribute is not specified, the entry can be installed  ws  systems. If this attribute is not specified, the entry can be installed
801    on all systems (portable implementation). This information is used as a      on all systems (portable implementation). This information is used as
 hint  by the installation and update support (user can force installation  
 of entry  regardless of this setting).</li>  
        <li> nl - optional locale specification. A comma-separated list of  
 locale   designators defined by Java. Indicates this entry should only be  
 installed   on a system running with a compatible locale (using Java locale-matching  
  rules). If this attribute is not specified, the entry can be installed on  
  all systems (language-neutral implementation). This information is used as  
802   a hint by the installation and update support (user can force installation   a hint by the installation and update support (user can force installation
803   of entry regardless of this setting).</li>   of entry regardless of this setting).</li>
804               <li> nl - optional locale specification. A comma-separated list
805     of  locale   designators defined by Java. Indicates this entry should only
806     be  installed   on a system running with a compatible locale (using Java
807    locale-matching   rules). If this attribute is not specified, the entry can
808    be installed on   all systems (language-neutral implementation). This information
809    is used as  a hint by the installation and update support (user can force
810    installation   of entry regardless of this setting).</li>
811         <li> download-size - optional hint supplied by the feature packager,         <li> download-size - optional hint supplied by the feature packager,
812   indicating  the download size in KBytes of the referenced plug-in archive.   indicating  the download size in KBytes of the referenced plug-in archive.
813   If not specified,  the download size is not known (<b>Implementation Note:</b>   If not specified,  the download size is not known (<b>Implementation Note:</b>
# Line 794  Line 818 
818   the implementation   needs to distinguish between "not known" and 0 size)</li>   the implementation   needs to distinguish between "not known" and 0 size)</li>
819    
820    </ul>    </ul>
821         <li> &lt;data&gt; - identifies non-plugin and non-feature data that             <li> &lt;data&gt; - identifies non-plugin and non-feature data
822  is part of the feature. Generally, data are post-install processed using  that  is part of the feature. Generally, data are post-install processed using
823  feature Install handler. Feature files like feature.properties are not considered  feature Install handler. Feature files like feature.properties are not considered
824  data.</li>  data.</li>
825    
# Line 805  Line 829 
829   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
830    . Indicates this entry should only be installed on one of the specified    . Indicates this entry should only be installed on one of the specified
831  os  systems. If this attribute is not specified, the entry can be installed  os  systems. If this attribute is not specified, the entry can be installed
832    on all systems (portable implementation). This information is used as a      on all systems (portable implementation). This information is used as
833  hint  by the installation and update support (user can force installation  a  hint  by the installation and update support (user can force installation
834  of entry  regardless of this setting).</li>  of entry  regardless of this setting).</li>
835         <li> arch - optional machine architecture specification. A comma-separated         <li> arch - optional machine architecture specification. A comma-separated
836    list of architecture designators defined by Eclipse (see Javadoc for <tt>      list of architecture designators defined by Eclipse (see Javadoc for
837    org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only       <tt>     org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
838    be installed on one of the specified systems. If this attribute is not specified,  should only    be installed on one of the specified systems. If this attribute
839    the feature can be installed on all systems (portable implementation). This  is not specified,   the feature can be installed on all systems (portable
840    information is used as a hint by the installation and update support (user  implementation).  This   information is used as a hint by the installation
841    can force installation of feature regardless of this setting).</li>  and update support  (user   can force installation of feature regardless of
842    this setting).</li>
843         <li> ws - optional windowing system specification. A comma-separated         <li> ws - optional windowing system specification. A comma-separated
844   list  of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
845    . Indicates this entry should only be installed on one of the specified    . Indicates this entry should only be installed on one of the specified
846  ws  systems. If this attribute is not specified, the entry can be installed  ws  systems. If this attribute is not specified, the entry can be installed
847    on all systems (portable implementation). This information is used as a      on all systems (portable implementation). This information is used as
 hint  by the installation and update support (user can force installation  
 of entry  regardless of this setting).</li>  
        <li> nl - optional locale specification. A comma-separated list of  
 locale   designators defined by Java. Indicates this entry should only be  
 installed   on a system running with a compatible locale (using Java locale-matching  
  rules). If this attribute is not specified, the entry can be installed on  
  all systems (language-neutral implementation). This information is used as  
848   a hint by the installation and update support (user can force installation   a hint by the installation and update support (user can force installation
849   of entry regardless of this setting).</li>   of entry regardless of this setting).</li>
850               <li> nl - optional locale specification. A comma-separated list
851     of  locale   designators defined by Java. Indicates this entry should only
852     be  installed   on a system running with a compatible locale (using Java
853    locale-matching   rules). If this attribute is not specified, the entry can
854    be installed on   all systems (language-neutral implementation). This information
855    is used as  a hint by the installation and update support (user can force
856    installation   of entry regardless of this setting).</li>
857         <li> download-size - optional hint supplied by the feature packager,         <li> download-size - optional hint supplied by the feature packager,
858   indicating  the download size in KBytes of the referenced data archive. If     indicating  the download size in KBytes of the referenced data archive.
859   not specified,  the download size is not known (<b>Implementation Note:</b>   If  not specified,  the download size is not known (<b>Implementation Note:</b>
860   the implementation  needs to distinguish between "not known" and 0 size)</li>   the implementation  needs to distinguish between "not known" and 0 size)</li>
861         <li> install-size - optional hint supplied by the feature packager,         <li> install-size - optional hint supplied by the feature packager,
862   indicating   the install size in KBytes of the referenced data archive.   indicating   the install size in KBytes of the referenced data archive.
# Line 843  Line 868 
868  </ul>  </ul>
869        <a name="Feature_Archive_Mapping_Id_To_Path"></a> When interacting        <a name="Feature_Archive_Mapping_Id_To_Path"></a> When interacting
870  with   the update site, the feature implementation maps the <tt>&lt;plugin&gt;</tt>  with   the update site, the feature implementation maps the <tt>&lt;plugin&gt;</tt>
871    and <tt>&lt;data&gt;</tt> elements into path identifiers used by the site      and <tt>&lt;data&gt;</tt> elements into path identifiers used by the
872    to determine the actual files to download and install. The default feature  site     to determine the actual files to download and install. The default
873    implementation supplied by Eclipse constructs the path identifiers as follows:  feature     implementation supplied by Eclipse constructs the path identifiers
874    as follows:
875  <ul>  <ul>
876        <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in the            <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in
877  form   "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>" (for  the   form   "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>"
878  example,   "<tt>plugins/org.eclipse.core.boot_1.0.3.jar</tt>")</li>  (for   example,   "<tt>plugins/org.eclipse.core.boot_1.0.3.jar</tt>")</li>
879         <li> <tt>&lt;data&gt;</tt> element results in a path entry in the             <li> <tt>&lt;data&gt;</tt> element results in a path entry in
880  form   "<tt>features/&lt;featureId&gt;_&lt;featureVersion&gt;/&lt;dataId&gt;</tt>  the   form   "<tt>features/&lt;featureId&gt;_&lt;featureVersion&gt;/&lt;dataId&gt;</tt>
881    " (for example, "f<tt>eatures/com.xyz.tools_2.3.1/examples.zip</tt>")</li>    " (for example, "f<tt>eatures/com.xyz.tools_2.3.1/examples.zip</tt>")</li>
882    
883  </ul>  </ul>
884        Note, that in general the feature.xml&nbsp; manifest documents should            Note, that in general the feature.xml&nbsp; manifest documents
885   specify  UTF-8 encoding. For example  should    specify  UTF-8 encoding. For example
886  <p><tt>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </p>  <p><tt>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </p>
887    
888  <p>Translatable text contained in the feature.xml can be separated into feature&lt;_locale&gt;.properties  <p>Translatable text contained in the feature.xml can be separated into feature&lt;_locale&gt;.properties
889    files using Java property bundle conventions. Note that the translated strings      files using Java property bundle conventions. Note that the translated
890    are used at installation time (ie. do not employ the plug-in fragment runtime   strings   are used at installation time (ie. do not employ the plug-in fragment
891    mechanism). </p>   runtime   mechanism). </p>
892    
893  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>
894        Plug-ins and plug-in fragments are individually packaged as separate        Plug-ins and plug-in fragments are individually packaged as separate
# Line 875  Line 900 
900    
901  <p>Where <tt>&lt;id&gt;</tt> is the plug-in or fragment identifier and <tt>  <p>Where <tt>&lt;id&gt;</tt> is the plug-in or fragment identifier and <tt>
902    &lt;version&gt;</tt> is the full version identifier contained in the respective    &lt;version&gt;</tt> is the full version identifier contained in the respective
903    plugin.xml or fragment.xml. Note that this is a recommended convention that      plugin.xml or fragment.xml. Note that this is a recommended convention
904    minimizes chance of collisions, but is not required by the Eclipse architecture.   that   minimizes chance of collisions, but is not required by the Eclipse
905    For example, the following are valid plug-in archive names </p>   architecture.   For example, the following are valid plug-in archive names
906     </p>
907    
908  <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>  <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>
909       <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>       <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>
# Line 890  Line 916 
916  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>
917       <tt>other plug-in or feature files and subdirectories</tt> <br>       <tt>other plug-in or feature files and subdirectories</tt> <br>
918       <tt>META-INF/</tt> <br>       <tt>META-INF/</tt> <br>
919       <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt> </p>           <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt>
920    </p>
921    
922  <h3> <a name="Packaging_NL"></a> Packaging NL</h3>  <h3> <a name="Packaging_NL"></a> Packaging NL</h3>
923        In Eclipse, translated plug-in information is packaged either together        In Eclipse, translated plug-in information is packaged either together
924    with the base plug-in, or as a plug-in fragment. At runtime, Eclipse locates      with the base plug-in, or as a plug-in fragment. At runtime, Eclipse
925    the translations for the required locale. The use of fragments allows translations  locates     the translations for the required locale. The use of fragments
926     to be added to the runtime without the need to repackage the base plug-ins.  allows translations     to be added to the runtime without the need to repackage
927    the base plug-ins.
928  <p>This mechanism cannot be used for translating the actual packaging information  <p>This mechanism cannot be used for translating the actual packaging information
929     that is part of the installation xml files. Consequently the standard     that is part of the installation xml files. Consequently the standard
930  Java    translation conventions are used for the packaging information, and   Java    translation conventions are used for the packaging information,
931  all  necessary translations must be available at the time the feature is  and  all  necessary translations must be available at the time the feature
932  packaged.  </p>  is packaged.  </p>
933    
934  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>
935        <b>Note:</b> This section describes the conventions used for translating        <b>Note:</b> This section describes the conventions used for translating
936     the information contained within the feature manifest. It allows for the       the information contained within the feature manifest. It allows for
937    update client to select the correctly localized strings from the update  the    update client to select the correctly localized strings from the update
938  server.  This section specifically does not describe localization of individual  server.  This section specifically does not describe localization of individual
939  plug-ins.  plug-ins.
940  <p>Several of the attributes within the feature manifest are strings intended  <p>Several of the attributes within the feature manifest are strings intended
# Line 935  Line 962 
962    
963  <p><tt>ResourceBundle b;</tt> <br>  <p><tt>ResourceBundle b;</tt> <br>
964       <tt>ClassLoader l;</tt> <br>       <tt>ClassLoader l;</tt> <br>
965       <tt>l = new URLClassLoader(new URL[] {&lt;targetDirectoryURL&gt;}, null);</tt>           <tt>l = new URLClassLoader(new URL[] {&lt;targetDirectoryURL&gt;},
966     <br>   null);</tt>     <br>
967       <tt>b = ResourceBundle.getBundle("feature",Locale.getDefault(),l);</tt>       <tt>b = ResourceBundle.getBundle("feature",Locale.getDefault(),l);</tt>
968    </p>    </p>
969    
# Line 967  Line 994 
994  <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>  <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>
995        Custom install handlers are written as a Java class and are packaged        Custom install handlers are written as a Java class and are packaged
996   as  part of the <a href="#Feature_Archive">feature archive</a> . The installer   as  part of the <a href="#Feature_Archive">feature archive</a> . The installer
997    must implement the <tt>IInstallHandler</tt> interface (in most cases will      must implement the <tt>IInstallHandler</tt> interface (in most cases
998    extend the <tt>BaseInstallHandler</tt> abstract helper class which implements  will     extend the <tt>BaseInstallHandler</tt> abstract helper class which
999    <tt>IInstallHandler</tt>). When required, the install handler is dynamically  implements     <tt>IInstallHandler</tt>). When required, the install handler
1000    loaded by the installation and update code, and is called at specific points  is dynamically     loaded by the installation and update code, and is called
1001    during its processing. The install handler code has visibility to classes  at specific points    during its processing. The install handler code has
1002    from the installation and update support plug-in, and its prerequisite  visibility to classes    from the installation and update support plug-in,
1003  plug-ins.  and its prerequisite  plug-ins.
1004  <p><b>Implementation Note:</b> the detailed list of visible prerequisite  <p><b>Implementation Note:</b> the detailed list of visible prerequisite
1005  plug-ins is still evolving. It is expected to include <tt>org.eclipse.core.boot  plug-ins is still evolving. It is expected to include <tt>org.eclipse.core.boot
1006  </tt> and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>  </tt> and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>
# Line 988  Line 1015 
1015  a functional    description)]: </p>  a functional    description)]: </p>
1016    
1017  <ul>  <ul>
1018        <li> install-initiated - the install handler is called after a feature            <li> install-initiated - the install handler is called after a
1019    was selected for installation, but before any files were downloaded. It  feature     was selected for installation, but before any files were downloaded.
1020  is  intended  to implement any custom click-through or user registration  It   is  intended  to implement any custom click-through or user registration
1021  dialogs.  The base implementation of this method supplied with the abstract  dialogs.  The base implementation of this method supplied with the abstract
1022  class     <tt>BaseInstallHandler       </tt>performs the default click-through  class     <tt>BaseInstallHandler       </tt>performs the default click-through
1023  processing using the license  text supplied as part of the feature manifest.  processing using the license  text supplied as part of the feature manifest.
1024  On return this method indicates  success (installation continues) of failure  On return this method indicates  success (installation continues) of failure
1025  (installation is aborted).</li>  (installation is aborted).</li>
1026         <li> install-downloaded - the install handler is called after all             <li> install-downloaded - the install handler is called after
1027  the   required  feature files were downloaded (feature, plugins, data) but  all   the   required  feature files were downloaded (feature, plugins, data)
1028  before   the actual  installation is performed. The install handler is expected  but   before   the actual  installation is performed. The install handler
1029  to   perform verification  of the non-plug-in data files (eg. security),  is expected   to   perform verification  of the non-plug-in data files (eg.
1030  or any   other pre-install processing.&nbsp; On return this method indicates  security),  or any   other pre-install processing.&nbsp; On return this method
1031  success   (installation continues) or failure (installation is aborted).</li>  indicates   success   (installation continues) or failure (installation is
1032         <li> install-completion - the install handler is called after the  aborted).</li>
1033  feature   information and the plug-ins were installed. It is expected to             <li> install-completion - the install handler is called after
1034  complete the  installation of any non-plug-in data that was part of the feature.  the   feature   information and the plug-ins were installed. It is expected
1035  On return  this method indicates success (returns custom install log) or  to  complete the  installation of any non-plug-in data that was part of the
1036  failure (installation  is aborted). On failure, the install handler is expected  feature.  On return  this method indicates success (returns custom install
1037  to perform any required cleanup.</li>  log) or failure (installation  is aborted). On failure, the install handler
1038         <li> uninstall-initiated - the install handler is called when a feature  is expected to perform any required cleanup.</li>
1039    is selected for removal, but before any of the standard uninstall processing             <li> uninstall-initiated - the install handler is called when
1040    has taken place. It is passed the custom install log created by the install  a  feature    is selected for removal, but before any of the standard uninstall
1041    handler install-completion step.</li>   processing    has taken place. It is passed the custom install log created
1042     by the install    handler install-completion step.</li>
1043         <li> uninstall-completion - the install handler is called on completion         <li> uninstall-completion - the install handler is called on completion
1044    of the standard uninstall steps. It is passed the custom install log created    of the standard uninstall steps. It is passed the custom install log created
1045    by the install handler install-completion step.</li>    by the install handler install-completion step.</li>
# Line 1026  Line 1054 
1054  <p>Features are verified as follows: </p>  <p>Features are verified as follows: </p>
1055    
1056  <ul>  <ul>
1057        <li> download and verify the feature archive (use base Java jar verification)</li>            <li> download and verify the feature archive (use base Java jar
1058    verification)</li>
1059         <li> for each plug-in archive</li>         <li> for each plug-in archive</li>
1060    
1061    <ul>    <ul>
1062        <li> verify the archive jar content (use base Java jar verification)</li>        <li> verify the archive jar content (use base Java jar verification)</li>
1063         <li> verify plug-in id and version from <tt>&lt;plugin&gt;</tt> entry             <li> verify plug-in id and version from <tt>&lt;plugin&gt;</tt>
1064    in feature manifest matches downloaded plugin.xml</li>   entry    in feature manifest matches downloaded plugin.xml</li>
1065    
1066    </ul>    </ul>
1067         <li> for each non-plugin file</li>         <li> for each non-plugin file</li>
# Line 1044  Line 1073 
1073    
1074  </ul>  </ul>
1075        In general, when processing signed jars, the user will be prompted        In general, when processing signed jars, the user will be prompted
1076  for   each unrecognized certificate. The response choices will include aborting    for   each unrecognized certificate. The response choices will include
1077    the installation (originator is not trusted), continuing the installation  aborting     the installation (originator is not trusted), continuing the
1078    (originator is trusted for this installation).  installation     (originator is trusted for this installation).
1079  <h2> <a name="Update_Server"></a> Update Server</h2>  <h2> <a name="Update_Server"></a> Update Server</h2>
1080        The default Eclipse update server is any URL-accessible server. The            The default Eclipse update server is any URL-accessible server.
1081  default   implementation assumes a fixed-layout server. The content of the  The   default   implementation assumes a fixed-layout server. The content
1082  server (in terms of available features and plug-ins) is described in a site  of the   server (in terms of available features and plug-ins) is described
1083  map file, <i>site.xml</i>. This file can be manually maintained, or can be  in a site   map file, <i>site.xml</i>. This file can be manually maintained,
1084  dynamically   computed by the server.  or can be  dynamically   computed by the server.
1085  <h3> <a name="Site_Map"></a> Site Map</h3>  <h3> <a name="Site_Map"></a> Site Map</h3>
1086        The update server URL can be specified as a full URL to the site map            The update server URL can be specified as a full URL to the site
1087   file,   or a URL of a directory path containing the site map file (similar   map   file,   or a URL of a directory path containing the site map file
1088   to index.html   processing). The site map site.xml format is defined by  (similar    to index.html   processing). The site map site.xml format is
1089  the  following dtd:  defined by  the  following dtd:
1090  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
1091    
1092  <p><tt>&lt;!ELEMENT site (description?, feature*, archive*, category-def*)&gt;</tt>  <p><tt>&lt;!ELEMENT site (description?, feature*, archive*, category-def*)&gt;</tt>
# Line 1081  Line 1110 
1110     CDATA #IMPLIED</tt> <br>     CDATA #IMPLIED</tt> <br>
1111       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1112     CDATA #IMPLIED</tt> <br>     CDATA #IMPLIED</tt> <br>
1113       <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA           <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1114    #IMPLIED</tt> <br>   CDATA    #IMPLIED</tt> <br>
1115       <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1116     CDATA #REQUIRED<br>     CDATA #REQUIRED<br>
1117      &nbsp;&nbsp;&nbsp; label &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CDATA      &nbsp;&nbsp;&nbsp; label &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CDATA
# Line 1127  Line 1156 
1156        <li> &lt;site&gt; - defines the site map</li>        <li> &lt;site&gt; - defines the site map</li>
1157    
1158    <ul>    <ul>
1159        <li> type - optional site type specification. The value refers to a            <li> type - optional site type specification. The value refers
1160  type   string registered via the <a href="#Framework">install framework</a>  to  a  type   string registered via the <a href="#Framework">install framework</a>
1161   extension  point. If not specified, the type is assumed to be the default   extension  point. If not specified, the type is assumed to be the default
1162  Eclipse site  type (as specified in this document).</li>  Eclipse site  type (as specified in this document).</li>
1163         <li> url - optional URL defining the update site baseline URL (used             <li> url - optional URL defining the update site baseline URL
1164   to  determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;  (used    to  determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;
1165    Can be relative or absolute. If relative, is relative to site.xml. If not      Can be relative or absolute. If relative, is relative to site.xml. If
1166    specified, the default is the URL location of the site.xml file.</li>  not    specified, the default is the URL location of the site.xml file.</li>
1167    
1168    </ul>    </ul>
1169         <li> &lt;description&gt; - brief description as simple text. Intended         <li> &lt;description&gt; - brief description as simple text. Intended
1170    to be translated.</li>    to be translated.</li>
1171    
1172    <ul>    <ul>
1173        <li> url - optional URL for the full description as HTML. The URL can            <li> url - optional URL for the full description as HTML. The URL
1174   be  specified as absolute of relative. If relative, If relative, is relative   can   be  specified as absolute of relative. If relative, If relative, is
1175   to site.xml.</li>   relative   to site.xml.</li>
1176         <br>         <br>
1177       Note, that for NL handling the URL value should be separated to allow           Note, that for NL handling the URL value should be separated to
1178   alternate  URLs to be specified for each national language.  allow    alternate  URLs to be specified for each national language.
1179    
1180    </ul>    </ul>
1181         <li> &lt;feature&gt; - identifies referenced feature archive</li>         <li> &lt;feature&gt; - identifies referenced feature archive</li>
1182    
1183    <ul>    <ul>
1184        <li> type - optional feature type specification. The value refers to            <li> type - optional feature type specification. The value refers
1185   a  type  string registered via the <a href="#Framework">install framework</a>   to  a  type  string registered via the <a href="#Framework">install framework</a>
1186     extension point. If not specified, the type is assumed to be the default     extension point. If not specified, the type is assumed to be the default
1187    feature type for the site. If the site type is the default Eclipse site    feature type for the site. If the site type is the default Eclipse site
1188  type,  the default feature type is the packaged feature type (as specified  type,  the default feature type is the packaged feature type (as specified
1189  in this  document).</li>  in this  document).</li>
1190         <li> id - optional feature identifier. The information is used as             <li> id - optional feature identifier. The information is used
1191  a  performance   optimization to speed up searches for features. Must match  as  a  performance   optimization to speed up searches for features. Must
1192  the identifier   specified in the feature.xml of the referenced archive (the  match  the identifier   specified in the feature.xml of the referenced archive
1193  url attribute).   If specified, the version attribute must also be specified.</li>   (the  url attribute).   If specified, the version attribute must also be
1194         <li> version - optional feature version. The information is used as  specified.</li>
1195   a  performance  optimization to speed up searches for features. Must match             <li> version - optional feature version. The information is used
1196   the  version specified in the feature.xml of the referenced archive (the   as  a  performance  optimization to speed up searches for features. Must
1197  url attribute).  If specified, the id attribute must also be specified.</li>  match  the  version specified in the feature.xml of the referenced archive
1198         <li> url - required URL reference to the feature archive. Can be relative  (the url attribute).  If specified, the id attribute must also be specified.</li>
1199    or absolute. If relative, it is relative to the location of the site.xml             <li> url - required URL reference to the feature archive. Can
1200   file.       <b>Note</b>: the default site implementation allows features  be  relative    or absolute. If relative, it is relative to the location
1201  to be accessed without being explicitly declared using a &lt;feature&gt; entry.  of the  site.xml   file.       <b>Note</b>: the default site implementation
1202  By default, an undeclared features reference is interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>  allows  features  to be accessed without being explicitly declared using a
1203    &lt;feature&gt;  entry. By default, an undeclared features reference is interpreted
1204    as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>
1205          <li>label - optional feature label. The value is used for optimization          <li>label - optional feature label. The value is used for optimization
1206    when browsing the site from the update manager. Intended to be translated.<br>    when browsing the site from the update manager. Intended to be translated.<br>
1207         </li>         </li>
1208         <li> os - optional operating system specification. A comma-separated         <li> os - optional operating system specification. A comma-separated
1209   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>   list  of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
1210    . Indicates this feature should only be installed on one of the specified    . Indicates this feature should only be installed on one of the specified
1211     os systems. If this attribute is "*", the feature can be installed   on       os systems. If this attribute is "*", the feature can be installed
1212   all systems (portable implementation). This information is used as a hint   on   all systems (portable implementation). This information is used as
1213   by the installation and update support (user can force installation of feature  a hint   by the installation and update support (user can force installation
1214   regardless of this setting).</li>  of feature   regardless of this setting).</li>
1215         <li> arch - optional machine architecture specification. A comma-separated         <li> arch - optional machine architecture specification. A comma-separated
1216    list of architecture designators defined by Eclipse (see Javadoc for <tt>      list of architecture designators defined by Eclipse (see Javadoc for
1217    org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only       <tt>     org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
1218    be installed on one of the specified systems. If this attribute&nbsp;is  should only    be installed on one of the specified systems. If this attribute&nbsp;is
1219   "*",  the feature can be installed on all systems (portable implementation).   "*",  the feature can be installed on all systems (portable implementation).
1220   This  information is used as a hint by the installation and update support   This  information is used as a hint by the installation and update support
1221   (user  can force installation of feature regardless of this setting).</li>   (user  can force installation of feature regardless of this setting).</li>
# Line 1195  Line 1226 
1226     on all systems (portable implementation). This information is used as     on all systems (portable implementation). This information is used as
1227  a  hint by the installation and update support (user can force installation  a  hint by the installation and update support (user can force installation
1228  of feature regardless of this setting).</li>  of feature regardless of this setting).</li>
1229         <li> nl - optional locale specification. A comma-separated list of             <li> nl - optional locale specification. A comma-separated list
1230  locale   designators defined by Java. Indicates this feature should only be   of  locale   designators defined by Java. Indicates this feature should
1231  installed   on a system running with a compatible locale (using Java locale-matching  only  be installed   on a system running with a compatible locale (using
1232   rules). If this attribute&nbsp;is "*", the feature can be installed on all  Java locale-matching    rules). If this attribute&nbsp;is "*", the feature
1233   systems (language-neutral implementation). This information is used as a  can be installed on all  systems (language-neutral implementation). This
1234  hint by the installation and update support (user can force installation  information is used as a hint by the installation and update support (user
1235  of feature regardless of this setting).</li>  can force installation  of feature regardless of this setting).</li>
1236         <li>patch - optional specification indicating if this feature is a             <li>patch - optional specification indicating if this feature
1237   patch. Default is "false".&nbsp;</li>  is  a   patch. Default is "false".&nbsp;</li>
1238    
1239    </ul>    </ul>
1240         <li> &lt;archive&gt; - identifies referenced "storage" archive (the             <li> &lt;archive&gt; - identifies referenced "storage" archive
1241   actual  files referenced via the <tt>&lt;plugin&gt;</tt> or <tt>&lt;data&gt;</tt>  (the   actual  files referenced via the <tt>&lt;plugin&gt;</tt> or <tt>&lt;data&gt;</tt>
1242     elements in the feature manifest). The site simply manages archives as     elements in the feature manifest). The site simply manages archives as
1243  a  path-to-URL map. The default Eclipse site implementation does not require  a  path-to-URL map. The default Eclipse site implementation does not require
1244    the &lt;archive&gt; section to be included in the site map (site.xml). Any      the &lt;archive&gt; section to be included in the site map (site.xml).
1245    archive reference not explicitly defined as part of an &lt;archive&gt; section   Any   archive reference not explicitly defined as part of an &lt;archive&gt;
1246    is assumed to be mapped to a url in the form "&lt;archivePath&gt;" relative   section   is assumed to be mapped to a url in the form "&lt;archivePath&gt;"
1247    to the location of the site.xml file.</li>   relative   to the location of the site.xml file.</li>
1248    
1249    <ul>    <ul>
1250        <li> path - required archive path identifier. This is a string that            <li> path - required archive path identifier. This is a string
1251  is  determined  by the <a href="#Feature_Archive_Mapping_Id_To_Path">feature</a>  that   is  determined  by the <a
1252     referencing this archive and is not otherwise interpreted by the site (other   href="#Feature_Archive_Mapping_Id_To_Path">feature</a>      referencing
1253    than as a lookup token).</li>  this archive and is not otherwise interpreted by the site  (other   than
1254    as a lookup token).</li>
1255         <li> url - required URL reference to the archive. Can be relative         <li> url - required URL reference to the archive. Can be relative
1256  or  absolute.  If relative, it is relative to the location of the site.xml  or  absolute.  If relative, it is relative to the location of the site.xml
1257  file.</li>  file.</li>
1258    
1259    </ul>    </ul>
1260         <li> &lt;category-def&gt; - an optional definition of a category that             <li> &lt;category-def&gt; - an optional definition of a category
1261    can be used by installation and update support to hierarchicaly organize   that   can be used by installation and update support to hierarchicaly organize
1262   features</li>   features</li>
1263    
1264    <ul>    <ul>
1265        <li> name - category name. Is specified as a path of name tokens separated            <li> name - category name. Is specified as a path of name tokens
1266    by /</li>   separated    by /</li>
1267         <li> label - displayable label. Intended to be translated.</li>         <li> label - displayable label. Intended to be translated.</li>
1268    
1269    </ul>    </ul>
# Line 1243  Line 1275 
1275    </ul>    </ul>
1276    
1277  </ul>  </ul>
1278        Note, that in general the feature.xml&nbsp; manifest documents should            Note, that in general the feature.xml&nbsp; manifest documents
1279   specify  UTF-8 encoding. For example  should    specify  UTF-8 encoding. For example
1280  <p><tt>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </p>  <p><tt>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </p>
1281    
1282  <p>Translatable text contained in the site.xml can be separated into site&lt;_locale&gt;.properties  <p>Translatable text contained in the site.xml can be separated into site&lt;_locale&gt;.properties
# Line 1267  Line 1299 
1299       <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plug-in argives&nbsp;&nbsp;&nbsp;       <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plug-in argives&nbsp;&nbsp;&nbsp;
1300     (eg. org.eclipse.ui_1.0.3.jar)</tt>     (eg. org.eclipse.ui_1.0.3.jar)</tt>
1301  <h3> <a name="Controlling_Access"></a> Controlling Access</h3>  <h3> <a name="Controlling_Access"></a> Controlling Access</h3>
1302        The default Eclipse site implementation provides support for http access            The default Eclipse site implementation provides support for http
1303     with basic user authentication (userid and password).   access    with basic user authentication (userid and password).
1304    
1305  <p>Custom access control mechanisms can be added to base Eclipse in one of  <p>Custom access control mechanisms can be added to base Eclipse in one of
1306    2 ways: </p>    2 ways: </p>
1307    
# Line 1276  Line 1309 
1309        <li> by supplying server-side logic on the update server (eg. implementing        <li> by supplying server-side logic on the update server (eg. implementing
1310    servlets that compute the site.xml map, and control access to individual    servlets that compute the site.xml map, and control access to individual
1311   archives based on some user criteria)</li>   archives based on some user criteria)</li>
1312         <li> by supplying a custom concrete implementation of the site object             <li> by supplying a custom concrete implementation of the site
1313    (installed  on the client machine, update server specified <tt>&lt;site  object    (installed  on the client machine, update server specified <tt>&lt;site
1314  type=""&gt;</tt>  ). The custom concrete site implementation, together with    type=""&gt;</tt>  ). The custom concrete site implementation, together
1315  any server-side   logic support the required control mechanisms.</li>  with   any server-side   logic support the required control mechanisms.</li>
1316    
1317  </ul>  </ul>
1318        Eclipse provides an example demonstrating an implementation of an access            Eclipse provides an example demonstrating an implementation of
1319     mechanism based on feature key files.  an  access    mechanism based on feature key files.
1320  <h2> <a name="Eclipse_Install"></a> Eclipse Install</h2>  <h2> <a name="Eclipse_Install"></a> Eclipse Install</h2>
1321    
1322  <h3> <a name="Default_Install_Layout"></a> Default Install Layout</h3>  <h3> <a name="Default_Install_Layout"></a> Default Install Layout</h3>
# Line 1316  Line 1349 
1349    
1350  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>
1351        Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins        Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins
1352    that were directly installed into the Eclipse file tree without being part      that were directly installed into the Eclipse file tree without being
1353    of a feature (eg. developer unzipping plug-in archive directly into the  part    of a feature (eg. developer unzipping plug-in archive directly into
1354  Eclipse  file tree).  the  Eclipse  file tree).
1355  <p>Eclipse runtime recognizes these plugins during startup and loads the  <p>Eclipse runtime recognizes these plugins during startup and loads the
1356  plug-in information into the runtime registry following the standard plug-in  plug-in information into the runtime registry following the standard plug-in
1357  binding rules. The update support also recognizes the presence of this new  binding rules. The update support also recognizes the presence of this new
# Line 1333  Line 1366 
1366  <h3> <a name="Using_Native_Platform_Installers"></a> Using Native Platform  <h3> <a name="Using_Native_Platform_Installers"></a> Using Native Platform
1367    Installers</h3>    Installers</h3>
1368        The Eclipse installation contains plugins that can be shared across        The Eclipse installation contains plugins that can be shared across
1369  multiple   features. When installing and uninstalling features using the Eclipse    multiple   features. When installing and uninstalling features using the
1370  installation   and update support, these relationship are correctly maintained.   Eclipse installation   and update support, these relationship are correctly
1371  Only one   copy of any version of a plug-in is used.   maintained. Only one   copy of any version of a plug-in is used.
1372    
1373  <p>However, when using native platform installers, performing native uninstall  <p>However, when using native platform installers, performing native uninstall
1374     creates problems because plug-ins would be removed without regard to any       creates problems because plug-ins would be removed without regard to
1375    sharing relationships. As a result, Eclipse <b>does not allow</b> plug-ins  any    sharing relationships. As a result, Eclipse <b>does not allow</b>
1376    to be installed using native installers into the shared installation tree.  plug-ins    to be installed using native installers into the shared installation
1377    Instead, native installers must establish their own installation root directory.  tree.    Instead, native installers must establish their own installation
1378    The subdirectory structure is the same as defined for base Eclipse. The  root directory.    The subdirectory structure is the same as defined for
1379  private  root directory is logically linked into the shared Eclipse installation  base Eclipse. The  private  root directory is logically linked into the shared
1380   via  a link file installed by the native installer. The file path for the   Eclipse installation   via  a link file installed by the native installer.
1381   link  file is <tt>&lt;configRoot&gt;/links/</tt>. The <tt>&lt;configRoot&gt;   The file path for the   link  file is <tt>&lt;configRoot&gt;/links/</tt>.
1382   </tt>  location is computed by Eclipse relative to the launch <a   The <tt>&lt;configRoot&gt;   </tt>  location is computed by Eclipse relative
1383   href="#Multiple%20Launch%20Points"> configuration file</a> . By default,   to the launch <a href="#Multiple%20Launch%20Points"> configuration file</a>
1384    this is the <tt>install/</tt> directory in the shared Eclipse installation   . By default,    this is the <tt>install/</tt> directory in the shared Eclipse
1385    tree. </p>   installation    tree. </p>
1386    
1387  <p>The name of the link file is not specified by Eclipse. The name is determined  <p>The name of the link file is not specified by Eclipse. The name is determined
1388     by the native installer. To minimize the potential for naming collisions,     by the native installer. To minimize the potential for naming collisions,
1389     it is recommended that the file name contain the identifier and version     it is recommended that the file name contain the identifier and version
1390   of the feature being installed by the native installer. For example, <tt>&lt;featureId&gt;_&lt;featureVersion&gt;.properties</tt>   of the feature being installed by the native installer. For example, <tt>&lt;featureId&gt;_&lt;featureVersion&gt;.properties</tt>
1391    . The file content is in the form of a Java properties file, with the following      . The file content is in the form of a Java properties file, with the
1392     properties defined: </p>  following    properties defined: </p>
1393    
1394  <p><tt>path=[r|rw] install-path[,[r|rw] install-path]*</tt> </p>  <p><tt>path=[r|rw] install-path[,[r|rw] install-path]*</tt> </p>
1395    
1396  <p>The property <tt>path</tt> is a comma-separated list of optionally annotated  <p>The property <tt>path</tt> is a comma-separated list of optionally annotated
1397     install paths. The property value <tt>install-path</tt> is a full file     install paths. The property value <tt>install-path</tt> is a full file
1398  path  to the installation directory root, specified in local OS format. The    path  to the installation directory root, specified in local OS format.
1399  optional  annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse  The  optional  annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse
1400  update support  should allow the specified location to be used for updates.  update support  should allow the specified location to be used for updates.
1401  Default is to  allow updates&nbsp; (w). </p>  Default is to  allow updates&nbsp; (w). </p>
1402    
1403  <p>Eclipse does not manage the linked directories in any way. It simply detects  <p>Eclipse does not manage the linked directories in any way. It simply detects
1404    their existence by the presence of the link files, and includes the linked    their existence by the presence of the link files, and includes the linked
1405    plug-ins during the platform startup. The native installer is responsible    plug-ins during the platform startup. The native installer is responsible
1406    for uninstalling the link when the corresponding directory is removed. Eclipse      for uninstalling the link when the corresponding directory is removed.
1407    runtime ignores any links that cannot be resolved. <br>   Eclipse   runtime ignores any links that cannot be resolved. <br>
1408       &nbsp; </p>       &nbsp; </p>
1409       <br>       <br>
1410      <br>      <br>
1411     <br>     <br>
1412    <br>    <br>
1413   <br>   <br>
1414        <br>
1415    
1416  </body>  </body>
1417  </html>  </html>

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14