platform-update-home/doc/eclipse_update_packaging.html

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

revision 1.11, Thu Jan 2 14:05:51 2003 UTC revision 1.12, Thu Jan 2 14:10:27 2003 UTC
# Line 14  Line 14 
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: 12/09/2002 8:56AM - Version: 2.0.15</font><br>       <font size="-1">Revision Date: 01/02/2003 9:33AM - Version: 2.0.16</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>
# Line 26  Line 26 
26      <ul>      <ul>
27        <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws support        <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws support
28  "*"</small></li>  "*"</small></li>
29    
30      </ul>      </ul>
31    </li>    </li>
32    <li><small>2.0.15</small>    <li><small>2.0.15</small>
33      <ul>      <ul>
34        <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws,patch tag</small></li>        <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws,patch tag</small></li>
35    
36      </ul>      </ul>
37                        </li>                        </li>
38     <li><small>2.0.14<br>     <li><small>2.0.14<br>
# Line 78  Line 80 
80    
81    <ul>    <ul>
82      <li> <font size="-1">&lt;site&gt; &lt;feature&gt; changes - additional      <li> <font size="-1">&lt;site&gt; &lt;feature&gt; changes - additional
83   markup to optionally expose feature identification information to speed   markup to optionally expose feature identification information to speed up
84  up  searches</font></li>   searches</font></li>
85       <li> <font size="-1">removed obsolete text</font></li>       <li> <font size="-1">removed obsolete text</font></li>
86       <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>
87       <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" handling
# Line 189  Line 191 
191  <ul>  <ul>
192      <li> <b>extendable framework</b></li>      <li> <b>extendable framework</b></li>
193       <br>       <br>
194     In R2.0 Eclipse defines an extendable framework for installation and update,      In R2.0 Eclipse defines an extendable framework for installation and
195   allowing the support for alternate packaging and site management schemes.  update,   allowing the support for alternate packaging and site management
196   R2.0 supplies a default concrete implementation of this framework. <li>  schemes.   R2.0 supplies a default concrete implementation of this framework.
197     <b>  feature support</b></li>    <li>     <b>  feature support</b></li>
198       <br>       <br>
199     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> is
200  merged  into <i>feature</i>. Features define the packaging structure for  merged  into <i>feature</i>. Features define the packaging structure for a
201  a group of related plug-ins, plug-in fragments, and optionally non-plug-in  group of related plug-ins, plug-in fragments, and optionally non-plug-in files.
202  files. Features are treated purely as an installation and packaging construct.  Features are treated purely as an installation and packaging construct. They
203  They do not play a role during Eclipse plug-in execution. Features do not  do not play a role during Eclipse plug-in execution. Features do not nest.
204  nest. They are simply an inclusive "manifest" of the plug-ins, fragments  They are simply an inclusive "manifest" of the plug-ins, fragments and other
205  and other files that make up that feature. If features are logically made  files that make up that feature. If features are logically made up of plug-ins
206  up of plug-ins from "sub-features", the top-level feature "manifest" must  from "sub-features", the top-level feature "manifest" must be fully resolved
207  be fully resolved at packaging time. <li> <b>default feature archive format</b></li>  at packaging time. <li> <b>default feature archive format</b></li>
208       <br>       <br>
209     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 component
210   manifest as well as the actual plug-in files. The problem with this approach   manifest as well as the actual plug-in files. The problem with this approach
# Line 221  Line 223 
223   future work.    <li> <b>using native install/ uninstall</b></li>   future work.    <li> <b>using native install/ uninstall</b></li>
224       <br>       <br>
225     The primary mechanism for installing and updating Eclipse features is     The primary mechanism for installing and updating Eclipse features is
226  the  built-in installation and update support. Some products may instead  the  built-in installation and update support. Some products may instead choose
227  choose  to use native installer technology (eg. MSI, RPM, etc) to deliver   to use native installer technology (eg. MSI, RPM, etc) to deliver Eclipse
228  Eclipse  features. However, native installers do not implement the required   features. However, native installers do not implement the required support
229  support  for understanding the Eclipse installation structure. In particular,   for understanding the Eclipse installation structure. In particular, the
230  the native uninstallers will, by default, remove plug-in files that were  native uninstallers will, by default, remove plug-in files that were installed
231  installed using the native installer without regard to these plug-ins being  using the native installer without regard to these plug-ins being needed
232  needed by other features. As a result, features installed using native installers  by other features. As a result, features installed using native installers
233  must be written into private product-specific installation location and not   must be written into private product-specific installation location and
234  the shared Eclipse installation location. The shared Eclipse is made aware  not  the shared Eclipse installation location. The shared Eclipse is made
235  of the produce-specific location via an installed "link file". <li> <b>custom  aware  of the produce-specific location via an installed "link file". <li>
236  install handling</b></li>      <b>custom  install handling</b></li>
237       <br>        <br>
238     In many cases the standard installation handling supplied by Eclipse is      In many cases the standard installation handling supplied by Eclipse
239   not be sufficient to handle various custom requirements. To accommodate  is  not be sufficient to handle various custom requirements. To accommodate
240  this,  R2.0 Eclipse supports custom install handlers packaged as part of  this,  R2.0 Eclipse supports custom install handlers packaged as part of the
241  the feature  and executed during the feature installation. <li> <b>path naming  feature  and executed during the feature installation. <li> <b>path naming
242  conventions</b></li>  conventions</b></li>
243       <br>       <br>
244     R1.0 mandated the use of the various identifiers and versions inside the      R1.0 mandated the use of the various identifiers and versions inside
245   packaged archives (eg. directory path names for plug-ins). This approach  the   packaged archives (eg. directory path names for plug-ins). This approach
246   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
247   no longer mandate that path names of packaged files precisely reflect the   no longer mandate that path names of packaged files precisely reflect the
248   contained identifiers and versions. The properly identified install subdirectories   contained identifiers and versions. The properly identified install subdirectories
# Line 253  Line 255 
255      <b>Plug-in</b> <br>      <b>Plug-in</b> <br>
256     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 execution
257    recognized by the Eclipse runtime environment. In general, plug-ins are    recognized by the Eclipse runtime environment. In general, plug-ins are
258  not exposed to users that select function during installation or update.  not exposed to users that select function during installation or update. The
259  The reason is that plug-in boundaries are established by developers for development  reason is that plug-in boundaries are established by developers for development
260   reasons (like function reuse) and present the wrong level of granularity   reasons (like function reuse) and present the wrong level of granularity
261  in terms of what the user sees as the unit of function.  in terms of what the user sees as the unit of function.
262  <p>While plug-ins are being developed (ie. are frequently being changed),  <p>While plug-ins are being developed (ie. are frequently being changed),
# Line 262  Line 264 
264    This will generally depend on the particular development tool being used.    This will generally depend on the particular development tool being used.
265    Typically, however, the developer will likely setup the plug-in to execute    Typically, however, the developer will likely setup the plug-in to execute
266    from a directory tree containing exposed .class files, rather than executing    from a directory tree containing exposed .class files, rather than executing
267    from a .jar (requires an extra step to create the .jar and we all know    from a .jar (requires an extra step to create the .jar and we all know developers
268  developers  hate extra steps). Also, at this stage the developer does not   hate extra steps). Also, at this stage the developer does not pay particular
269  pay particular  attention to plug-in versioning information, because the   attention to plug-in versioning information, because the plug-in is continually
270  plug-in is continually  changing. </p>   changing. </p>
271    
272  <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
273    to a form suitable for packaging and installation. Typically it means creation    to a form suitable for packaging and installation. Typically it means creation
# Line 278  Line 280 
280     Plug-in Fragments (or simply Fragments) allow independent packaging of     Plug-in Fragments (or simply Fragments) allow independent packaging of
281  certain  aspects of the base plug-in. This includes (but may not be limited  certain  aspects of the base plug-in. This includes (but may not be limited
282  to) translated  resources for the plug-in, OS-specific or windowing-system-specific  to) translated  resources for the plug-in, OS-specific or windowing-system-specific
283  code.  At runtime, fragments are logically merged into the base plug-in. From   code.  At runtime, fragments are logically merged into the base plug-in.
284  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 really
285  differentiate  between plug-ins and their related fragments. </p>  differentiate  between plug-ins and their related fragments. </p>
286    
287  <p><b>Feature</b> <br>  <p><b>Feature</b> <br>
288     A feature is an installation packaging mechanism used to define a group     A feature is an installation packaging mechanism used to define a group
289   of versioned plug-ins and/or plug-in fragments plus non-plug-in files that   of versioned plug-ins and/or plug-in fragments plus non-plug-in files that
290   is used to deliver some user function. A feature can also include other   is used to deliver some user function. A feature can also include other features.
291  features.  Features are exposed to users as part of the packaging and installation   Features are exposed to users as part of the packaging and installation
292  process,  because they represent a unit of function selection. Features also   process,  because they represent a unit of function selection. Features
293  represent  a unit of installation. Features carry a version identifier.</p>  also  represent  a unit of installation. Features carry a version identifier.</p>
294    
295  <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,
296   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
297   placed on an update server for download and installation by the Eclipse update  are   placed on an update server for download and installation by the Eclipse
298   manager, or they can be used as the input into a formal packaging process  update  manager, or they can be used as the input into a formal packaging
299   using one of the "traditional" installer technologies. The format of the  process  using one of the "traditional" installer technologies. The format
300  feature archive is described later. </p>  of the feature archive is described later. </p>
301    
302  <h3> <a name="Framework"></a> Framework</h3>  <h3> <a name="Framework"></a> Framework</h3>
303      The 2.0 installation and update support is provided as a framework that      The 2.0 installation and update support is provided as a framework that
# Line 314  Line 316 
316   perform other custom processing allowed by the framework.</li>   perform other custom processing allowed by the framework.</li>
317    
318  </ul>  </ul>
319      Eclipse provides default implementations of feature and site. These are       Eclipse provides default implementations of feature and site. These
320   described in the rest of this document. <br>  are  described in the rest of this document. <br>
321     &nbsp;     &nbsp;
322  <table border="1" cols="1" width="100%">  <table border="1" cols="1" width="100%">
323      <tbody>      <tbody>
324         <tr>         <tr>
325      <td><b>Note: <i>The reminder of this document describes the default concrete       <td><b>Note: <i>The reminder of this document describes the default
326    implementation of the framework delivered with Eclipse. It specifies the  concrete   implementation of the framework delivered with Eclipse. It specifies
327   structure of the default feature implementation, as well as the default  the  structure of the default feature implementation, as well as the default
328  site  implementation, plus the corresponding xml files (feature.xml and site.xml).  site  implementation, plus the corresponding xml files (feature.xml and site.xml).
329   Providers of alternate concrete implementations can extend&nbsp; parts or   Providers of alternate concrete implementations can extend&nbsp; parts or
330   all of the default Eclipse implementation. This includes providing a mechanism   all of the default Eclipse implementation. This includes providing a mechanism
# Line 384  Line 386 
386    
387  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
388    
389  <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?,  <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?, license?,
390  license?, url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>  url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>
391     <tt>&lt;!ATTLIST feature</tt> <br>     <tt>&lt;!ATTLIST feature</tt> <br>
392     <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;
393    CDATA #REQUIRED</tt> <br>    CDATA #REQUIRED</tt> <br>
# Line 543  Line 545 
545   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
546    os systems. If this attribute is not specified, the feature can be installed    os systems. If this attribute is not specified, the feature can be installed
547    on all systems (portable implementation). This information is used as a    on all systems (portable implementation). This information is used as a
548  hint by the installation and update support (user can force installation  hint by the installation and update support (user can force installation of
549  of feature regardless of this setting).</li>  feature regardless of this setting).</li>
550       <li> arch - optional machine architecture specification. A comma-separated       <li> arch - optional machine architecture specification. A comma-separated
551   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
552   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
553   be installed on one of the specified systems. If this attribute is not specified,    be installed on one of the specified systems. If this attribute is not
554   the feature can be installed on all systems (portable implementation). This  specified,   the feature can be installed on all systems (portable implementation).
555   information is used as a hint by the installation and update support (user  This   information is used as a hint by the installation and update support
556   can force installation of feature regardless of this setting).</li>  (user   can force installation of feature regardless of this setting).</li>
557       <li> ws - optional windowing system specification. A comma-separated       <li> ws - optional windowing system specification. A comma-separated
558  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>
559   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
560    ws systems. If this attribute is not specified, the feature can be installed    ws systems. If this attribute is not specified, the feature can be installed
561    on all systems (portable implementation). This information is used as a    on all systems (portable implementation). This information is used as a
562  hint by the installation and update support (user can force installation  hint by the installation and update support (user can force installation of
563  of feature regardless of this setting).</li>  feature regardless of this setting).</li>
564       <li> nl - optional locale specification. A comma-separated list of locale        <li> nl - optional locale specification. A comma-separated list of
565   designators defined by Java. Indicates this feature should only be installed  locale   designators defined by Java. Indicates this feature should only
566   on a system running with a compatible locale (using Java locale-matching  be installed   on a system running with a compatible locale (using Java locale-matching
567  rules). If this attribute is not specified, the feature can be installed on   rules). If this attribute is not specified, the feature can be installed
568  all systems (language-neutral implementation). This information is used as  on all systems (language-neutral implementation). This information is used
569  a hint by the installation and update support (user can force installation  as a hint by the installation and update support (user can force installation
570  of feature regardless of this setting).</li>  of feature regardless of this setting).</li>
571       <li> colocation-affinity - optional reference to another feature identifier       <li> colocation-affinity - optional reference to another feature identifier
572    used to select the default installation location for this feature. When    used to select the default installation location for this feature. When
573  this feature is being installed as a new feature (no other versions of it  this feature is being installed as a new feature (no other versions of it
574  are installed), an attempt is made to install this feature in the same installation  are installed), an attempt is made to install this feature in the same installation
575   location as the referenced feature.</li>   location as the referenced feature.</li>
576       <li> primary - optional indication specifying whether this feature can        <li> primary - optional indication specifying whether this feature
577   be used as a <a href="#Dominant_Feature">primary feature</a> . Default if  can   be used as a <a href="#Dominant_Feature">primary feature</a> . Default
578         <i>false</i> (not a primary feature).</li>  if        <i>false</i> (not a primary feature).</li>
579       <li> application - optional identifier of the Eclipse application that       <li> application - optional identifier of the Eclipse application that
580   is to be used during startup when the declaring feature is the <a   is to be used during startup when the declaring feature is the <a
581   href="#Dominant_Feature"> primary feature</a> . The application identifier   href="#Dominant_Feature"> primary feature</a> . The application identifier
# Line 584  Line 586 
586       <li> &lt;install-handler&gt;</li>       <li> &lt;install-handler&gt;</li>
587    
588    <ul>    <ul>
589      <li> library - optional .jar library containing the install handler classes.       <li> library - optional .jar library containing the install handler
590    If specified, the referenced .jar must be contained in the feature archive.  classes.   If specified, the referenced .jar must be contained in the feature
591    It is specified as a path within the feature archive, relative to the feature.xml  archive.   It is specified as a path within the feature archive, relative
592    entry. If not specified, the feature archive itself is used to load the  to the feature.xml   entry. If not specified, the feature archive itself
593  install handler classes. This attribute is only interpreted if <i>class</i>  is used to load the install handler classes. This attribute is only interpreted
594  attribute is also specified</li>  if <i>class</i> attribute is also specified</li>
595       <li> handler - optional identifier of the install handler. The value       <li> handler - optional identifier of the install handler. The value
596  is  interpreted depending on the value of the <i>library</i> attribute. If   is  interpreted depending on the value of the <i>library</i> attribute.
597        <i>  library</i> is specified,&nbsp; the value is interpreted as a fully  If        <i>  library</i> is specified,&nbsp; the value is interpreted as
598  qualified  name of a class contained in the specified <i>library</i>. If  a fully qualified  name of a class contained in the specified <i>library</i>.
599        <i>library</i>   is not specified, the value is is interpreted as an  If       <i>library</i>   is not specified, the value is is interpreted as
600  extension identifier  of an extension registered in the <i>org.eclipse.update.installHandlers</i>  an extension identifier  of an extension registered in the <i>org.eclipse.update.installHandlers</i>
601    extension point. In either case, the resulting class must implement the    extension point. In either case, the resulting class must implement the
602         <i> IInstallHandler</i> interface. The class is dynamically loaded         <i> IInstallHandler</i> interface. The class is dynamically loaded
603  and called at specific points during feature processing. The handler has  and called at specific points during feature processing. The handler has visibility
604  visibility to the API classes from the update plug-in, and Eclipse plug-ins  to the API classes from the update plug-in, and Eclipse plug-ins required
605  required by the update plugin.</li>  by the update plugin.</li>
606    
607    </ul>    </ul>
608       <li> &lt;description&gt; - brief component description as simple text.       <li> &lt;description&gt; - brief component description as simple text.
# Line 608  Line 610 
610    
611    <ul>    <ul>
612      <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 can
613  be  specified as absolute of relative. If relative, it is assumed to be relative   be  specified as absolute of relative. If relative, it is assumed to be
614   to (and packaged in) the feature archive. Note, that for NL handling the  relative   to (and packaged in) the feature archive. Note, that for NL handling
615  URL value should be separated to allow alternate URLs to be specified for  the  URL value should be separated to allow alternate URLs to be specified
616  each national language.</li>  for  each national language.</li>
617    
618    </ul>    </ul>
619       <li> &lt;copyright&gt; - feature copyright as simple text. Intended       <li> &lt;copyright&gt; - feature copyright as simple text. Intended
# Line 619  Line 621 
621    
622    <ul>    <ul>
623      <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 can
624  be  specified as absolute of relative. If relative, it is assumed to be relative   be  specified as absolute of relative. If relative, it is assumed to be
625   to (and packaged in) the feature archive. Note, that for NL handling the  relative   to (and packaged in) the feature archive. Note, that for NL handling
626  URL value should be separated to allow alternate URLs to be specified for  the  URL value should be separated to allow alternate URLs to be specified
627  each national language.</li>  for  each national language.</li>
628    
629    </ul>    </ul>
630       <li> &lt;license&gt; - feature "click-through" license as simple text.       <li> &lt;license&gt; - feature "click-through" license as simple text.
631   Intended to be translated. It is displayed in a standard dialog with [Accept]   Intended to be translated. It is displayed in a standard dialog with [Accept]
632   [Reject] actions during the download/ installation process. Note, that click-through    [Reject] actions during the download/ installation process. Note, that
633    license must be specified for any feature that will be selected for installation  click-through   license must be specified for any feature that will be selected
634    or update using the Eclipse update manager. When using nested features,  for installation   or update using the Eclipse update manager. When using
635  only the nesting parent (ie. the feature selected for installation or update)  nested features, only the nesting parent (ie. the feature selected for installation
636  must have click-through license text defined. The license text is required  or update) must have click-through license text defined. The license text
637  even if the optional <i>url</i> attribute is specified.</li>  is required even if the optional <i>url</i> attribute is specified.</li>
638    
639    <ul>    <ul>
640      <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 can
641  be  specified as absolute of relative. If relative, it is assumed to be relative   be  specified as absolute of relative. If relative, it is assumed to be
642   to (and packaged in) the feature archive. Note, that for NL handling the  relative   to (and packaged in) the feature archive. Note, that for NL handling
643  URL value should be separated to allow alternate URLs to be specified for  the  URL value should be separated to allow alternate URLs to be specified
644  each national language. Note, that the "content" of this URL is <b>not</b>  for  each national language. Note, that the "content" of this URL is <b>not</b>
645   what is presented as the click-through license during installation processing.   what is presented as the click-through license during installation processing.
646   The click-through license is the actual value of the <i>&lt;license&gt;</i>   The click-through license is the actual value of the <i>&lt;license&gt;</i>
647    element (eg. <tt>&lt;license&gt;click through text&lt;/license&gt;</tt>)</li>    element (eg. <tt>&lt;license&gt;click through text&lt;/license&gt;</tt>)</li>
648    
649    </ul>    </ul>
650       <li> &lt;url&gt; - optional URL specifying site(s) contain feature updates,        <li> &lt;url&gt; - optional URL specifying site(s) contain feature
651   or new features</li>  updates,   or new features</li>
652    
653    <ul>    <ul>
654      <li> &lt;update&gt; - URL to go to for updates to this feature</li>      <li> &lt;update&gt; - URL to go to for updates to this feature</li>
# Line 684  Line 686 
686   the 2.0.1 behavior) requires that the feature has exactly the version specified   the 2.0.1 behavior) requires that the feature has exactly the version specified
687   by the version attribute. Other choices progressively relax the rule (<samp>   by the version attribute. Other choices progressively relax the rule (<samp>
688   equivalent</samp> allows only service part of the version to be more recent,   equivalent</samp> allows only service part of the version to be more recent,
689         <samp>compatible</samp> also allows minor part to be included in the          <samp>compatible</samp> also allows minor part to be included in
690   consideration, while <samp>greaterOrEqual</samp> simply allows any version  the   consideration, while <samp>greaterOrEqual</samp> simply allows any
691   that is more recent or identical to the one specified).</li>  version   that is more recent or identical to the one specified).</li>
692         <li>search_location&nbsp; - optional. Indicates whether the "New Updates"          <li>search_location&nbsp; - optional. Indicates whether the "New
693   action should search the update location determined by the nesting root feature  Updates"   action should search the update location determined by the nesting
694   (<tt>root</tt>, is the default), or the location defined by the nested feature  root feature  (<tt>root</tt>, is the default), or the location defined by
695   (<tt>self</tt>), or search both (<tt>both</tt>) in that order (root first,  the nested feature  (<tt>self</tt>), or search both (<tt>both</tt>) in that
696   self if nothing is found).</li>  order (root first,  self if nothing is found).</li>
697    
698    </ul>    </ul>
699       <li> &lt;requires&gt; - optional feature dependency information. Is       <li> &lt;requires&gt; - optional feature dependency information. Is
# Line 705  Line 707 
707      <ul>      <ul>
708      <li> plugin - identifier of dependent plug-in.</li>      <li> plugin - identifier of dependent plug-in.</li>
709           <li> feature - identifier of dependent feature. If plugin and feature           <li> feature - identifier of dependent feature. If plugin and feature
710   are specified, plugin takes precedence upon feature. Feature or plugin must    are specified, plugin takes precedence upon feature. Feature or plugin
711   be specified.</li>  must   be specified.</li>
712       <li> version - optional plug-in/feature version specification</li>       <li> version - optional plug-in/feature version specification</li>
713           <li>patch - optional specification indicating if this feature is           <li>patch - optional specification indicating if this feature is
714  a  patch of the dependant feature. Default is "false". If patch is true, version   a  patch of the dependant feature. Default is "false". If patch is true,
715   must be specified. If patch is true, only feature must be specified. If  version  must be specified. If patch is true, only feature must be specified.
716  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>
717           </li>           </li>
718       <li> match - optional matching rule. Valid values and processing are       <li> match - optional matching rule. Valid values and processing are
719  as  follows:</li>  as  follows:</li>
720    
721        <ul>        <ul>
722      <li> if version attribute is not specified, the match attribute (if specified)       <li> if version attribute is not specified, the match attribute (if
723    is ignored.</li>  specified)   is ignored.</li>
724             <li>if version is specified, match defaults to compatible.<br>             <li>if version is specified, match defaults to compatible.<br>
725             </li>             </li>
726             <li>if patch is true, and match is not specified, match defaults             <li>if patch is true, and match is not specified, match defaults
# Line 727  Line 729 
729       <li> <b><i>perfect</i></b> - dependent plug-in version must match exactly       <li> <b><i>perfect</i></b> - dependent plug-in version must match exactly
730   the specified version.</li>   the specified version.</li>
731       <li> <b><i>equivalent</i></b> - dependent plug-in version must be at       <li> <b><i>equivalent</i></b> - dependent plug-in version must be at
732  least  at the version specified, or at a higher service level (major and minor   least  at the version specified, or at a higher service level (major and
733  version  levels must equal the specified version).</li>  minor version  levels must equal the specified version).</li>
734       <li> <b><i>compatible</i></b> - dependent plug-in version must be at       <li> <b><i>compatible</i></b> - dependent plug-in version must be at
735  least  at the version specified, or at a higher service level or minor level  least  at the version specified, or at a higher service level or minor level
736  (major  version level must equal the specified version).</li>  (major  version level must equal the specified version).</li>
737       <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version must be        <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version must
738   at least at the version specified, or at a higher service, minor or major  be  at least at the version specified, or at a higher service, minor or major
739   level.</li>   level.</li>
740    
741        </ul>        </ul>
# Line 746  Line 748 
748    <ul>    <ul>
749      <li> id - required plug-in identifier (from plugin.xml)</li>      <li> id - required plug-in identifier (from plugin.xml)</li>
750       <li> version - required plug-in version (from plugin.xml)</li>       <li> version - required plug-in version (from plugin.xml)</li>
751       <li> fragment - optional specification indicating if this entry is a        <li> fragment - optional specification indicating if this entry is
752  plug-in  fragment. Default is "false"</li>  a  plug-in  fragment. Default is "false"</li>
753       <li> os - optional operating system specification. A comma-separated       <li> os - optional operating system specification. A comma-separated
754  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>
755   . Indicates this entry should only be installed on one of the specified os    . Indicates this entry should only be installed on one of the specified
756   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
757   on all systems (portable implementation). This information is used as a   on all systems (portable implementation). This information is used as a hint
758  hint  by the installation and update support (user can force installation   by the installation and update support (user can force installation of entry
759  of entry  regardless of this setting).</li>   regardless of this setting).</li>
760       <li> arch - optional machine architecture specification. A comma-separated       <li> arch - optional machine architecture specification. A comma-separated
761   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
762   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
763   be installed on one of the specified systems. If this attribute is not specified,    be installed on one of the specified systems. If this attribute is not
764   the feature can be installed on all systems (portable implementation). This  specified,   the feature can be installed on all systems (portable implementation).
765   information is used as a hint by the installation and update support (user  This   information is used as a hint by the installation and update support
766   can force installation of feature regardless of this setting).</li>  (user   can force installation of feature regardless of this setting).</li>
767       <li> ws - optional windowing system specification. A comma-separated       <li> ws - optional windowing system specification. A comma-separated
768  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>
769   . Indicates this entry should only be installed on one of the specified ws    . Indicates this entry should only be installed on one of the specified
770   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
771   on all systems (portable implementation). This information is used as a   on all systems (portable implementation). This information is used as a hint
772  hint  by the installation and update support (user can force installation   by the installation and update support (user can force installation of entry
773  of entry  regardless of this setting).</li>   regardless of this setting).</li>
774       <li> nl - optional locale specification. A comma-separated list of locale        <li> nl - optional locale specification. A comma-separated list of
775   designators defined by Java. Indicates this entry should only be installed  locale   designators defined by Java. Indicates this entry should only be
776   on a system running with a compatible locale (using Java locale-matching  installed   on a system running with a compatible locale (using Java locale-matching
777  rules). If this attribute is not specified, the entry can be installed on  rules). If this attribute is not specified, the entry can be installed on
778  all systems (language-neutral implementation). This information is used as   all systems (language-neutral implementation). This information is used
779  a hint by the installation and update support (user can force installation  as  a hint by the installation and update support (user can force installation
780  of entry regardless of this setting).</li>  of entry regardless of this setting).</li>
781       <li> download-size - optional hint supplied by the feature packager,       <li> download-size - optional hint supplied by the feature packager,
782  indicating  the download size in KBytes of the referenced plug-in archive.  indicating  the download size in KBytes of the referenced plug-in archive.
# Line 786  Line 788 
788  the implementation   needs to distinguish between "not known" and 0 size)</li>  the implementation   needs to distinguish between "not known" and 0 size)</li>
789    
790    </ul>    </ul>
791       <li> &lt;data&gt; - identifies non-plugin data that is part of the feature</li>        <li> &lt;data&gt; - identifies non-plugin data that is part of the
792    feature</li>
793    
794    <ul>    <ul>
795      <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>
796       <li> os - optional operating system specification. A comma-separated       <li> os - optional operating system specification. A comma-separated
797  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>
798   . Indicates this entry should only be installed on one of the specified os    . Indicates this entry should only be installed on one of the specified
799   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
800   on all systems (portable implementation). This information is used as a   on all systems (portable implementation). This information is used as a hint
801  hint  by the installation and update support (user can force installation   by the installation and update support (user can force installation of entry
802  of entry  regardless of this setting).</li>   regardless of this setting).</li>
803       <li> arch - optional machine architecture specification. A comma-separated       <li> arch - optional machine architecture specification. A comma-separated
804   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
805   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
806   be installed on one of the specified systems. If this attribute is not specified,    be installed on one of the specified systems. If this attribute is not
807   the feature can be installed on all systems (portable implementation). This  specified,   the feature can be installed on all systems (portable implementation).
808   information is used as a hint by the installation and update support (user  This   information is used as a hint by the installation and update support
809   can force installation of feature regardless of this setting).</li>  (user   can force installation of feature regardless of this setting).</li>
810       <li> ws - optional windowing system specification. A comma-separated       <li> ws - optional windowing system specification. A comma-separated
811  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>
812   . Indicates this entry should only be installed on one of the specified ws    . Indicates this entry should only be installed on one of the specified
813   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
814   on all systems (portable implementation). This information is used as a   on all systems (portable implementation). This information is used as a hint
815  hint  by the installation and update support (user can force installation   by the installation and update support (user can force installation of entry
816  of entry  regardless of this setting).</li>   regardless of this setting).</li>
817       <li> nl - optional locale specification. A comma-separated list of locale        <li> nl - optional locale specification. A comma-separated list of
818   designators defined by Java. Indicates this entry should only be installed  locale   designators defined by Java. Indicates this entry should only be
819   on a system running with a compatible locale (using Java locale-matching  installed   on a system running with a compatible locale (using Java locale-matching
820  rules). If this attribute is not specified, the entry can be installed on  rules). If this attribute is not specified, the entry can be installed on
821  all systems (language-neutral implementation). This information is used as   all systems (language-neutral implementation). This information is used
822  a hint by the installation and update support (user can force installation  as  a hint by the installation and update support (user can force installation
823  of entry regardless of this setting).</li>  of entry regardless of this setting).</li>
824       <li> download-size - optional hint supplied by the feature packager,       <li> download-size - optional hint supplied by the feature packager,
825  indicating  the download size in KBytes of the referenced data archive. If   indicating  the download size in KBytes of the referenced data archive.
826  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>
827  the implementation  needs to distinguish between "not known" and 0 size)</li>  the implementation  needs to distinguish between "not known" and 0 size)</li>
828       <li> install-size - optional hint supplied by the feature packager,       <li> install-size - optional hint supplied by the feature packager,
829  indicating   the install size in KBytes of the referenced data archive. If  indicating   the install size in KBytes of the referenced data archive. If
# Line 837  Line 840 
840   implementation supplied by Eclipse constructs the path identifiers as follows:   implementation supplied by Eclipse constructs the path identifiers as follows:
841    
842  <ul>  <ul>
843      <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in the form       <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in the
844   "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>" (for example,  form   "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>" (for
845   "<tt>plugins/org.eclipse.core.boot_1.0.3.jar</tt>")</li>  example,   "<tt>plugins/org.eclipse.core.boot_1.0.3.jar</tt>")</li>
846       <li> <tt>&lt;data&gt;</tt> element results in a path entry in the form       <li> <tt>&lt;data&gt;</tt> element results in a path entry in the form
847   "<tt>features/&lt;featureId&gt;_&lt;featureVersion&gt;/&lt;dataId&gt;</tt>   "<tt>features/&lt;featureId&gt;_&lt;featureVersion&gt;/&lt;dataId&gt;</tt>
848   " (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>
# Line 850  Line 853 
853  <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>
854    
855  <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
856   files using Java property bundle conventions. Note that the translated strings    files using Java property bundle conventions. Note that the translated
857   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
858   mechanism). </p>  runtime   mechanism). </p>
859    
860  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>
861      Plug-ins and plug-in fragments are individually packaged as separate      Plug-ins and plug-in fragments are individually packaged as separate
# Line 864  Line 867 
867    
868  <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>
869   &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
870   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
871   minimizes chance of collisions, but is not required by the Eclipse architecture.  that   minimizes chance of collisions, but is not required by the Eclipse
872    For example, the following are valid plug-in archive names </p>  architecture.   For example, the following are valid plug-in archive names
873    </p>
874    
875  <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>  <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>
876     <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>     <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>
877     <tt>my_plugin.jar</tt> </p>     <tt>my_plugin.jar</tt> </p>
878    
879  <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
880  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
881  the directory path element). The archive has the following structure </p>  directory path element). The archive has the following structure </p>
882    
883  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>
884     <tt>other plug-in or feature files and subdirectories</tt> <br>     <tt>other plug-in or feature files and subdirectories</tt> <br>
# Line 896  Line 900 
900  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>
901      <b>Note:</b> This section describes the conventions used for translating      <b>Note:</b> This section describes the conventions used for translating
902    the information contained within the feature manifest. It allows for the    the information contained within the feature manifest. It allows for the
903   update client to select the correctly localized strings from the update   update client to select the correctly localized strings from the update server.
904  server.  This section specifically does not describe localization of individual   This section specifically does not describe localization of individual plug-ins.
905  plug-ins.  
906  <p>Several of the attributes within the feature manifest are strings intended  <p>Several of the attributes within the feature manifest are strings intended
907    for display through user interfaces. To facilitate translation, these attribute    for display through user interfaces. To facilitate translation, these attribute
908    values use the convention defined for translatable attributes of plugin.xml.    values use the convention defined for translatable attributes of plugin.xml.
909    Strings beginning with % up to the first space are treated as resource    Strings beginning with % up to the first space are treated as resource identifier
910  identifier  keys (without the %) and looked up in a properties file. For   keys (without the %) and looked up in a properties file. For example </p>
 example </p>  
911    
912  <p><tt>label="%cfg Tool Feature for Linux"</tt> </p>  <p><tt>label="%cfg Tool Feature for Linux"</tt> </p>
913    
914  <p>results in a resource lookup in the correct property file with key "cfg".  <p>results in a resource lookup in the correct property file with key "cfg".
915    If no property files are supplied, or the key is not found the default    If no property files are supplied, or the key is not found the default string
916  string  value (following the %key) is used. </p>   value (following the %key) is used. </p>
917    
918  <p>The property files are named as feature_&lt;locale&gt;.properties using  <p>The property files are named as feature_&lt;locale&gt;.properties using
919    the Java resource bundle naming conventions. Within the feature archive    the Java resource bundle naming conventions. Within the feature archive
# Line 918  Line 921 
921  file.  </p>  file.  </p>
922    
923  <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse  <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse
924   installation and update code should create a class loader for accessing the    installation and update code should create a class loader for accessing
925   translated string. This way, the standard locale lookup algorithm implemented  the  translated string. This way, the standard locale lookup algorithm implemented
926    by Java is automatically used. </p>    by Java is automatically used. </p>
927    
928  <p><tt>ResourceBundle b;</tt> <br>  <p><tt>ResourceBundle b;</tt> <br>
# Line 938  Line 941 
941  as  plug-in fragments.  as  plug-in fragments.
942  <h3> <a name="Packaging_Target-Specific_Support"></a> Packaging Target-Specific  <h3> <a name="Packaging_Target-Specific_Support"></a> Packaging Target-Specific
943   Support</h3>   Support</h3>
944      No change from 1.0. Target-specific plug-in support (os, ws) should be       No change from 1.0. Target-specific plug-in support (os, ws) should
945   packaged as plug-in fragments.  be  packaged as plug-in fragments.
946  <h3> <a name="Packaging_Attribution_Information"></a> Packaging Attribution  <h3> <a name="Packaging_Attribution_Information"></a> Packaging Attribution
947   Information</h3>   Information</h3>
948      This topic is covered in separate documents available on the eclipse.org      This topic is covered in separate documents available on the eclipse.org
# Line 962  Line 965 
965   during its processing. The install handler code has visibility to classes   during its processing. The install handler code has visibility to classes
966   from the installation and update support plug-in, and its prerequisite plug-ins.   from the installation and update support plug-in, and its prerequisite plug-ins.
967    
968  <p><b>Implementation Note:</b> the detailed list of visible prerequisite  <p><b>Implementation Note:</b> the detailed list of visible prerequisite plug-ins
969  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>
970  </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>
971    and <tt>org.eclipse.swt</tt> when running with full workbench (ie. not "headless     and <tt>org.eclipse.swt</tt> when running with full workbench (ie. not
972   mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>  "headless  mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>
973    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.
974    </p>    </p>
975    
# Line 977  Line 980 
980    
981  <ul>  <ul>
982      <li> install-initiated - the install handler is called after a feature      <li> install-initiated - the install handler is called after a feature
983   was selected for installation, but before any files were downloaded. It   was selected for installation, but before any files were downloaded. It is
984  is  intended  to implement any custom click-through or user registration   intended  to implement any custom click-through or user registration dialogs.
985  dialogs.  The base implementation of this method supplied with the abstract   The base implementation of this method supplied with the abstract class
986  class <tt>BaseInstallHandler       </tt>performs the default click-through      <tt>BaseInstallHandler       </tt>performs the default click-through processing
987  processing using the license  text supplied as part of the feature manifest.  using the license  text supplied as part of the feature manifest. On return
988  On return this method indicates  success (installation continues) of failure  this method indicates  success (installation continues) of failure (installation
989  (installation is aborted).</li>  is aborted).</li>
990       <li> install-downloaded - the install handler is called after all the       <li> install-downloaded - the install handler is called after all the
991   required  feature files were downloaded (feature, plugins, data) but before   required  feature files were downloaded (feature, plugins, data) but before
992   the actual  installation is performed. The install handler is expected to   the actual  installation is performed. The install handler is expected to
# Line 991  Line 994 
994   other pre-install processing.&nbsp; On return this method indicates success   other pre-install processing.&nbsp; On return this method indicates success
995   (installation continues) or failure (installation is aborted).</li>   (installation continues) or failure (installation is aborted).</li>
996       <li> install-completion - the install handler is called after the feature       <li> install-completion - the install handler is called after the feature
997   information and the plug-ins were installed. It is expected to complete the    information and the plug-ins were installed. It is expected to complete
998   installation of any non-plug-in data that was part of the feature. On return  the  installation of any non-plug-in data that was part of the feature. On
999   this method indicates success (returns custom install log) or failure (installation  return  this method indicates success (returns custom install log) or failure
1000   is aborted). On failure, the install handler is expected to perform any  (installation  is aborted). On failure, the install handler is expected to
1001  required cleanup.</li>  perform any required cleanup.</li>
1002       <li> uninstall-initiated - the install handler is called when a feature       <li> uninstall-initiated - the install handler is called when a feature
1003   is selected for removal, but before any of the standard uninstall processing   is selected for removal, but before any of the standard uninstall processing
1004   has taken place. It is passed the custom install log created by the install   has taken place. It is passed the custom install log created by the install
# Line 1036  Line 1039 
1039   the installation (originator is not trusted), continuing the installation   the installation (originator is not trusted), continuing the installation
1040   (originator is trusted for this installation).   (originator is trusted for this installation).
1041  <h2> <a name="Update_Server"></a> Update Server</h2>  <h2> <a name="Update_Server"></a> Update Server</h2>
1042      The default Eclipse update server is any URL-accessible server. The default       The default Eclipse update server is any URL-accessible server. The
1043    implementation assumes a fixed-layout server. The content of the server  default   implementation assumes a fixed-layout server. The content of the
1044  (in terms of available features and plug-ins) is described in a site map  server (in terms of available features and plug-ins) is described in a site
1045  file, <i>site.xml</i>. This file can be manually maintained, or can be dynamically  map file, <i>site.xml</i>. This file can be manually maintained, or can be
1046   computed by the server.  dynamically   computed by the server.
1047  <h3> <a name="Site_Map"></a> Site Map</h3>  <h3> <a name="Site_Map"></a> Site Map</h3>
1048      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 map
1049  file,   or a URL of a directory path containing the site map file (similar  file,   or a URL of a directory path containing the site map file (similar
# Line 1114  Line 1117 
1117      <li> &lt;site&gt; - defines the site map</li>      <li> &lt;site&gt; - defines the site map</li>
1118    
1119    <ul>    <ul>
1120      <li> type - optional site type specification. The value refers to a type       <li> type - optional site type specification. The value refers to a
1121   string registered via the <a href="#Framework">install framework</a>  extension  type   string registered via the <a href="#Framework">install framework</a>
1122   point. If not specified, the type is assumed to be the default Eclipse site   extension  point. If not specified, the type is assumed to be the default
1123   type (as specified in this document).</li>  Eclipse site  type (as specified in this document).</li>
1124       <li> url - optional URL defining the update site baseline URL (used       <li> url - optional URL defining the update site baseline URL (used
1125  to  determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;  to  determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;
1126   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 not
# Line 1141  Line 1144 
1144      <li> type - optional feature type specification. The value refers to      <li> type - optional feature type specification. The value refers to
1145  a  type  string registered via the <a href="#Framework">install framework</a>  a  type  string registered via the <a href="#Framework">install framework</a>
1146    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
1147   feature type for the site. If the site type is the default Eclipse site type,    feature type for the site. If the site type is the default Eclipse site
1148   the default feature type is the packaged feature type (as specified in this  type,  the default feature type is the packaged feature type (as specified
1149   document).</li>  in this  document).</li>
1150       <li> id - optional feature identifier. The information is used as a       <li> id - optional feature identifier. The information is used as a
1151  performance   optimization to speed up searches for features. Must match  performance   optimization to speed up searches for features. Must match the
1152  the identifier   specified in the feature.xml of the referenced archive (the  identifier   specified in the feature.xml of the referenced archive (the url
1153  url attribute).   If specified, the version attribute must also be specified.</li>  attribute).   If specified, the version attribute must also be specified.</li>
1154       <li> version - optional feature version. The information is used as       <li> version - optional feature version. The information is used as
1155  a  performance  optimization to speed up searches for features. Must match  a  performance  optimization to speed up searches for features. Must match
1156  the  version specified in the feature.xml of the referenced archive (the  the  version specified in the feature.xml of the referenced archive (the url
1157  url attribute).  If specified, the id attribute must also be specified.</li>  attribute).  If specified, the id attribute must also be specified.</li>
1158       <li> url - required URL reference to the feature archive. Can be relative       <li> url - required URL reference to the feature archive. Can be relative
1159   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
1160  file.       <b>Note</b>: the default site implementation allows features to   file.       <b>Note</b>: the default site implementation allows features
1161  be accessed without being explicitly declared using a &lt;feature&gt; entry.  to be accessed without being explicitly declared using a &lt;feature&gt;
1162  By default, an undeclared features reference is interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>  entry. By default, an undeclared features reference is interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>
1163        <li>label - optional feature label. The value is used for optimization        <li>label - optional feature label. The value is used for optimization
1164   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>
1165       </li>       </li>
# Line 1179  Line 1182 
1182   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
1183    ws systems. If this attribute&nbsp;is "*", the feature can be installed    ws systems. If this attribute&nbsp;is "*", the feature can be installed
1184    on all systems (portable implementation). This information is used as a    on all systems (portable implementation). This information is used as a
 hint by the installation and update support (user can force installation  
 of feature regardless of this setting).</li>  
      <li> nl - optional locale specification. A comma-separated list of locale  
  designators defined by Java. Indicates this feature should only be installed  
  on a system running with a compatible locale (using Java locale-matching  
 rules). If this attribute&nbsp;is "*", the feature can be installed on all  
 systems (language-neutral implementation). This information is used as a  
1185  hint by the installation and update support (user can force installation of  hint by the installation and update support (user can force installation of
1186  feature regardless of this setting).</li>  feature regardless of this setting).</li>
1187          <li> nl - optional locale specification. A comma-separated list of
1188    locale   designators defined by Java. Indicates this feature should only
1189    be installed   on a system running with a compatible locale (using Java locale-matching
1190     rules). If this attribute&nbsp;is "*", the feature can be installed on all
1191    systems (language-neutral implementation). This information is used as a hint
1192    by the installation and update support (user can force installation of feature
1193    regardless of this setting).</li>
1194       <li>patch - optional specification indicating if this feature is a       <li>patch - optional specification indicating if this feature is a
1195  patch. Default is "false".&nbsp;</li>  patch. Default is "false".&nbsp;</li>
1196    
1197    </ul>    </ul>
1198       <li> &lt;archive&gt; - identifies referenced "storage" archive (the       <li> &lt;archive&gt; - identifies referenced "storage" archive (the
1199  actual  files referenced via the <tt>&lt;plugin&gt;</tt> or <tt>&lt;data&gt;</tt>  actual  files referenced via the <tt>&lt;plugin&gt;</tt> or <tt>&lt;data&gt;</tt>
1200    elements in the feature manifest). The site simply manages archives as a     elements in the feature manifest). The site simply manages archives as
1201   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
1202   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).
1203   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;
1204   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;"
1205   to the location of the site.xml file.</li>  relative   to the location of the site.xml file.</li>
1206    
1207    <ul>    <ul>
1208      <li> path - required archive path identifier. This is a string that is       <li> path - required archive path identifier. This is a string that
1209   determined  by the <a href="#Feature_Archive_Mapping_Id_To_Path">feature</a>  is  determined  by the <a href="#Feature_Archive_Mapping_Id_To_Path">feature</a>
1210    referencing this archive and is not otherwise interpreted by the site (other     referencing this archive and is not otherwise interpreted by the site
1211   than as a lookup token).</li>  (other   than as a lookup token).</li>
1212       <li> url - required URL reference to the archive. Can be relative or       <li> url - required URL reference to the archive. Can be relative or
1213  absolute.  If relative, it is relative to the location of the site.xml file.</li>  absolute.  If relative, it is relative to the location of the site.xml file.</li>
1214    
# Line 1233  Line 1236 
1236  <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>
1237    
1238  <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
1239    files using Java property bundle conventions. Note that the translated    files using Java property bundle conventions. Note that the translated strings
1240  strings  are used at installation time (ie. do not employ the plug-in fragment   are used at installation time (ie. do not employ the plug-in fragment runtime
1241  runtime  mechanism). The property bundles are located relative to the site.xml   mechanism). The property bundles are located relative to the site.xml location.
1242  location.   </p>    </p>
1243    
1244  <h3> <a name="Default_Site_Layout"></a> Default Site Layout</h3>  <h3> <a name="Default_Site_Layout"></a> Default Site Layout</h3>
1245      <tt>&lt;site root&gt;/</tt> <br>      <tt>&lt;site root&gt;/</tt> <br>
# Line 1262  Line 1265 
1265   servlets that compute the site.xml map, and control access to individual   servlets that compute the site.xml map, and control access to individual
1266  archives based on some user criteria)</li>  archives based on some user criteria)</li>
1267       <li> by supplying a custom concrete implementation of the site object       <li> by supplying a custom concrete implementation of the site object
1268   (installed  on the client machine, update server specified <tt>&lt;site   (installed  on the client machine, update server specified <tt>&lt;site type=""&gt;</tt>
1269  type=""&gt;</tt>  ). The custom concrete site implementation, together with   ). The custom concrete site implementation, together with any server-side
1270  any server-side   logic support the required control mechanisms.</li>    logic support the required control mechanisms.</li>
1271    
1272  </ul>  </ul>
1273      Eclipse provides an example demonstrating an implementation of an access      Eclipse provides an example demonstrating an implementation of an access
# Line 1295  Line 1298 
1298     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1299  META_INF/</tt>   </p>  META_INF/</tt>   </p>
1300    
1301  <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
1302  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
1303   location) </p>   location) </p>
1304    
1305  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>
1306      Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins      Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins
1307   that were directly installed into the Eclipse file tree without being part   that were directly installed into the Eclipse file tree without being part
1308   of a feature (eg. developer unzipping plug-in archive directly into the   of a feature (eg. developer unzipping plug-in archive directly into the Eclipse
1309  Eclipse  file tree).   file tree).
1310  <p>Eclipse runtime recognizes these plugins during startup and loads the  <p>Eclipse runtime recognizes these plugins during startup and loads the plug-in
1311  plug-in information into the runtime registry following the standard plug-in  information into the runtime registry following the standard plug-in binding
1312  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,
1313  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
1314  using the update support (hence "unmanaged"). Unmanaged plug-in that become  the update support (hence "unmanaged"). Unmanaged plug-in that become referenced
1315  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
1316  action become "managed" (can be updated as part of the feature). </p>  "managed" (can be updated as part of the feature). </p>
1317    
1318  <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
1319   UI. </p>   UI. </p>
1320    
1321  <h3> <a name="Using_Native_Platform_Installers"></a> Using Native Platform  <h3> <a name="Using_Native_Platform_Installers"></a> Using Native Platform
1322   Installers</h3>   Installers</h3>
1323      The Eclipse installation contains plugins that can be shared across multiple       The Eclipse installation contains plugins that can be shared across
1324    features. When installing and uninstalling features using the Eclipse installation  multiple   features. When installing and uninstalling features using the
1325    and update support, these relationship are correctly maintained. Only one  Eclipse installation   and update support, these relationship are correctly
1326    copy of any version of a plug-in is used.  maintained. Only one   copy of any version of a plug-in is used.
1327  <p>However, when using native platform installers, performing native uninstall  <p>However, when using native platform installers, performing native uninstall
1328    creates problems because plug-ins would be removed without regard to any    creates problems because plug-ins would be removed without regard to any
1329   sharing relationships. As a result, Eclipse <b>does not allow</b> plug-ins   sharing relationships. As a result, Eclipse <b>does not allow</b> plug-ins
1330   to be installed using native installers into the shared installation tree.   to be installed using native installers into the shared installation tree.
1331   Instead, native installers must establish their own installation root directory.   Instead, native installers must establish their own installation root directory.
1332   The subdirectory structure is the same as defined for base Eclipse. The   The subdirectory structure is the same as defined for base Eclipse. The private
1333  private  root directory is logically linked into the shared Eclipse installation   root directory is logically linked into the shared Eclipse installation
1334  via  a link file installed by the native installer. The file path for the  via  a link file installed by the native installer. The file path for the
1335  link  file is <tt>&lt;configRoot&gt;/links/</tt>. The <tt>&lt;configRoot&gt;  link  file is <tt>&lt;configRoot&gt;/links/</tt>. The <tt>&lt;configRoot&gt;
1336  </tt>  location is computed by Eclipse relative to the launch <a  </tt>  location is computed by Eclipse relative to the launch <a
# Line 1345  Line 1348 
1348  <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>
1349    
1350  <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
1351    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 path
1352  path  to the installation directory root, specified in local OS format. The   to the installation directory root, specified in local OS format. The optional
1353  optional  annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse   annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse update support
1354  update support  should allow the specified location to be used for updates.   should allow the specified location to be used for updates. Default is to
1355  Default is to  allow updates&nbsp; (w). </p>   allow updates&nbsp; (w). </p>
1356    
1357  <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
1358   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
1359   plug-ins during the platform startup. The native installer is responsible   plug-ins during the platform startup. The native installer is responsible
1360   for uninstalling the link when the corresponding directory is removed. Eclipse    for uninstalling the link when the corresponding directory is removed.
1361   runtime ignores any links that cannot be resolved. <br>  Eclipse   runtime ignores any links that cannot be resolved. <br>
1362     &nbsp; </p>     &nbsp; </p>
1363     <br>     <br>
1364    <br>    <br>
1365   <br>   <br>
1366     <br>
1367  </body>  </body>
1368  </html>  </html>

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12