platform-update-home/doc/eclipse_update_packaging.html

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

revision 1.14, Wed Jan 15 15:30:07 2003 UTC revision 1.15, Wed Jan 22 14:30:17 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  </head>  </head>
13    <body>    <body>
14    
15  <h1> Eclipse Platform<br>  <h1> Eclipse Platform<br>
16            Update Packaging Conventions</h1>            Update Packaging Conventions</h1>
17            <font size="-1">Revision Date: 01/15/2003 9:33AM - Version: 2.0.17</font><br>             <font size="-1">Revision Date: 01/22/2003 9:56AM - Version: 2.0.18</font><br>
18           <a href="../../../../../hglegal.htm"><img src="ngibmcpy.gif"           <a href="../../../../../hglegal.htm"><img src="ngibmcpy.gif"
19   border="0" height="12" width="195">   border="0" height="12" width="195">
20           </a>           </a>
21  <p><b>Change History:</b> </p>  <p><b>Change History:</b> </p>
22    
23  <ul>  <ul>
24                <li><small>2.0.18</small></li>
25      <ul>
26        <li><small>added &lt;feature plugin=""&gt;</small></li>
27      </ul>
28             <li><small>2.0.17</small></li>             <li><small>2.0.17</small></li>
29    
30    <ul>    <ul>
31      <li><small>added $os$,$ws$,$arch$ and $nl$ for copyright, description      <li><small>added $os$,$ws$,$arch$ and $nl$ for copyright, description
32  and license URL tag in feature.<br>  and license URL tag in feature.<br>
33        </small></li>        </small></li>
34    
35    </ul>    </ul>
36    <li><small>2.0.16</small>     <small><br>    <li><small>2.0.16</small>     <small><br>
37            </small>            </small>
# Line 145  Line 150 
150           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Framework">Framework</a>           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Framework">Framework</a>
151      <br>      <br>
152           <a href="#Packaging_Conventions">Packaging Conventions</a>  <br>           <a href="#Packaging_Conventions">Packaging Conventions</a>  <br>
153           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Feature_Archive">Feature            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
154      Archive</a>  <br>   href="#Feature_Archive">Feature     Archive</a>  <br>
155           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Plug-In_Archive">Plug-In            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
156      Archive</a>  <br>   href="#Plug-In_Archive">Plug-In     Archive</a>  <br>
157           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Packaging_NL">Packaging           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Packaging_NL">Packaging
158     NL</a>   <br>     NL</a>   <br>
159           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
# Line 193  Line 198 
198      Manager Agreement</a> " for additional legal information governing the      Manager Agreement</a> " for additional legal information governing the
199   use   of the Eclipse update manager function.   use   of the Eclipse update manager function.
200  <h3> <a name="Changes_from_R1.0"></a> Changes from R1.0</h3>  <h3> <a name="Changes_from_R1.0"></a> Changes from R1.0</h3>
201            This section describes the major design changes from the R1.0 Installation             This section describes the major design changes from the R1.0
202       and Update support and supplies rationale for each design change.  Installation      and Update support and supplies rationale for each design
203    change.
204  <ul>  <ul>
205            <li> <b>extendable framework</b></li>            <li> <b>extendable framework</b></li>
206             <br>             <br>
# Line 214  Line 219 
219   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
220   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>
221             <br>             <br>
222           R1.0 components were packaged as a single Java .jar containing the            R1.0 components were packaged as a single Java .jar containing
223   component    manifest as well as the actual plug-in files. The problem with  the   component    manifest as well as the actual plug-in files. The problem
224   this approach    is lack of granularity at download time. In R2.0, the feature  with   this approach    is lack of granularity at download time. In R2.0,
225   archive consists    of multiple separate .jars - one .jar per plug-in and  the feature   archive consists    of multiple separate .jars - one .jar per
226   fragment, plus one   .jar for the actual feature information. The Installation  plug-in and   fragment, plus one   .jar for the actual feature information.
227   and Update support   selectively downloads only those jars required for the  The Installation   and Update support   selectively downloads only those
228   installation. <li>    <b>site map</b></li>  jars required for the  installation. <li>    <b>site map</b></li>
229             <br>             <br>
230           Default Eclipse update server must contain a <i>site map</i> file           Default Eclipse update server must contain a <i>site map</i> file
231   (site.xml).     This is an evolution of the R1.0 install.index support.   (site.xml).     This is an evolution of the R1.0 install.index support. The
232  The  rationale for    using a structured site defined by the map rather than   rationale for    using a structured site defined by the map rather than a
233  a  "free form" web   site, is the ability to present a consistent installation   "free form" web   site, is the ability to present a consistent installation
234   experience for  the user. Also, this provides the necessary structure for   experience for  the user. Also, this provides the necessary structure for
235   discovery of available   updates. Additional support for "free form" browsing   discovery of available   updates. Additional support for "free form" browsing
236   may be 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>
# Line 245  Line 250 
250             <br>             <br>
251           In many cases the standard installation handling supplied by Eclipse           In many cases the standard installation handling supplied by Eclipse
252    is  not be sufficient to handle various custom requirements. To accommodate    is  not be sufficient to handle various custom requirements. To accommodate
253     this,  R2.0 Eclipse supports custom install handlers packaged as part     this,  R2.0 Eclipse supports custom install handlers packaged as part of
254  of   the feature  and executed during the feature installation. <li> <b>path    the feature  and executed during the feature installation. <li> <b>path
255  naming   conventions</b></li>  naming   conventions</b></li>
256             <br>             <br>
257           R1.0 mandated the use of the various identifiers and versions inside           R1.0 mandated the use of the various identifiers and versions inside
258    the   packaged archives (eg. directory path names for plug-ins). This approach     the   packaged archives (eg. directory path names for plug-ins). This
259      has proven to be ackward and error prone. In 2.0, the packaging requirements  approach     has proven to be ackward and error prone. In 2.0, the packaging
260      no longer mandate that path names of packaged files precisely reflect  requirements     no longer mandate that path names of packaged files precisely
261  the    contained identifiers and versions. The properly identified install  reflect the    contained identifiers and versions. The properly identified
262  subdirectories    are created by the Eclipse support during the installation  install subdirectories    are created by the Eclipse support during the installation
263  and update process     based on the archive content (rather than explicit  and update process     based on the archive content (rather than explicit
264  jar path structure set    up at packaging time)  jar path structure set    up at packaging time)
265  </ul>  </ul>
266    
267  <h3> <a name="Concepts"></a> Concepts</h3>  <h3> <a name="Concepts"></a> Concepts</h3>
268            <b>Plug-in</b> <br>            <b>Plug-in</b> <br>
269           Eclipse developers build plug-ins. Plug-ins are the base units of            Eclipse developers build plug-ins. Plug-ins are the base units
270   execution     recognized by the Eclipse runtime environment. In general,  of  execution     recognized by the Eclipse runtime environment. In general,
271  plug-ins are   not exposed to users that select function during installation  plug-ins are   not exposed to users that select function during installation
272  or update.  The reason is that plug-in boundaries are established by developers  or update.  The reason is that plug-in boundaries are established by developers
273  for development    reasons (like function reuse) and present the wrong level  for development    reasons (like function reuse) and present the wrong level
# Line 282  Line 287 
287       to a form suitable for packaging and installation. Typically it means       to a form suitable for packaging and installation. Typically it means
288   creation    of the runtime .jar(s) and removing any development-time files   creation    of the runtime .jar(s) and removing any development-time files
289   (source,  exposed .class files, etc). It also means updating the plugin.xml   (source,  exposed .class files, etc). It also means updating the plugin.xml
290   manifest  with the formal plug-in version and reflecting the version in   manifest  with the formal plug-in version and reflecting the version in the
291  the  plug-in  directory name (see "Concurrent Plug-In Version Support" for   plug-in  directory name (see "Concurrent Plug-In Version Support" for details).
292  details).  </p>   </p>
293    
294  <p><b>Plug-in Fragment</b> <br>  <p><b>Plug-in Fragment</b> <br>
295           Plug-in Fragments (or simply Fragments) allow independent packaging           Plug-in Fragments (or simply Fragments) allow independent packaging
# Line 315  Line 320 
320    that   allows custom implementations to be supplied for its key elements.    that   allows custom implementations to be supplied for its key elements.
321    In particular,    the following can be supplied:    In particular,    the following can be supplied:
322  <ul>  <ul>
323            <li> concrete implementations of feature (IFeature interface) that             <li> concrete implementations of feature (IFeature interface)
324    can   be used to support alternate packaging schemes. New concrete feature  that   can   be used to support alternate packaging schemes. New concrete
325    types   are  registere via the "org.eclipse.update.featureTypes" extension  feature   types   are  registere via the "org.eclipse.update.featureTypes"
326    point.</li>  extension   point.</li>
327             <li> concrete implementations of site (ISite interface) that can              <li> concrete implementations of site (ISite interface) that
328   be  used  to support alternate site layout, or site behavior. New concrete  can   be  used  to support alternate site layout, or site behavior. New concrete
329   site  types   are registered via the "org.eclipse.update.siteTypes" extension   site  types   are registered via the "org.eclipse.update.siteTypes" extension
330    point.</li>    point.</li>
331             <li> each feature can specify a custom install handler as part             <li> each feature can specify a custom install handler as part
332  of  its   feature  manifest. Install handlers (IInstallHandler interface)  of  its   feature  manifest. Install handlers (IInstallHandler interface)
333  are  dynamically   invoked as part of the installation process to handle non-plugin   are  dynamically   invoked as part of the installation process to handle
334   data, plus   perform other custom processing allowed by the framework.</li>  non-plugin  data, plus   perform other custom processing allowed by the framework.</li>
335    
336  </ul>  </ul>
337            Eclipse provides default implementations of feature and site. These             Eclipse provides default implementations of feature and site.
338    are  described in the rest of this document. <br>  These    are  described in the rest of this document. <br>
339           &nbsp;           &nbsp;
340  <table border="1" cols="1" width="100%">  <table border="1" cols="1" width="100%">
341            <tbody>            <tbody>
342               <tr>               <tr>
343            <td><b>Note: <i>The reminder of this document describes the default            <td><b>Note: <i>The reminder of this document describes the default
344    concrete   implementation of the framework delivered with Eclipse. It specifies     concrete   implementation of the framework delivered with Eclipse. It
345    the  structure of the default feature implementation, as well as the default  specifies    the  structure of the default feature implementation, as well
346     site  implementation, plus the corresponding xml files (feature.xml and  as the default    site  implementation, plus the corresponding xml files
347   site.xml).   Providers of alternate concrete implementations can extend&nbsp;  (feature.xml and  site.xml).   Providers of alternate concrete implementations
348   parts or   all of the default Eclipse implementation. This includes providing  can extend&nbsp;  parts or   all of the default Eclipse implementation. This
349   a mechanism   for dynamic computation of the site map (site.xml)</i></b></td>  includes providing  a mechanism   for dynamic computation of the site map
350    (site.xml)</i></b></td>
351            </tr>            </tr>
352    
353    </tbody>    </tbody>
# Line 356  Line 362 
362             <li> zero or more jars containing the feature plug-ins. These             <li> zero or more jars containing the feature plug-ins. These
363  are   refered   to as the "<b>plug-in archives</b>"</li>  are   refered   to as the "<b>plug-in archives</b>"</li>
364             <li> zero or more non-plug-in files associated with the feature.             <li> zero or more non-plug-in files associated with the feature.
365   They   are used by feature custom install handlers and contain data not interpreted    They   are used by feature custom install handlers and contain data not
366      by Eclipse</li>  interpreted     by Eclipse</li>
367    
368  </ul>  </ul>
369    
370  <h3> <a name="Feature_Archive"></a> Feature Archive</h3>  <h3> <a name="Feature_Archive"></a> Feature Archive</h3>
371            The feature packaging information is placed into a separate Java            The feature packaging information is placed into a separate Java
372   .jar.    Standard Java jar facilities are used for constructing feature   .jar.    Standard Java jar facilities are used for constructing feature archives.
373  archives.    Feature archives reference separately packaged plug-in archives     Feature archives reference separately packaged plug-in archives (see next
374  (see next    section) and non-plug-in files.     section) and non-plug-in files.
375  <p>Features are identified using a structured identifier based on the provider  <p>Features are identified using a structured identifier based on the provider
376       internet domain name. For example, organization eclipse.org may produce       internet domain name. For example, organization eclipse.org may produce
377     feature org.eclipse.javatooling. The character set used for feature identifiers     feature org.eclipse.javatooling. The character set used for feature identifiers
# Line 386  Line 392 
392           <tt>my_feature.jar</tt> </p>           <tt>my_feature.jar</tt> </p>
393    
394  <p>Internally, each feature archive is packaged relative to its feature directory  <p>Internally, each feature archive is packaged relative to its feature directory
395      (but not including the directory path element). The archive has the following       (but not including the directory path element). The archive has the
396      structure </p>  following      structure </p>
397    
398  <p><tt>feature.xml</tt> <br>  <p><tt>feature.xml</tt> <br>
399           <tt>feature&lt;_locale&gt;.properties (see "Translated Feature Information")</tt>            <tt>feature&lt;_locale&gt;.properties (see "Translated Feature
400       <br>  Information")</tt>       <br>
401           <tt>other feature files and subdirectories (TBD)</tt> <br>           <tt>other feature files and subdirectories (TBD)</tt> <br>
402           <tt>META-INF/</tt> <br>           <tt>META-INF/</tt> <br>
403           <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt>           <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt>
# Line 401  Line 407 
407    
408  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
409    
410  <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?,  <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?, license?,
411  license?, url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>  url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>
412           <tt>&lt;!ATTLIST feature</tt> <br>           <tt>&lt;!ATTLIST feature</tt> <br>
413           <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;
414       CDATA #REQUIRED</tt> <br>       CDATA #REQUIRED</tt> <br>
# Line 426  Line 432 
432       CDATA #IMPLIED</tt> <br>       CDATA #IMPLIED</tt> <br>
433           <tt>&nbsp;&nbsp;&nbsp; primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           <tt>&nbsp;&nbsp;&nbsp; primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
434   (true    | false) "false"</tt> <br>   (true    | false) "false"</tt> <br>
435           <tt>&nbsp;&nbsp;&nbsp; application&nbsp;&nbsp; CDATA #IMPLIED</tt>            <tt>&nbsp;&nbsp;&nbsp; application&nbsp;&nbsp; CDATA #IMPLIED<br>
436   <br>  </tt>   &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <tt>plugin&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
437    &nbsp;CDATA #IMPLIED</tt><br>
438           <tt>&gt;</tt> </p>           <tt>&gt;</tt> </p>
439    
440  <p><tt>&lt;!ELEMENT install-handler EMPTY&gt;</tt> <br>  <p><tt>&lt;!ELEMENT install-handler EMPTY&gt;</tt> <br>
# Line 571  Line 578 
578  should only    be installed on one of the specified systems. If this attribute  should only    be installed on one of the specified systems. If this attribute
579  is not specified,   the feature can be installed on all systems (portable  is not specified,   the feature can be installed on all systems (portable
580  implementation).  This   information is used as a hint by the installation  implementation).  This   information is used as a hint by the installation
581  and update support  (user   can force installation of feature regardless of   and update support  (user   can force installation of feature regardless
582  this setting).</li>  of this setting).</li>
583             <li> ws - optional windowing system specification. A comma-separated             <li> ws - optional windowing system specification. A comma-separated
584     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>
585      . 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 581  Line 588 
588   a  hint by the installation and update support (user can force installation   a  hint by the installation and update support (user can force installation
589    of feature regardless of this setting).</li>    of feature regardless of this setting).</li>
590             <li> nl - optional locale specification. A comma-separated list             <li> nl - optional locale specification. A comma-separated list
591   of  locale   designators defined by Java. Indicates this feature should   of  locale   designators defined by Java. Indicates this feature should only
592  only  be installed   on a system running with a compatible locale (using   be installed   on a system running with a compatible locale (using Java
593  Java locale-matching    rules). If this attribute is not specified, the feature  locale-matching    rules). If this attribute is not specified, the feature
594  can be installed   on all systems (language-neutral implementation). This  can be installed   on all systems (language-neutral implementation). This
595  information is used   as a hint by the installation and update support (user  information is used   as a hint by the installation and update support (user
596  can force installation    of feature regardless of this setting).</li>  can force installation    of feature regardless of this setting).</li>
597             <li> colocation-affinity - optional reference to another feature             <li> colocation-affinity - optional reference to another feature
598   identifier    used to select the default installation location for this feature.    identifier    used to select the default installation location for this
599   When  this feature is being installed as a new feature (no other versions  feature.  When  this feature is being installed as a new feature (no other
600   of it  are installed), an attempt is made to install this feature in the  versions  of it  are installed), an attempt is made to install this feature
601  same installation    location as the referenced feature.</li>  in the same installation    location as the referenced feature.</li>
602             <li> primary - optional indication specifying whether this feature             <li> primary - optional indication specifying whether this feature
603    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
604    if        <i>false</i> (not a primary feature).</li>    if        <i>false</i> (not a primary feature).</li>
# Line 600  Line 607 
607   href="#Dominant_Feature"> primary feature</a> . The application identifier   href="#Dominant_Feature"> primary feature</a> . The application identifier
608      must represent a valid application registered in the <tt>org.eclipse.core.runtime.applications</tt>      must represent a valid application registered in the <tt>org.eclipse.core.runtime.applications</tt>
609      extension point. Default is <tt>org.eclipse.ui.workbench</tt>.</li>      extension point. Default is <tt>org.eclipse.ui.workbench</tt>.</li>
610        <li> plugin- optional identifier of the primary plugin associated with
611    this <a
612     href="file:///C:/OTI/workspace/plugins/platform-update-home/doc/eclipse_update_packaging.html#Dominant_Feature">primary
613    feature</a>. The primary plugin carries branding information. If the plugin
614    attribute is not declared, the primary plugin identifier used will be the
615    same as the feature identifier. </li>
616    
617    </ul>    </ul>
618             <li> &lt;install-handler&gt;</li>             <li> &lt;install-handler&gt;</li>
619    
620    <ul>    <ul>
621            <li> library - optional .jar library containing the install handler            <li> library - optional .jar library containing the install handler
622    classes.   If specified, the referenced .jar must be contained in the feature     classes.   If specified, the referenced .jar must be contained in the
623    archive.   It is specified as a path within the feature archive, relative  feature    archive.   It is specified as a path within the feature archive,
624    to the feature.xml   entry. If not specified, the feature archive itself  relative    to the feature.xml   entry. If not specified, the feature archive
625   is used to load the install handler classes. This attribute is only interpreted  itself   is used to load the install handler classes. This attribute is only
626    if <i>class</i> attribute is also specified</li>  interpreted    if <i>class</i> attribute is also specified</li>
627             <li> handler - optional identifier of the install handler. The             <li> handler - optional identifier of the install handler. The
628  value    is  interpreted depending on the value of the <i>library</i> attribute.  value    is  interpreted depending on the value of the <i>library</i> attribute.
629   If        <i>  library</i> is specified,&nbsp; the value is interpreted as    If        <i>  library</i> is specified,&nbsp; the value is interpreted
630   a fully qualified  name of a class contained in the specified <i>library</i>.  as  a fully qualified  name of a class contained in the specified <i>library</i>.
631    If       <i>library</i>   is not specified, the value is is interpreted    If       <i>library</i>   is not specified, the value is is interpreted
632  as  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>
633       extension point. In either case, the resulting class must implement the        extension point. In either case, the resulting class must implement
634           <i> IInstallHandler</i> interface. The class is dynamically loaded  the          <i> IInstallHandler</i> interface. The class is dynamically
635    and called at specific points during feature processing. The handler has  loaded   and called at specific points during feature processing. The handler
636   visibility to the API classes from the update plug-in, and Eclipse plug-ins  has  visibility to the API classes from the update plug-in, and Eclipse plug-ins
637    required by the update plugin.</li>    required by the update plugin.</li>
638    
639    </ul>    </ul>
# Line 628  Line 641 
641   text.    Intended to be translated.</li>   text.    Intended to be translated.</li>
642    
643    <ul>    <ul>
644            <li> url - optional URL for the full description as HTML. The URL             <li> url - optional URL for the full description as HTML. The
645   can   be  specified as absolute of relative. If relative, it is assumed to  URL   can   be  specified as absolute of relative. If relative, it is assumed
646   be relative   to (and packaged in) the feature archive. Note, that for NL  to  be relative   to (and packaged in) the feature archive. Note, that for
647   handling the  URL value should be separated to allow alternate URLs to be  NL  handling the  URL value should be separated to allow alternate URLs to
648   specified for  each national language. &nbsp;URL support keywords $os$,$ws$,$arch$  be  specified for  each national language. &nbsp;URL support keywords $os$,$ws$,$arch$
649  and $nl$ that will be replaced by the appropriate operating system, windowing  and $nl$ that will be replaced by the appropriate operating system, windowing
650  system, operating architecture or national language value.</li>  system, operating architecture or national language value.</li>
651    
# Line 641  Line 654 
654     to  be translated.</li>     to  be translated.</li>
655    
656    <ul>    <ul>
657            <li> url - optional URL for the full description as HTML. The URL             <li> url - optional URL for the full description as HTML. The
658   can   be  specified as absolute of relative. If relative, it is assumed to  URL   can   be  specified as absolute of relative. If relative, it is assumed
659   be relative   to (and packaged in) the feature archive. Note, that for NL  to  be relative   to (and packaged in) the feature archive. Note, that for
660   handling the  URL value should be separated to allow alternate URLs to be  NL  handling the  URL value should be separated to allow alternate URLs to
661   specified for  each national language. URL support keywords $os$,$ws$,$arch$  be  specified for  each national language. URL support keywords $os$,$ws$,$arch$
662  and $nl$ that will be replaced by the appropriate operating system, windowing  and $nl$ that will be replaced by the appropriate operating system, windowing
663  system, operating architecture or national language value.</li>  system, operating architecture or national language value.</li>
664    
# Line 657  Line 670 
670  will be selected for installation   or update using the Eclipse update manager.  will be selected for installation   or update using the Eclipse update manager.
671   When using nested features, only the nesting parent (ie. the feature selected   When using nested features, only the nesting parent (ie. the feature selected
672   for installation or update) must have click-through license text defined.   for installation or update) must have click-through license text defined.
673   The license text is required even if the optional <i>url</i> attribute is    The license text is required even if the optional <i>url</i> attribute
674   specified.</li>  is   specified.</li>
675    
676    <ul>    <ul>
677            <li> url - optional URL for the full description as HTML. The URL             <li> url - optional URL for the full description as HTML. The
678   can   be  specified as absolute of relative. If relative, it is assumed to  URL   can   be  specified as absolute of relative. If relative, it is assumed
679   be relative   to (and packaged in) the feature archive. Note, that for NL  to  be relative   to (and packaged in) the feature archive. Note, that for
680   handling the  URL value should be separated to allow alternate URLs to be  NL  handling the  URL value should be separated to allow alternate URLs to
681   specified for  each national language. Note, that the "content" of this URL  be  specified for  each national language. Note, that the "content" of this
682   is <b>not</b>    what is presented as the click-through license during installation  URL  is <b>not</b>    what is presented as the click-through license during
683   processing.    The click-through license is the actual value of the <i>&lt;license&gt;</i>  installation  processing.    The click-through license is the actual value
684       element (eg. <tt>&lt;license&gt;click through text&lt;/license&gt;</tt>).&nbsp;URL  of the <i>&lt;license&gt;</i>      element (eg. <tt>&lt;license&gt;click
685  support keywords $os$,$ws$,$arch$ and $nl$ that will be replaced by the appropriate  through text&lt;/license&gt;</tt>).&nbsp;URL support keywords $os$,$ws$,$arch$
686  operating system, windowing system, operating architecture or national language  and $nl$ that will be replaced by the appropriate operating system, windowing
687  value.</li>  system, operating architecture or national language value.</li>
688    
689    </ul>    </ul>
690             <li> &lt;url&gt; - optional URL specifying site(s) contain feature             <li> &lt;url&gt; - optional URL specifying site(s) contain feature
# Line 711  Line 724 
724               </li>               </li>
725               <li>match&nbsp; - optional rule that will be applied when resolving               <li>match&nbsp; - optional rule that will be applied when resolving
726      the feature reference. A <samp>perfect</samp> match (the default that      the feature reference. A <samp>perfect</samp> match (the default that
727  matches    the 2.0.1 behavior) requires that the feature has exactly the  matches    the 2.0.1 behavior) requires that the feature has exactly the version
728  version specified    by the version attribute. Other choices progressively  specified    by the version attribute. Other choices progressively relax
729  relax the rule (<samp>    equivalent</samp> allows only service part of the  the rule (<samp>    equivalent</samp> allows only service part of the version
730  version to be more recent,          <samp>compatible</samp> also allows minor  to be more recent,          <samp>compatible</samp> also allows minor part
731  part to be included in the   consideration, while <samp>greaterOrEqual</samp>  to be included in the   consideration, while <samp>greaterOrEqual</samp>
732   simply allows any version   that is more recent or identical to the one specified).</li>    simply allows any version   that is more recent or identical to the one
733    specified).</li>
734               <li>search_location&nbsp; - optional. Indicates whether the               <li>search_location&nbsp; - optional. Indicates whether the
735  "New   Updates"   action should search the update location determined by  "New   Updates"   action should search the update location determined by the
736  the nesting   root feature  (<tt>root</tt>, is the default), or the location  nesting   root feature  (<tt>root</tt>, is the default), or the location defined
737  defined by   the nested feature  (<tt>self</tt>), or search both (<tt>both</tt>)  by   the nested feature  (<tt>self</tt>), or search both (<tt>both</tt>)
738  in that   order (root first,  self if nothing is found).</li>  in that   order (root first,  self if nothing is found).</li>
739    
740    </ul>    </ul>
# Line 739  Line 753 
753  or   plugin must   be specified.</li>  or   plugin must   be specified.</li>
754             <li> version - optional plug-in/feature version specification</li>             <li> version - optional plug-in/feature version specification</li>
755                 <li>patch - optional specification indicating if this feature                 <li>patch - optional specification indicating if this feature
756    is  a  patch of the dependant feature. Default is "false". If patch is    is  a  patch of the dependant feature. Default is "false". If patch is true,
757  true,   version  must be specified. If patch is true, only feature must be    version  must be specified. If patch is true, only feature must be specified.
758  specified.   If patch  is true, and match is specified, it must be 'perfect'.<br>    If patch  is true, and match is specified, it must be 'perfect'.<br>
759                 </li>                 </li>
760             <li> match - optional matching rule. Valid values and processing             <li> match - optional matching rule. Valid values and processing
761   are   as  follows:</li>   are   as  follows:</li>
# Line 761  Line 775 
775  be  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
776   and minor version  levels must equal the specified version).</li>   and minor version  levels must equal the specified version).</li>
777             <li> <b><i>compatible</i></b> - dependent plug-in version must             <li> <b><i>compatible</i></b> - dependent plug-in version must
778  be  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
779   level  (major  version level must equal the specified version).</li>  minor  level  (major  version level must equal the specified version).</li>
780             <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version             <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version
781  must   be  at least at the version specified, or at a higher service, minor  must   be  at least at the version specified, or at a higher service, minor
782  or major   level.</li>  or major   level.</li>
783    
784    
785        </ul>        </ul>
786    
787      </ul>      </ul>
# Line 792  Line 807 
807  should only    be installed on one of the specified systems. If this attribute  should only    be installed on one of the specified systems. If this attribute
808  is not specified,   the feature can be installed on all systems (portable  is not specified,   the feature can be installed on all systems (portable
809  implementation).  This   information is used as a hint by the installation  implementation).  This   information is used as a hint by the installation
810  and update support  (user   can force installation of feature regardless of   and update support  (user   can force installation of feature regardless
811  this setting).</li>  of this setting).</li>
812             <li> ws - optional windowing system specification. A comma-separated             <li> ws - optional windowing system specification. A comma-separated
813     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>
814      . Indicates this entry should only be installed on one of the specified      . Indicates this entry should only be installed on one of the specified
# Line 810  Line 825 
825  installation   of entry regardless of this setting).</li>  installation   of entry regardless of this setting).</li>
826             <li> download-size - optional hint supplied by the feature packager,             <li> download-size - optional hint supplied by the feature packager,
827     indicating  the download size in KBytes of the referenced plug-in archive.     indicating  the download size in KBytes of the referenced plug-in archive.
828     If not specified,  the download size is not known (<b>Implementation Note:</b>      If not specified,  the download size is not known (<b>Implementation
829     the implementation  needs to distinguish between "not known" and 0 size)</li>  Note:</b>     the implementation  needs to distinguish between "not known"
830    and 0 size)</li>
831             <li> install-size - optional hint supplied by the feature packager,             <li> install-size - optional hint supplied by the feature packager,
832     indicating   the install size in KBytes of the referenced plug-in archive.     indicating   the install size in KBytes of the referenced plug-in archive.
833     If not specified,   the install size is not known (<b>Implementation Note:</b>     If not specified,   the install size is not known (<b>Implementation Note:</b>
# Line 819  Line 835 
835    
836    </ul>    </ul>
837             <li> &lt;data&gt; - identifies non-plugin and non-feature data             <li> &lt;data&gt; - identifies non-plugin and non-feature data
838  that  is part of the feature. Generally, data are post-install processed using   that  is part of the feature. Generally, data are post-install processed
839  feature Install handler. Feature files like feature.properties are not considered  using feature Install handler. Feature files like feature.properties are
840   data.</li>  not considered  data.</li>
841    
842    <ul>    <ul>
843            <li> id - required data identifier in the form of a relative path.</li>            <li> id - required data identifier in the form of a relative path.</li>
# Line 838  Line 854 
854  should only    be installed on one of the specified systems. If this attribute  should only    be installed on one of the specified systems. If this attribute
855  is not specified,   the feature can be installed on all systems (portable  is not specified,   the feature can be installed on all systems (portable
856  implementation).  This   information is used as a hint by the installation  implementation).  This   information is used as a hint by the installation
857  and update support  (user   can force installation of feature regardless of   and update support  (user   can force installation of feature regardless
858  this setting).</li>  of this setting).</li>
859             <li> ws - optional windowing system specification. A comma-separated             <li> ws - optional windowing system specification. A comma-separated
860     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>
861      . Indicates this entry should only be installed on one of the specified      . Indicates this entry should only be installed on one of the specified
# Line 868  Line 884 
884  </ul>  </ul>
885            <a name="Feature_Archive_Mapping_Id_To_Path"></a> When interacting            <a name="Feature_Archive_Mapping_Id_To_Path"></a> When interacting
886    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>
887      and <tt>&lt;data&gt;</tt> elements into path identifiers used by the      and <tt>&lt;data&gt;</tt> elements into path identifiers used by the site
888  site     to determine the actual files to download and install. The default      to determine the actual files to download and install. The default feature
889  feature     implementation supplied by Eclipse constructs the path identifiers      implementation supplied by Eclipse constructs the path identifiers as
890  as follows:  follows:
891  <ul>  <ul>
892            <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in            <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in
893  the   form   "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>"  the   form   "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>"
# Line 887  Line 903 
903    
904  <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
905      files using Java property bundle conventions. Note that the translated      files using Java property bundle conventions. Note that the translated
906   strings   are used at installation time (ie. do not employ the plug-in fragment    strings   are used at installation time (ie. do not employ the plug-in
907   runtime   mechanism). </p>  fragment   runtime   mechanism). </p>
908    
909  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>
910            Plug-ins and plug-in fragments are individually packaged as separate            Plug-ins and plug-in fragments are individually packaged as separate
# Line 899  Line 915 
915           <tt>&lt;id&gt;_&lt;version&gt;.jar</tt> </p>           <tt>&lt;id&gt;_&lt;version&gt;.jar</tt> </p>
916    
917  <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>
918      &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
919      plugin.xml or fragment.xml. Note that this is a recommended convention  respective     plugin.xml or fragment.xml. Note that this is a recommended
920   that   minimizes chance of collisions, but is not required by the Eclipse  convention  that   minimizes chance of collisions, but is not required by
921   architecture.   For example, the following are valid plug-in archive names  the Eclipse  architecture.   For example, the following are valid plug-in
922   </p>  archive names  </p>
923    
924  <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>  <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>
925           <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>           <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>
926           <tt>my_plugin.jar</tt> </p>           <tt>my_plugin.jar</tt> </p>
927    
928  <p>Internally, each plug-in archive packages all the relevant plug-in or  <p>Internally, each plug-in archive packages all the relevant plug-in or fragment
929  fragment files relative to its plug-in or fragment directory (but not including  files relative to its plug-in or fragment directory (but not including the
930  the directory path element). The archive has the following structure </p>  directory path element). The archive has the following structure </p>
931    
932  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>
933           <tt>other plug-in or feature files and subdirectories</tt> <br>           <tt>other plug-in or feature files and subdirectories</tt> <br>
# Line 920  Line 936 
936  </p>  </p>
937    
938  <h3> <a name="Packaging_NL"></a> Packaging NL</h3>  <h3> <a name="Packaging_NL"></a> Packaging NL</h3>
939            In Eclipse, translated plug-in information is packaged either together             In Eclipse, translated plug-in information is packaged either
940      with the base plug-in, or as a plug-in fragment. At runtime, Eclipse  together     with the base plug-in, or as a plug-in fragment. At runtime,
941  locates     the translations for the required locale. The use of fragments  Eclipse locates     the translations for the required locale. The use of
942  allows translations     to be added to the runtime without the need to repackage  fragments allows translations     to be added to the runtime without the
943  the base plug-ins.  need to repackage the base plug-ins.
944  <p>This mechanism cannot be used for translating the actual packaging information  <p>This mechanism cannot be used for translating the actual packaging information
945       that is part of the installation xml files. Consequently the standard       that is part of the installation xml files. Consequently the standard
946   Java    translation conventions are used for the packaging information,   Java    translation conventions are used for the packaging information, and
947  and  all  necessary translations must be available at the time the feature   all  necessary translations must be available at the time the feature is
948  is packaged.  </p>  packaged.  </p>
949    
950  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>
951            <b>Note:</b> This section describes the conventions used for translating            <b>Note:</b> This section describes the conventions used for translating
# Line 957  Line 973 
973    
974  <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse  <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse
975      installation and update code should create a class loader for accessing      installation and update code should create a class loader for accessing
976    the  translated string. This way, the standard locale lookup algorithm implemented     the  translated string. This way, the standard locale lookup algorithm
977      by Java is automatically used. </p>  implemented     by Java is automatically used. </p>
978    
979  <p><tt>ResourceBundle b;</tt> <br>  <p><tt>ResourceBundle b;</tt> <br>
980           <tt>ClassLoader l;</tt> <br>           <tt>ClassLoader l;</tt> <br>
# Line 994  Line 1010 
1010  <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>  <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>
1011            Custom install handlers are written as a Java class and are packaged            Custom install handlers are written as a Java class and are packaged
1012     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
1013      must implement the <tt>IInstallHandler</tt> interface (in most cases      must implement the <tt>IInstallHandler</tt> interface (in most cases will
1014  will     extend the <tt>BaseInstallHandler</tt> abstract helper class which      extend the <tt>BaseInstallHandler</tt> abstract helper class which implements
1015  implements     <tt>IInstallHandler</tt>). When required, the install handler      <tt>IInstallHandler</tt>). When required, the install handler is dynamically
1016  is dynamically     loaded by the installation and update code, and is called      loaded by the installation and update code, and is called at specific
1017  at specific points    during its processing. The install handler code has  points    during its processing. The install handler code has visibility
1018  visibility to classes    from the installation and update support plug-in,  to classes    from the installation and update support plug-in, and its prerequisite
1019  and its prerequisite  plug-ins.   plug-ins.
1020  <p><b>Implementation Note:</b> the detailed list of visible prerequisite  <p><b>Implementation Note:</b> the detailed list of visible prerequisite plug-ins
1021  plug-ins is still evolving. It is expected to include <tt>org.eclipse.core.boot  is still evolving. It is expected to include <tt>org.eclipse.core.boot </tt>
1022  </tt> and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>  and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>
1023       and <tt>org.eclipse.swt</tt> when running with full workbench (ie. not        and <tt>org.eclipse.swt</tt> when running with full workbench (ie.
1024    "headless  mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>  not    "headless  mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>
1025       so that build scripts can be used as part of the install handler implementation.       so that build scripts can be used as part of the install handler implementation.
1026       </p>       </p>
1027    
# Line 1040  Line 1056 
1056  a  feature    is selected for removal, but before any of the standard uninstall  a  feature    is selected for removal, but before any of the standard uninstall
1057   processing    has taken place. It is passed the custom install log created   processing    has taken place. It is passed the custom install log created
1058   by the install    handler install-completion step.</li>   by the install    handler install-completion step.</li>
1059             <li> uninstall-completion - the install handler is called on completion              <li> uninstall-completion - the install handler is called on
1060      of the standard uninstall steps. It is passed the custom install log created  completion      of the standard uninstall steps. It is passed the custom
1061      by the install handler install-completion step.</li>  install log created     by the install handler install-completion step.</li>
1062    
1063  </ul>  </ul>
1064            Note, that as a general practice, install handlers should be provided            Note, that as a general practice, install handlers should be provided
# Line 1073  Line 1089 
1089    
1090  </ul>  </ul>
1091            In general, when processing signed jars, the user will be prompted            In general, when processing signed jars, the user will be prompted
1092    for   each unrecognized certificate. The response choices will include    for   each unrecognized certificate. The response choices will include aborting
1093  aborting     the installation (originator is not trusted), continuing the      the installation (originator is not trusted), continuing the installation
1094  installation     (originator is trusted for this installation).      (originator is trusted for this installation).
1095  <h2> <a name="Update_Server"></a> Update Server</h2>  <h2> <a name="Update_Server"></a> Update Server</h2>
1096            The default Eclipse update server is any URL-accessible server.            The default Eclipse update server is any URL-accessible server.
1097  The   default   implementation assumes a fixed-layout server. The content  The   default   implementation assumes a fixed-layout server. The content
# Line 1084  Line 1100 
1100  or can be  dynamically   computed by the server.  or can be  dynamically   computed by the server.
1101  <h3> <a name="Site_Map"></a> Site Map</h3>  <h3> <a name="Site_Map"></a> Site Map</h3>
1102            The update server URL can be specified as a full URL to the site            The update server URL can be specified as a full URL to the site
1103   map   file,   or a URL of a directory path containing the site map file   map   file,   or a URL of a directory path containing the site map file (similar
1104  (similar    to index.html   processing). The site map site.xml format is     to index.html   processing). The site map site.xml format is defined by
1105  defined by  the  following dtd:   the  following dtd:
1106  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
1107    
1108  <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 1166  Line 1182 
1182  not    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>
1183    
1184    </ul>    </ul>
1185             <li> &lt;description&gt; - brief description as simple text. Intended              <li> &lt;description&gt; - brief description as simple text.
1186      to be translated.</li>  Intended     to be translated.</li>
1187    
1188    <ul>    <ul>
1189            <li> url - optional URL for the full description as HTML. The URL             <li> url - optional URL for the full description as HTML. The
1190   can   be  specified as absolute of relative. If relative, If relative, is  URL   can   be  specified as absolute of relative. If relative, If relative,
1191   relative   to site.xml.</li>  is   relative   to site.xml.</li>
1192             <br>             <br>
1193           Note, that for NL handling the URL value should be separated to           Note, that for NL handling the URL value should be separated to
1194  allow    alternate  URLs to be specified for each national language.  allow    alternate  URLs to be specified for each national language.
# Line 1197  Line 1213 
1213  match  the  version specified in the feature.xml of the referenced archive  match  the  version specified in the feature.xml of the referenced archive
1214  (the url attribute).  If specified, the id attribute must also be specified.</li>  (the url attribute).  If specified, the id attribute must also be specified.</li>
1215             <li> url - required URL reference to the feature archive. Can             <li> url - required URL reference to the feature archive. Can
1216  be  relative    or absolute. If relative, it is relative to the location  be  relative    or absolute. If relative, it is relative to the location of
1217  of the  site.xml   file.       <b>Note</b>: the default site implementation  the  site.xml   file.       <b>Note</b>: the default site implementation
1218  allows  features  to be accessed without being explicitly declared using a   allows  features  to be accessed without being explicitly declared using
1219  &lt;feature&gt;  entry. By default, an undeclared features reference is interpreted  a &lt;feature&gt;  entry. By default, an undeclared features reference is
1220  as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>  interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>
1221              <li>label - optional feature label. The value is used for optimization              <li>label - optional feature label. The value is used for optimization
1222      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>
1223             </li>             </li>
# Line 1209  Line 1225 
1225     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>
1226      . Indicates this feature should only be installed on one of the specified      . Indicates this feature should only be installed on one of the specified
1227       os systems. If this attribute is "*", the feature can be installed       os systems. If this attribute is "*", the feature can be installed
1228   on   all systems (portable implementation). This information is used as  on   all systems (portable implementation). This information is used as a
1229  a hint   by the installation and update support (user can force installation  hint   by the installation and update support (user can force installation
1230  of feature   regardless of this setting).</li>  of feature   regardless of this setting).</li>
1231             <li> arch - optional machine architecture specification. A comma-separated             <li> arch - optional machine architecture specification. A comma-separated
1232      list of architecture designators defined by Eclipse (see Javadoc for      list of architecture designators defined by Eclipse (see Javadoc for
# Line 1227  Line 1243 
1243   a  hint by the installation and update support (user can force installation   a  hint by the installation and update support (user can force installation
1244    of feature regardless of this setting).</li>    of feature regardless of this setting).</li>
1245             <li> nl - optional locale specification. A comma-separated list             <li> nl - optional locale specification. A comma-separated list
1246   of  locale   designators defined by Java. Indicates this feature should   of  locale   designators defined by Java. Indicates this feature should only
1247  only  be installed   on a system running with a compatible locale (using   be installed   on a system running with a compatible locale (using Java
1248  Java locale-matching    rules). If this attribute&nbsp;is "*", the feature  locale-matching    rules). If this attribute&nbsp;is "*", the feature can
1249  can be installed on all  systems (language-neutral implementation). This  be installed on all  systems (language-neutral implementation). This information
1250  information is used as a hint by the installation and update support (user  is used as a hint by the installation and update support (user can force
1251  can force installation  of feature regardless of this setting).</li>  installation  of feature regardless of this setting).</li>
1252             <li>patch - optional specification indicating if this feature             <li>patch - optional specification indicating if this feature
1253  is  a   patch. Default is "false".&nbsp;</li>  is  a   patch. Default is "false".&nbsp;</li>
1254    
1255    </ul>    </ul>
1256             <li> &lt;archive&gt; - identifies referenced "storage" archive             <li> &lt;archive&gt; - identifies referenced "storage" archive
1257  (the   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>
1258       elements in the feature manifest). The site simply manages archives as        elements in the feature manifest). The site simply manages archives
1259    a  path-to-URL map. The default Eclipse site implementation does not require  as   a  path-to-URL map. The default Eclipse site implementation does not
1260      the &lt;archive&gt; section to be included in the site map (site.xml).  require     the &lt;archive&gt; section to be included in the site map (site.xml).
1261   Any   archive reference not explicitly defined as part of an &lt;archive&gt;   Any   archive reference not explicitly defined as part of an &lt;archive&gt;
1262   section   is assumed to be mapped to a url in the form "&lt;archivePath&gt;"   section   is assumed to be mapped to a url in the form "&lt;archivePath&gt;"
1263   relative   to the location of the site.xml file.</li>   relative   to the location of the site.xml file.</li>
# Line 1249  Line 1265 
1265    <ul>    <ul>
1266            <li> path - required archive path identifier. This is a string            <li> path - required archive path identifier. This is a string
1267  that   is  determined  by the <a  that   is  determined  by the <a
1268   href="#Feature_Archive_Mapping_Id_To_Path">feature</a>      referencing   href="#Feature_Archive_Mapping_Id_To_Path">feature</a>      referencing this
1269  this archive and is not otherwise interpreted by the site  (other   than  archive and is not otherwise interpreted by the site  (other   than as a
1270  as a lookup token).</li>  lookup token).</li>
1271             <li> url - required URL reference to the archive. Can be relative             <li> url - required URL reference to the archive. Can be relative
1272    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
1273    file.</li>    file.</li>
1274    
1275    </ul>    </ul>
1276             <li> &lt;category-def&gt; - an optional definition of a category             <li> &lt;category-def&gt; - an optional definition of a category
1277   that   can be used by installation and update support to hierarchicaly organize    that   can be used by installation and update support to hierarchicaly
1278     features</li>  organize    features</li>
1279    
1280    <ul>    <ul>
1281            <li> name - category name. Is specified as a path of name tokens            <li> name - category name. Is specified as a path of name tokens
# Line 1306  Line 1322 
1322      2 ways: </p>      2 ways: </p>
1323    
1324  <ul>  <ul>
1325            <li> by supplying server-side logic on the update server (eg. implementing             <li> by supplying server-side logic on the update server (eg.
1326      servlets that compute the site.xml map, and control access to individual  implementing      servlets that compute the site.xml map, and control access
1327     archives based on some user criteria)</li>  to individual     archives based on some user criteria)</li>
1328             <li> by supplying a custom concrete implementation of the site             <li> by supplying a custom concrete implementation of the site
1329  object    (installed  on the client machine, update server specified <tt>&lt;site  object    (installed  on the client machine, update server specified <tt>&lt;site
1330    type=""&gt;</tt>  ). The custom concrete site implementation, together    type=""&gt;</tt>  ). The custom concrete site implementation, together with
1331  with   any server-side   logic support the required control mechanisms.</li>    any server-side   logic support the required control mechanisms.</li>
1332    
1333  </ul>  </ul>
1334            Eclipse provides an example demonstrating an implementation of            Eclipse provides an example demonstrating an implementation of
# Line 1343  Line 1359 
1359           <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1360     META_INF/</tt>   </p>     META_INF/</tt>   </p>
1361    
1362  <p><b>Implementation Note:</b> we will go back to the original design of  <p><b>Implementation Note:</b> we will go back to the original design of not
1363  not splitting out fragments (ie. plugin and fragments go into the same install  splitting out fragments (ie. plugin and fragments go into the same install
1364      location) </p>      location) </p>
1365    
1366  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>
1367            Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins             Eclipse supports a concept of "unmanaged" plug-ins. These are
1368      that were directly installed into the Eclipse file tree without being  plug-ins     that were directly installed into the Eclipse file tree without
1369  part    of a feature (eg. developer unzipping plug-in archive directly into  being part    of a feature (eg. developer unzipping plug-in archive directly
1370  the  Eclipse  file tree).  into the  Eclipse  file tree).
1371  <p>Eclipse runtime recognizes these plugins during startup and loads the  <p>Eclipse runtime recognizes these plugins during startup and loads the plug-in
1372  plug-in information into the runtime registry following the standard plug-in  information into the runtime registry following the standard plug-in binding
1373  binding rules. The update support also recognizes the presence of this new  rules. The update support also recognizes the presence of this new plug-in,
1374  plug-in, but since this plug-in is not part of any feature it cannot be updated  but since this plug-in is not part of any feature it cannot be updated using
1375  using the update support (hence "unmanaged"). Unmanaged plug-in that become  the update support (hence "unmanaged"). Unmanaged plug-in that become referenced
1376  referenced by a feature as a result of some future installation or update  by a feature as a result of some future installation or update action become
1377  action become "managed" (can be updated as part of the feature). </p>  "managed" (can be updated as part of the feature). </p>
1378    
1379  <p>Unmanaged plug-ins are not displayed as part of the installation and update  <p>Unmanaged plug-ins are not displayed as part of the installation and update
1380      UI. </p>      UI. </p>
# Line 1372  Line 1388 
1388    
1389  <p>However, when using native platform installers, performing native uninstall  <p>However, when using native platform installers, performing native uninstall
1390       creates problems because plug-ins would be removed without regard to       creates problems because plug-ins would be removed without regard to
1391  any    sharing relationships. As a result, Eclipse <b>does not allow</b>  any    sharing relationships. As a result, Eclipse <b>does not allow</b> plug-ins
1392  plug-ins    to be installed using native installers into the shared installation     to be installed using native installers into the shared installation tree.
1393  tree.    Instead, native installers must establish their own installation     Instead, native installers must establish their own installation root
1394  root directory.    The subdirectory structure is the same as defined for  directory.    The subdirectory structure is the same as defined for base
1395  base Eclipse. The  private  root directory is logically linked into the shared  Eclipse. The  private  root directory is logically linked into the shared
1396   Eclipse installation   via  a link file installed by the native installer.   Eclipse installation   via  a link file installed by the native installer.
1397   The file path for the   link  file is <tt>&lt;configRoot&gt;/links/</tt>.   The file path for the   link  file is <tt>&lt;configRoot&gt;/links/</tt>.
1398   The <tt>&lt;configRoot&gt;   </tt>  location is computed by Eclipse relative   The <tt>&lt;configRoot&gt;   </tt>  location is computed by Eclipse relative
# Line 1401  Line 1417 
1417   Default is to  allow updates&nbsp; (w). </p>   Default is to  allow updates&nbsp; (w). </p>
1418    
1419  <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
1420      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
1421      plug-ins during the platform startup. The native installer is responsible  linked      plug-ins during the platform startup. The native installer is
1422      for uninstalling the link when the corresponding directory is removed.  responsible      for uninstalling the link when the corresponding directory
1423   Eclipse   runtime ignores any links that cannot be resolved. <br>  is removed.   Eclipse   runtime ignores any links that cannot be resolved.
1424    <br>
1425           &nbsp; </p>           &nbsp; </p>
1426           <br>           <br>
1427          <br>          <br>
# Line 1412  Line 1429 
1429        <br>        <br>
1430       <br>       <br>
1431      <br>      <br>
1432           <br>
1433  </body>  </body>
1434  </html>  </html>

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