platform-update-home/doc/eclipse_update_packaging.html

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

revision 1.10, Mon Dec 9 18:52:19 2002 UTC revision 1.11, Thu Jan 2 14:05:51 2003 UTC
# Line 21  Line 21 
21  <p><b>Change History:</b> </p>  <p><b>Change History:</b> </p>
22    
23  <ul>  <ul>
24      <li><small>2.0.15<br>       <li><small>2.0.16</small>     <small><br>
25       </small>       </small>
26      <ul>      <ul>
27        <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws,patch tag</small><br>        <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws support
28    "*"</small></li>
29        </ul>
30         </li>         </li>
31      <li><small>2.0.15</small>
32        <ul>
33          <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws,patch tag</small></li>
34      </ul>      </ul>
35     </li>     </li>
36    <li><small>2.0.14<br>    <li><small>2.0.14<br>
# Line 73  Line 78 
78    
79    <ul>    <ul>
80     <li> <font size="-1">&lt;site&gt; &lt;feature&gt; changes - additional     <li> <font size="-1">&lt;site&gt; &lt;feature&gt; changes - additional
81  markup to optionally expose feature identification information to speed up   markup to optionally expose feature identification information to speed
82  searches</font></li>  up  searches</font></li>
83      <li> <font size="-1">removed obsolete text</font></li>      <li> <font size="-1">removed obsolete text</font></li>
84      <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>
85      <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 165  Line 170 
170    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Controlling_Access">Controlling    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Controlling_Access">Controlling
171   Access</a>  <br>   Access</a>  <br>
172    <a href="#Eclipse_Install">Eclipse Install</a>  <br>    <a href="#Eclipse_Install">Eclipse Install</a>  <br>
173    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Default_Install_Layout">Default     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
174   Install Layout</a>  <br>   href="#Default_Install_Layout">Default   Install Layout</a>  <br>
175    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Unmanaged_Plugins">"Unmanaged"    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Unmanaged_Plugins">"Unmanaged"
176   Plug-Ins</a>  <br>   Plug-Ins</a>  <br>
177    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
# Line 189  Line 194 
194   R2.0 supplies a default concrete implementation of this framework. <li>   R2.0 supplies a default concrete implementation of this framework. <li>
195      <b>  feature support</b></li>      <b>  feature support</b></li>
196      <br>      <br>
197    In R2.0 the concept of a <i>component</i> and <i>configuration</i> is merged     In R2.0 the concept of a <i>component</i> and <i>configuration</i> is
198   into <i>feature</i>. Features define the packaging structure for a group  merged  into <i>feature</i>. Features define the packaging structure for
199  of related plug-ins, plug-in fragments, and optionally non-plug-in files.  a group of related plug-ins, plug-in fragments, and optionally non-plug-in
200  Features are treated purely as an installation and packaging construct. They  files. Features are treated purely as an installation and packaging construct.
201  do not play a role during Eclipse plug-in execution. Features do not nest.  They do not play a role during Eclipse plug-in execution. Features do not
202  They are simply an inclusive "manifest" of the plug-ins, fragments and other  nest. They are simply an inclusive "manifest" of the plug-ins, fragments
203  files that make up that feature. If features are logically made up of plug-ins  and other files that make up that feature. If features are logically made
204  from "sub-features", the top-level feature "manifest" must be fully resolved  up of plug-ins from "sub-features", the top-level feature "manifest" must
205  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>
206      <br>      <br>
207    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
208   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 210  Line 215 
215    Default Eclipse update server must contain a <i>site map</i> file (site.xml).    Default Eclipse update server must contain a <i>site map</i> file (site.xml).
216   This is an evolution of the R1.0 install.index support. The rationale for   This is an evolution of the R1.0 install.index support. The rationale for
217   using a structured site defined by the map rather than a "free form" web   using a structured site defined by the map rather than a "free form" web
218  site, is the ability to present a consistent installation experience for the   site, is the ability to present a consistent installation experience for
219  user. Also, this provides the necessary structure for discovery of available  the user. Also, this provides the necessary structure for discovery of available
220  updates. Additional support for "free form" browsing may be considered in  updates. Additional support for "free form" browsing may be considered in
221  future work.    <li> <b>using native install/ uninstall</b></li>  future work.    <li> <b>using native install/ uninstall</b></li>
222      <br>      <br>
223    The primary mechanism for installing and updating Eclipse features is the     The primary mechanism for installing and updating Eclipse features is
224   built-in installation and update support. Some products may instead choose  the  built-in installation and update support. Some products may instead
225   to use native installer technology (eg. MSI, RPM, etc) to deliver Eclipse  choose  to use native installer technology (eg. MSI, RPM, etc) to deliver
226   features. However, native installers do not implement the required support  Eclipse  features. However, native installers do not implement the required
227   for understanding the Eclipse installation structure. In particular, the  support  for understanding the Eclipse installation structure. In particular,
228  native uninstallers will, by default, remove plug-in files that were installed  the native uninstallers will, by default, remove plug-in files that were
229  using the native installer without regard to these plug-ins being needed  installed using the native installer without regard to these plug-ins being
230  by other features. As a result, features installed using native installers  needed by other features. As a result, features installed using native installers
231  must be written into private product-specific installation location and not  must be written into private product-specific installation location and not
232  the shared Eclipse installation location. The shared Eclipse is made aware  the shared Eclipse installation location. The shared Eclipse is made aware
233  of the produce-specific location via an installed "link file". <li> <b>custom  of the produce-specific location via an installed "link file". <li> <b>custom
234  install handling</b></li>  install handling</b></li>
235      <br>      <br>
236    In many cases the standard installation handling supplied by Eclipse is    In many cases the standard installation handling supplied by Eclipse is
237  not be sufficient to handle various custom requirements. To accommodate this,   not be sufficient to handle various custom requirements. To accommodate
238   R2.0 Eclipse supports custom install handlers packaged as part of the feature  this,  R2.0 Eclipse supports custom install handlers packaged as part of
239   and executed during the feature installation. <li> <b>path naming conventions</b></li>  the feature  and executed during the feature installation. <li> <b>path naming
240    conventions</b></li>
241      <br>      <br>
242    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 the
243   packaged archives (eg. directory path names for plug-ins). This approach   packaged archives (eg. directory path names for plug-ins). This approach
# Line 246  Line 252 
252  <h3> <a name="Concepts"></a> Concepts</h3>  <h3> <a name="Concepts"></a> Concepts</h3>
253     <b>Plug-in</b> <br>     <b>Plug-in</b> <br>
254    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
255   recognized by the Eclipse runtime environment. In general, plug-ins are not    recognized by the Eclipse runtime environment. In general, plug-ins are
256  exposed to users that select function during installation or update. The  not exposed to users that select function during installation or update.
257  reason is that plug-in boundaries are established by developers for development  The reason is that plug-in boundaries are established by developers for development
258   reasons (like function reuse) and present the wrong level of granularity   reasons (like function reuse) and present the wrong level of granularity
259  in terms of what the user sees as the unit of function.  in terms of what the user sees as the unit of function.
260  <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 256  Line 262 
262   This will generally depend on the particular development tool being used.   This will generally depend on the particular development tool being used.
263   Typically, however, the developer will likely setup the plug-in to execute   Typically, however, the developer will likely setup the plug-in to execute
264   from a directory tree containing exposed .class files, rather than executing   from a directory tree containing exposed .class files, rather than executing
265   from a .jar (requires an extra step to create the .jar and we all know developers    from a .jar (requires an extra step to create the .jar and we all know
266   hate extra steps). Also, at this stage the developer does not pay particular  developers  hate extra steps). Also, at this stage the developer does not
267   attention to plug-in versioning information, because the plug-in is continually  pay particular  attention to plug-in versioning information, because the
268   changing. </p>  plug-in is continually  changing. </p>
269    
270  <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
271   to a form suitable for packaging and installation. Typically it means creation   to a form suitable for packaging and installation. Typically it means creation
272   of the runtime .jar(s) and removing any development-time files (source, exposed    of the runtime .jar(s) and removing any development-time files (source,
273  .class files, etc). It also means updating the plugin.xml manifest with the  exposed .class files, etc). It also means updating the plugin.xml manifest
274  formal plug-in version and reflecting the version in the plug-in directory  with the formal plug-in version and reflecting the version in the plug-in
275  name (see "Concurrent Plug-In Version Support" for details). </p>  directory name (see "Concurrent Plug-In Version Support" for details). </p>
276    
277  <p><b>Plug-in Fragment</b> <br>  <p><b>Plug-in Fragment</b> <br>
278    Plug-in Fragments (or simply Fragments) allow independent packaging of    Plug-in Fragments (or simply Fragments) allow independent packaging of
279  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
280  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
281  code.  At runtime, fragments are logically merged into the base plug-in.  code.  At runtime, fragments are logically merged into the base plug-in. From
282  From a packaging point of view, the install and update support does not really  a packaging point of view, the install and update support does not really
283  differentiate  between plug-ins and their related fragments. </p>  differentiate  between plug-ins and their related fragments. </p>
284    
285  <p><b>Feature</b> <br>  <p><b>Feature</b> <br>
286    A feature is an installation packaging mechanism used to define a group    A feature is an installation packaging mechanism used to define a group
287  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
288  is used to deliver some user function. A feature can also include other features.   is used to deliver some user function. A feature can also include other
289   Features are exposed to users as part of the packaging and installation  features.  Features are exposed to users as part of the packaging and installation
290  process,  because they represent a unit of function selection. Features also  process,  because they represent a unit of function selection. Features also
291  represent  a unit of installation. Features carry a version identifier.</p>  represent  a unit of installation. Features carry a version identifier.</p>
292    
293  <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,
294   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 are
295   placed on an update server for download and installation by the Eclipse   placed on an update server for download and installation by the Eclipse update
296  update  manager, or they can be used as the input into a formal packaging   manager, or they can be used as the input into a formal packaging process
297  process  using one of the "traditional" installer technologies. The format   using one of the "traditional" installer technologies. The format of the
298  of the feature archive is described later. </p>  feature archive is described later. </p>
299    
300  <h3> <a name="Framework"></a> Framework</h3>  <h3> <a name="Framework"></a> Framework</h3>
301     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 299  Line 305 
305     <li> concrete implementations of feature (IFeature interface) that can     <li> concrete implementations of feature (IFeature interface) that can
306  be used to support alternate packaging schemes. New concrete feature types  be used to support alternate packaging schemes. New concrete feature types
307  are  registere via the "org.eclipse.update.featureTypes" extension point.</li>  are  registere via the "org.eclipse.update.featureTypes" extension point.</li>
308      <li> concrete implementations of site (ISite interface) that can be used       <li> concrete implementations of site (ISite interface) that can be
309   to support alternate site layout, or site behavior. New concrete site types  used  to support alternate site layout, or site behavior. New concrete site
310   are registered via the "org.eclipse.update.siteTypes" extension point.</li>  types   are registered via the "org.eclipse.update.siteTypes" extension point.</li>
311      <li> each feature can specify a custom install handler as part of its      <li> each feature can specify a custom install handler as part of its
312  feature  manifest. Install handlers (IInstallHandler interface) are dynamically  feature  manifest. Install handlers (IInstallHandler interface) are dynamically
313  invoked as part of the installation process to handle non-plugin data, plus  invoked as part of the installation process to handle non-plugin data, plus
# Line 316  Line 322 
322        <tr>        <tr>
323     <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 concrete
324   implementation of the framework delivered with Eclipse. It specifies the   implementation of the framework delivered with Eclipse. It specifies the
325  structure of the default feature implementation, as well as the default site   structure of the default feature implementation, as well as the default
326  implementation, plus the corresponding xml files (feature.xml and site.xml).  site  implementation, plus the corresponding xml files (feature.xml and site.xml).
327  Providers of alternate concrete implementations can extend&nbsp; parts or  Providers of alternate concrete implementations can extend&nbsp; parts or
328  all of the default Eclipse implementation. This includes providing a mechanism  all of the default Eclipse implementation. This includes providing a mechanism
329  for dynamic computation of the site map (site.xml)</i></b></td>  for dynamic computation of the site map (site.xml)</i></b></td>
# Line 341  Line 347 
347    
348  <h3> <a name="Feature_Archive"></a> Feature Archive</h3>  <h3> <a name="Feature_Archive"></a> Feature Archive</h3>
349     The feature packaging information is placed into a separate Java .jar.     The feature packaging information is placed into a separate Java .jar.
350  Standard Java jar facilities are used for constructing feature archives. Feature   Standard Java jar facilities are used for constructing feature archives.
351  archives reference separately packaged plug-in archives (see next section)  Feature archives reference separately packaged plug-in archives (see next
352  and non-plug-in files.  section) and non-plug-in files.
353  <p>Features are identified using a structured identifier based on the provider  <p>Features are identified using a structured identifier based on the provider
354   internet domain name. For example, organization eclipse.org may produce feature    internet domain name. For example, organization eclipse.org may produce
355  org.eclipse.javatooling. The character set used for feature identifiers is  feature org.eclipse.javatooling. The character set used for feature identifiers
356  as specified for plug-in identifiers (see reference information describing  is as specified for plug-in identifiers (see reference information describing
357   the plug-in manifest). </p>   the plug-in manifest). </p>
358    
359  <p>The recommended convention for naming the feature archives is <br>  <p>The recommended convention for naming the feature archives is <br>
# Line 378  Line 384 
384    
385  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
386    
387  <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?, license?,  <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?,
388  url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>  license?, url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>
389    <tt>&lt;!ATTLIST feature</tt> <br>    <tt>&lt;!ATTLIST feature</tt> <br>
390    <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;
391   CDATA #REQUIRED</tt> <br>   CDATA #REQUIRED</tt> <br>
# Line 461  Line 467 
467    <tt>&nbsp;&nbsp;&nbsp; optional &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;&nbsp;    <tt>&nbsp;&nbsp;&nbsp; optional &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;&nbsp;
468   (true | false) "false"</tt><tt>&nbsp;<br>   (true | false) "false"</tt><tt>&nbsp;<br>
469    </tt><tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    </tt><tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
470   &nbsp;&nbsp;&nbsp; (perfect | equivalent | compatible | greaterOrEqual) "compatible"</tt><tt>    &nbsp;&nbsp;&nbsp; (perfect | equivalent | compatible | greaterOrEqual)
471  &nbsp; &nbsp;&nbsp;&nbsp; </tt><br>  "compatible"</tt><tt> &nbsp; &nbsp;&nbsp;&nbsp; </tt><br>
472    <tt>&nbsp;&nbsp;&nbsp; search_location&nbsp;&nbsp; </tt><tt>(</tt><font    <tt>&nbsp;&nbsp;&nbsp; search_location&nbsp;&nbsp; </tt><tt>(</tt><font
473   color="#000000"><tt> root | self | both) "root"</tt></font><br>   color="#000000"><tt> root | self | both) "root"</tt></font><br>
474    <tt>&gt;</tt> </p>    <tt>&gt;</tt> </p>
# Line 489  Line 495 
495   CDATA #REQUIRED</tt> <br>   CDATA #REQUIRED</tt> <br>
496    <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA    <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA
497   #REQUIRED</tt> <br>   #REQUIRED</tt> <br>
498    <tt>&nbsp;&nbsp;&nbsp; fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true | false)     <tt>&nbsp;&nbsp;&nbsp; fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true |
499   "false"</tt> <br>  false)  "false"</tt> <br>
500    <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
501   CDATA #IMPLIED</tt> <br>   CDATA #IMPLIED</tt> <br>
502    <tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# Line 536  Line 542 
542  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>
543   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
544   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
545   on all systems (portable implementation). This information is used as a hint    on all systems (portable implementation). This information is used as a
546  by the installation and update support (user can force installation of feature  hint by the installation and update support (user can force installation
547  regardless of this setting).</li>  of feature regardless of this setting).</li>
548      <li> arch - optional machine architecture specification. A comma-separated      <li> arch - optional machine architecture specification. A comma-separated
549   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
550   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
# Line 550  Line 556 
556  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>
557   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
558   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
559   on all systems (portable implementation). This information is used as a hint    on all systems (portable implementation). This information is used as a
560  by the installation and update support (user can force installation of feature  hint by the installation and update support (user can force installation
561  regardless of this setting).</li>  of feature regardless of this setting).</li>
562      <li> nl - optional locale specification. A comma-separated list of locale      <li> nl - optional locale specification. A comma-separated list of locale
563   designators defined by Java. Indicates this feature should only be installed   designators defined by Java. Indicates this feature should only be installed
564   on a system running with a compatible locale (using Java locale-matching   on a system running with a compatible locale (using Java locale-matching
565  rules). If this attribute is not specified, the feature can be installed  rules). If this attribute is not specified, the feature can be installed on
566  on all systems (language-neutral implementation). This information is used  all systems (language-neutral implementation). This information is used as
567  as a hint by the installation and update support (user can force installation  a hint by the installation and update support (user can force installation
568  of feature regardless of this setting).</li>  of feature regardless of this setting).</li>
569      <li> colocation-affinity - optional reference to another feature identifier      <li> colocation-affinity - optional reference to another feature identifier
570   used to select the default installation location for this feature. When this    used to select the default installation location for this feature. When
571  feature is being installed as a new feature (no other versions of it are  this feature is being installed as a new feature (no other versions of it
572  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
573   location as the referenced feature.</li>   location as the referenced feature.</li>
574      <li> primary - optional indication specifying whether this feature can      <li> primary - optional indication specifying whether this feature can
575   be used as a <a href="#Dominant_Feature">primary feature</a> . Default if   be used as a <a href="#Dominant_Feature">primary feature</a> . Default if
# Line 581  Line 587 
587     <li> library - optional .jar library containing the install handler classes.     <li> library - optional .jar library containing the install handler classes.
588   If specified, the referenced .jar must be contained in the feature archive.   If specified, the referenced .jar must be contained in the feature archive.
589   It is specified as a path within the feature archive, relative to the feature.xml   It is specified as a path within the feature archive, relative to the feature.xml
590   entry. If not specified, the feature archive itself is used to load the install    entry. If not specified, the feature archive itself is used to load the
591  handler classes. This attribute is only interpreted if <i>class</i> attribute  install handler classes. This attribute is only interpreted if <i>class</i>
592  is also specified</li>  attribute is also specified</li>
593      <li> handler - optional identifier of the install handler. The value      <li> handler - optional identifier of the install handler. The value
594  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. If
595        <i>  library</i> is specified,&nbsp; the value is interpreted as a        <i>  library</i> is specified,&nbsp; the value is interpreted as a fully
596  fully qualified  name of a class contained in the specified <i>library</i>.  qualified  name of a class contained in the specified <i>library</i>. If
597  If <i>library</i>   is not specified, the value is is interpreted as an extension        <i>library</i>   is not specified, the value is is interpreted as an
598  identifier  of an extension registered in the <i>org.eclipse.update.installHandlers</i>  extension identifier  of an extension registered in the <i>org.eclipse.update.installHandlers</i>
599    extension point. In either case, the resulting class must implement the    extension point. In either case, the resulting class must implement the
600        <i> IInstallHandler</i> interface. The class is dynamically loaded and         <i> IInstallHandler</i> interface. The class is dynamically loaded
601  called at specific points during feature processing. The handler has visibility  and called at specific points during feature processing. The handler has
602  to the API classes from the update plug-in, and Eclipse plug-ins required  visibility to the API classes from the update plug-in, and Eclipse plug-ins
603  by the update plugin.</li>  required by the update plugin.</li>
604    
605    </ul>    </ul>
606      <li> &lt;description&gt; - brief component description as simple text.      <li> &lt;description&gt; - brief component description as simple text.
# Line 608  Line 614 
614  each national language.</li>  each national language.</li>
615    
616    </ul>    </ul>
617      <li> &lt;copyright&gt; - feature copyright as simple text. Intended to       <li> &lt;copyright&gt; - feature copyright as simple text. Intended
618   be translated.</li>  to  be translated.</li>
619    
620    <ul>    <ul>
621     <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
# Line 623  Line 629 
629   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]
630   [Reject] actions during the download/ installation process. Note, that click-through   [Reject] actions during the download/ installation process. Note, that click-through
631   license must be specified for any feature that will be selected for installation   license must be specified for any feature that will be selected for installation
632   or update using the Eclipse update manager. When using nested features, only    or update using the Eclipse update manager. When using nested features,
633  the nesting parent (ie. the feature selected for installation or update) must  only the nesting parent (ie. the feature selected for installation or update)
634  have click-through license text defined. The license text is required even  must have click-through license text defined. The license text is required
635  if the optional <i>url</i> attribute is specified.</li>  even if the optional <i>url</i> attribute is specified.</li>
636    
637    <ul>    <ul>
638     <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
# Line 650  Line 656 
656      <li> label - displayable label (name) for the referenced site</li>      <li> label - displayable label (name) for the referenced site</li>
657    
658      </ul>      </ul>
659      <li> &lt;discovery&gt; - URL to go to for new features. In general, a       <li> &lt;discovery&gt; - URL to go to for new features. In general,
660  provider  can use this element to reference its own site(s), or site(s) of  a  provider  can use this element to reference its own site(s), or site(s)
661  partners  that offer complementary features. Eclipse uses this element simply  of  partners  that offer complementary features. Eclipse uses this element
662  as a way to distribute new site URLs to the clients</li>  simply  as a way to distribute new site URLs to the clients</li>
663    
664      <ul>      <ul>
665     <li> url - actual URL</li>     <li> url - actual URL</li>
# Line 662  Line 668 
668      </ul>      </ul>
669    
670    </ul>    </ul>
671      <li> &lt;includes&gt; - optional reference to a nested feature that is       <li> &lt;includes&gt; - optional reference to a nested feature that
672   considered to be part of this feature. Nested features must be located on  is  considered to be part of this feature. Nested features must be located
673   the same update site as this feature</li>  on  the same update site as this feature</li>
674    
675    <ul>    <ul>
676     <li> id - required nested feature identifier</li>     <li> id - required nested feature identifier</li>
677      <li> version - required nested feature version</li>      <li> version - required nested feature version</li>
678        <li> name- optional displayable label (name). Intended to be translated.</li>        <li> name- optional displayable label (name). Intended to be translated.</li>
679        <li>optional - optional specification indicating if this included feature         <li>optional - optional specification indicating if this included
680   can be optionally installed. Default is "false"<br>  feature  can be optionally installed. Default is "false"<br>
681        </li>        </li>
682        <li>match&nbsp; - optional rule that will be applied when resolving        <li>match&nbsp; - optional rule that will be applied when resolving
683  the feature reference. A <samp>perfect</samp> match (the default that matches  the feature reference. A <samp>perfect</samp> match (the default that matches
# Line 682  Line 688 
688   consideration, while <samp>greaterOrEqual</samp> simply allows any version   consideration, while <samp>greaterOrEqual</samp> simply allows any version
689   that is more recent or identical to the one specified).</li>   that is more recent or identical to the one specified).</li>
690        <li>search_location&nbsp; - optional. Indicates whether the "New Updates"        <li>search_location&nbsp; - optional. Indicates whether the "New Updates"
691   action should search the update location determined by the nesting root   action should search the update location determined by the nesting root feature
692  feature  (<tt>root</tt>, is the default), or the location defined by the   (<tt>root</tt>, is the default), or the location defined by the nested feature
693  nested feature  (<tt>self</tt>), or search both (<tt>both</tt>) in that order   (<tt>self</tt>), or search both (<tt>both</tt>) in that order (root first,
694  (root first,  self if nothing is found).</li>   self if nothing is found).</li>
695    
696    </ul>    </ul>
697      <li> &lt;requires&gt; - optional feature dependency information. Is expressed       <li> &lt;requires&gt; - optional feature dependency information. Is
698   in terms of plug-in dependencies. If specified, is enforced by the installation  expressed  in terms of plug-in dependencies. If specified, is enforced by
699   and update support at the time of installation</li>  the installation   and update support at the time of installation</li>
700    
701    <ul>    <ul>
702     <li> &lt;import&gt; - dependency entry. Specification and processing is      <li> &lt;import&gt; - dependency entry. Specification and processing
703   a subset of the &lt;import&gt; specification in plugin.xml</li>  is  a subset of the &lt;import&gt; specification in plugin.xml</li>
704    
705      <ul>      <ul>
706     <li> plugin - identifier of dependent plug-in.</li>     <li> plugin - identifier of dependent plug-in.</li>
# Line 703  Line 709 
709   be specified.</li>   be specified.</li>
710      <li> version - optional plug-in/feature version specification</li>      <li> version - optional plug-in/feature version specification</li>
711          <li>patch - optional specification indicating if this feature is          <li>patch - optional specification indicating if this feature is
712  a  patch of the dependant feature. Default is "false". If patch is true,  a  patch of the dependant feature. Default is "false". If patch is true, version
713  version  must be specified. If patch is true, only feature must be specified.   must be specified. If patch is true, only feature must be specified. If
714  If patch  is true, and match is specified, it must be 'perfect'.<br>  patch  is true, and match is specified, it must be 'perfect'.<br>
715          </li>          </li>
716      <li> match - optional matching rule. Valid values and processing are      <li> match - optional matching rule. Valid values and processing are
717  as  follows:</li>  as  follows:</li>
# Line 721  Line 727 
727      <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
728   the specified version.</li>   the specified version.</li>
729      <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
730  least  at the version specified, or at a higher service level (major and  least  at the version specified, or at a higher service level (major and minor
731  minor version  levels must equal the specified version).</li>  version  levels must equal the specified version).</li>
732      <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
733  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
734  (major  version level must equal the specified version).</li>  (major  version level must equal the specified version).</li>
# Line 744  Line 750 
750  plug-in  fragment. Default is "false"</li>  plug-in  fragment. Default is "false"</li>
751      <li> os - optional operating system specification. A comma-separated      <li> os - optional operating system specification. A comma-separated
752  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>
753   . Indicates this entry should only be installed on one of the specified   . Indicates this entry should only be installed on one of the specified os
754  os  systems. If this attribute is not specified, the entry can be installed   systems. If this attribute is not specified, the entry can be installed
755  on all systems (portable implementation). This information is used as a hint   on all systems (portable implementation). This information is used as a
756   by the installation and update support (user can force installation of entry  hint  by the installation and update support (user can force installation
757   regardless of this setting).</li>  of entry  regardless of this setting).</li>
758      <li> arch - optional machine architecture specification. A comma-separated      <li> arch - optional machine architecture specification. A comma-separated
759   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
760   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
# Line 758  Line 764 
764   can force installation of feature regardless of this setting).</li>   can force installation of feature regardless of this setting).</li>
765      <li> ws - optional windowing system specification. A comma-separated      <li> ws - optional windowing system specification. A comma-separated
766  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>
767   . Indicates this entry should only be installed on one of the specified   . Indicates this entry should only be installed on one of the specified ws
768  ws  systems. If this attribute is not specified, the entry can be installed   systems. If this attribute is not specified, the entry can be installed
769  on all systems (portable implementation). This information is used as a hint   on all systems (portable implementation). This information is used as a
770   by the installation and update support (user can force installation of entry  hint  by the installation and update support (user can force installation
771   regardless of this setting).</li>  of entry  regardless of this setting).</li>
772      <li> nl - optional locale specification. A comma-separated list of locale      <li> nl - optional locale specification. A comma-separated list of locale
773   designators defined by Java. Indicates this entry should only be installed   designators defined by Java. Indicates this entry should only be installed
774   on a system running with a compatible locale (using Java locale-matching   on a system running with a compatible locale (using Java locale-matching
# Line 774  Line 780 
780  indicating  the download size in KBytes of the referenced plug-in archive.  indicating  the download size in KBytes of the referenced plug-in archive.
781  If not specified,  the download size is not known (<b>Implementation Note:</b>  If not specified,  the download size is not known (<b>Implementation Note:</b>
782  the implementation  needs to distinguish between "not known" and 0 size)</li>  the implementation  needs to distinguish between "not known" and 0 size)</li>
783      <li> install-size - optional hint supplied by the feature packager, indicating       <li> install-size - optional hint supplied by the feature packager,
784   the install size in KBytes of the referenced plug-in archive. If not specified,  indicating   the install size in KBytes of the referenced plug-in archive.
785   the install size is not known (<b>Implementation Note:</b> the implementation  If not specified,   the install size is not known (<b>Implementation Note:</b>
786   needs to distinguish between "not known" and 0 size)</li>  the implementation   needs to distinguish between "not known" and 0 size)</li>
787    
788    </ul>    </ul>
789      <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 feature</li>
# Line 786  Line 792 
792     <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>
793      <li> os - optional operating system specification. A comma-separated      <li> os - optional operating system specification. A comma-separated
794  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>
795   . Indicates this entry should only be installed on one of the specified   . Indicates this entry should only be installed on one of the specified os
796  os  systems. If this attribute is not specified, the entry can be installed   systems. If this attribute is not specified, the entry can be installed
797  on all systems (portable implementation). This information is used as a hint   on all systems (portable implementation). This information is used as a
798   by the installation and update support (user can force installation of entry  hint  by the installation and update support (user can force installation
799   regardless of this setting).</li>  of entry  regardless of this setting).</li>
800      <li> arch - optional machine architecture specification. A comma-separated      <li> arch - optional machine architecture specification. A comma-separated
801   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
802   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
# Line 800  Line 806 
806   can force installation of feature regardless of this setting).</li>   can force installation of feature regardless of this setting).</li>
807      <li> ws - optional windowing system specification. A comma-separated      <li> ws - optional windowing system specification. A comma-separated
808  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>
809   . Indicates this entry should only be installed on one of the specified   . Indicates this entry should only be installed on one of the specified ws
810  ws  systems. If this attribute is not specified, the entry can be installed   systems. If this attribute is not specified, the entry can be installed
811  on all systems (portable implementation). This information is used as a hint   on all systems (portable implementation). This information is used as a
812   by the installation and update support (user can force installation of entry  hint  by the installation and update support (user can force installation
813   regardless of this setting).</li>  of entry  regardless of this setting).</li>
814      <li> nl - optional locale specification. A comma-separated list of locale      <li> nl - optional locale specification. A comma-separated list of locale
815   designators defined by Java. Indicates this entry should only be installed   designators defined by Java. Indicates this entry should only be installed
816   on a system running with a compatible locale (using Java locale-matching   on a system running with a compatible locale (using Java locale-matching
# Line 816  Line 822 
822  indicating  the download size in KBytes of the referenced data archive. If  indicating  the download size in KBytes of the referenced data archive. If
823  not specified,  the download size is not known (<b>Implementation Note:</b>  not specified,  the download size is not known (<b>Implementation Note:</b>
824  the implementation  needs to distinguish between "not known" and 0 size)</li>  the implementation  needs to distinguish between "not known" and 0 size)</li>
825      <li> install-size - optional hint supplied by the feature packager, indicating       <li> install-size - optional hint supplied by the feature packager,
826   the install size in KBytes of the referenced data archive. If not specified,  indicating   the install size in KBytes of the referenced data archive. If
827   the install size is not known (<b>Implementation Note:</b> the implementation  not specified,   the install size is not known (<b>Implementation Note:</b>
828   needs to distinguish between "not known" and 0 size)</li>  the implementation   needs to distinguish between "not known" and 0 size)</li>
829    
830    </ul>    </ul>
831    
# Line 849  Line 855 
855   mechanism). </p>   mechanism). </p>
856    
857  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>  <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>
858     Plug-ins and plug-in fragments are individually packaged as separate Java      Plug-ins and plug-in fragments are individually packaged as separate
859   .jars. Standard Java jar facilities are used for constructing plug-in archives.  Java   .jars. Standard Java jar facilities are used for constructing plug-in
860   There is no distinction made between a plug-in archive containing a plug-in  archives.   There is no distinction made between a plug-in archive containing
861   and one containing a plug-in fragment.  a plug-in   and one containing a plug-in fragment.
862  <p>The recommended convention for naming the plug-in archives is <br>  <p>The recommended convention for naming the plug-in archives is <br>
863    <tt>&lt;id&gt;_&lt;version&gt;.jar</tt> </p>    <tt>&lt;id&gt;_&lt;version&gt;.jar</tt> </p>
864    
# Line 866  Line 872 
872    <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>    <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>
873    <tt>my_plugin.jar</tt> </p>    <tt>my_plugin.jar</tt> </p>
874    
875  <p>Internally, each plug-in archive packages all the relevant plug-in or fragment  <p>Internally, each plug-in archive packages all the relevant plug-in or
876  files relative to its plug-in or fragment directory (but not including the  fragment files relative to its plug-in or fragment directory (but not including
877  directory path element). The archive has the following structure </p>  the directory path element). The archive has the following structure </p>
878    
879  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>  <p><tt>plugin.xml *OR* fragment.xml</tt> <br>
880    <tt>other plug-in or feature files and subdirectories</tt> <br>    <tt>other plug-in or feature files and subdirectories</tt> <br>
# Line 883  Line 889 
889    
890  <p>This mechanism cannot be used for translating the actual packaging information  <p>This mechanism cannot be used for translating the actual packaging information
891   that is part of the installation xml files. Consequently the standard Java   that is part of the installation xml files. Consequently the standard Java
892   translation conventions are used for the packaging information, and all necessary    translation conventions are used for the packaging information, and all
893  translations must be available at the time the feature is packaged. </p>  necessary translations must be available at the time the feature is packaged.
894    </p>
895    
896  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>  <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>
897     <b>Note:</b> This section describes the conventions used for translating     <b>Note:</b> This section describes the conventions used for translating
898   the information contained within the feature manifest. It allows for the   the information contained within the feature manifest. It allows for the
899  update client to select the correctly localized strings from the update server.   update client to select the correctly localized strings from the update
900   This section specifically does not describe localization of individual plug-ins.  server.  This section specifically does not describe localization of individual
901    plug-ins.
902  <p>Several of the attributes within the feature manifest are strings intended  <p>Several of the attributes within the feature manifest are strings intended
903   for display through user interfaces. To facilitate translation, these attribute   for display through user interfaces. To facilitate translation, these attribute
904   values use the convention defined for translatable attributes of plugin.xml.   values use the convention defined for translatable attributes of plugin.xml.
905   Strings beginning with % up to the first space are treated as resource identifier    Strings beginning with % up to the first space are treated as resource
906   keys (without the %) and looked up in a properties file. For example </p>  identifier  keys (without the %) and looked up in a properties file. For
907    example </p>
908    
909  <p><tt>label="%cfg Tool Feature for Linux"</tt> </p>  <p><tt>label="%cfg Tool Feature for Linux"</tt> </p>
910    
911  <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".
912   If no property files are supplied, or the key is not found the default string    If no property files are supplied, or the key is not found the default
913   value (following the %key) is used. </p>  string  value (following the %key) is used. </p>
914    
915  <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
916   the Java resource bundle naming conventions. Within the feature archive .jar    the Java resource bundle naming conventions. Within the feature archive
917  they are placed in the same directory as their corresponding feature.xml file.  .jar they are placed in the same directory as their corresponding feature.xml
918   </p>  file.  </p>
919    
920  <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse  <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse
921   installation and update code should create a class loader for accessing   installation and update code should create a class loader for accessing the
922  the  translated string. This way, the standard locale lookup algorithm implemented   translated string. This way, the standard locale lookup algorithm implemented
923   by Java is automatically used. </p>   by Java is automatically used. </p>
924    
925  <p><tt>ResourceBundle b;</tt> <br>  <p><tt>ResourceBundle b;</tt> <br>
# Line 945  Line 953 
953  <p>Eclipse does not specify the format of the non-plug-in files. </p>  <p>Eclipse does not specify the format of the non-plug-in files. </p>
954    
955  <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>  <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>
956     Custom install handlers are written as a Java class and are packaged as      Custom install handlers are written as a Java class and are packaged
957  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
958  must implement the <tt>IInstallHandler</tt> interface (in most cases will  must implement the <tt>IInstallHandler</tt> interface (in most cases will
959  extend the <tt>BaseInstallHandler</tt> abstract helper class which implements  extend the <tt>BaseInstallHandler</tt> abstract helper class which implements
960  <tt>IInstallHandler</tt>). When required, the install handler is dynamically  <tt>IInstallHandler</tt>). When required, the install handler is dynamically
# Line 954  Line 962 
962  during its processing. The install handler code has visibility to classes  during its processing. The install handler code has visibility to classes
963  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.
964    
965  <p><b>Implementation Note:</b> the detailed list of visible prerequisite plug-ins  <p><b>Implementation Note:</b> the detailed list of visible prerequisite
966  is still evolving. It is expected to include <tt>org.eclipse.core.boot </tt>  plug-ins is still evolving. It is expected to include <tt>org.eclipse.core.boot
967  and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>  </tt> and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>
968    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. not "headless
969  "headless  mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>   mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>
970    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.
971   </p>   </p>
972    
# Line 969  Line 977 
977    
978  <ul>  <ul>
979     <li> install-initiated - the install handler is called after a feature     <li> install-initiated - the install handler is called after a feature
980  was selected for installation, but before any files were downloaded. It is   was selected for installation, but before any files were downloaded. It
981  intended  to implement any custom click-through or user registration dialogs.  is  intended  to implement any custom click-through or user registration
982  The base implementation of this method supplied with the abstract class <tt>BaseInstallHandler  dialogs.  The base implementation of this method supplied with the abstract
983       </tt>performs the default click-through processing using the license  class <tt>BaseInstallHandler       </tt>performs the default click-through
984   text supplied as part of the feature manifest. On return this method indicates  processing using the license  text supplied as part of the feature manifest.
985   success (installation continues) of failure (installation is aborted).</li>  On return this method indicates  success (installation continues) of failure
986    (installation is aborted).</li>
987      <li> install-downloaded - the install handler is called after all the      <li> install-downloaded - the install handler is called after all the
988  required  feature files were downloaded (feature, plugins, data) but before  required  feature files were downloaded (feature, plugins, data) but before
989  the actual  installation is performed. The install handler is expected to  the actual  installation is performed. The install handler is expected to
# Line 982  Line 991 
991  other pre-install processing.&nbsp; On return this method indicates success  other pre-install processing.&nbsp; On return this method indicates success
992  (installation continues) or failure (installation is aborted).</li>  (installation continues) or failure (installation is aborted).</li>
993      <li> install-completion - the install handler is called after the feature      <li> install-completion - the install handler is called after the feature
994   information and the plug-ins were installed. It is expected to complete   information and the plug-ins were installed. It is expected to complete the
995  the  installation of any non-plug-in data that was part of the feature. On   installation of any non-plug-in data that was part of the feature. On return
996  return  this method indicates success (returns custom install log) or failure   this method indicates success (returns custom install log) or failure (installation
997  (installation  is aborted). On failure, the install handler is expected to   is aborted). On failure, the install handler is expected to perform any
998  perform any required cleanup.</li>  required cleanup.</li>
999      <li> uninstall-initiated - the install handler is called when a feature      <li> uninstall-initiated - the install handler is called when a feature
1000   is selected for removal, but before any of the standard uninstall processing   is selected for removal, but before any of the standard uninstall processing
1001   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 1000  Line 1009 
1009  in  their own jars (even though they could be just exposed in the feature  in  their own jars (even though they could be just exposed in the feature
1010  archive  jar). The jar should be signed, and sealed.  archive  jar). The jar should be signed, and sealed.
1011  <h3> <a name="Security_Considerations"></a> Security Considerations</h3>  <h3> <a name="Security_Considerations"></a> Security Considerations</h3>
1012     The general approach is to use base Java jar signing for the feature and      The general approach is to use base Java jar signing for the feature
1013   plug-in archive .jars.  and   plug-in archive .jars.
1014  <p>Features are verified as follows: </p>  <p>Features are verified as follows: </p>
1015    
1016  <ul>  <ul>
# Line 1028  Line 1037 
1037  (originator is trusted for this installation).  (originator is trusted for this installation).
1038  <h2> <a name="Update_Server"></a> Update Server</h2>  <h2> <a name="Update_Server"></a> Update Server</h2>
1039     The default Eclipse update server is any URL-accessible server. The default     The default Eclipse update server is any URL-accessible server. The default
1040   implementation assumes a fixed-layout server. The content of the server (in    implementation assumes a fixed-layout server. The content of the server
1041  terms of available features and plug-ins) is described in a site map file,  (in terms of available features and plug-ins) is described in a site map
1042  <i>site.xml</i>. This file can be manually maintained, or can be dynamically  file, <i>site.xml</i>. This file can be manually maintained, or can be dynamically
1043   computed by the server.   computed by the server.
1044  <h3> <a name="Site_Map"></a> Site Map</h3>  <h3> <a name="Site_Map"></a> Site Map</h3>
1045     The update server URL can be specified as a full URL to the site map file,      The update server URL can be specified as a full URL to the site map
1046   or a URL of a directory path containing the site map file (similar to index.html  file,   or a URL of a directory path containing the site map file (similar
1047   processing). The site map site.xml format is defined by the following dtd:  to index.html   processing). The site map site.xml format is defined by the
1048    following dtd:
1049  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>  <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
1050    
1051  <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 1109  Line 1118 
1118   string registered via the <a href="#Framework">install framework</a>  extension   string registered via the <a href="#Framework">install framework</a>  extension
1119  point. If not specified, the type is assumed to be the default Eclipse site  point. If not specified, the type is assumed to be the default Eclipse site
1120  type (as specified in this document).</li>  type (as specified in this document).</li>
1121      <li> url - optional URL defining the update site baseline URL (used to       <li> url - optional URL defining the update site baseline URL (used
1122   determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;  to  determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;
1123   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
1124   specified, the default is the URL location of the site.xml file.</li>   specified, the default is the URL location of the site.xml file.</li>
1125    
# Line 1123  Line 1132 
1132  be  specified as absolute of relative. If relative, If relative, is relative  be  specified as absolute of relative. If relative, If relative, is relative
1133  to site.xml.</li>  to site.xml.</li>
1134      <br>      <br>
1135    Note, that for NL handling the URL value should be separated to allow alternate     Note, that for NL handling the URL value should be separated to allow
1136   URLs to be specified for each national language.  alternate  URLs to be specified for each national language.
1137    </ul>    </ul>
1138      <li> &lt;feature&gt; - identifies referenced feature archive</li>      <li> &lt;feature&gt; - identifies referenced feature archive</li>
1139    
1140    <ul>    <ul>
1141     <li> type - optional feature type specification. The value refers to a      <li> type - optional feature type specification. The value refers to
1142  type  string registered via the <a href="#Framework">install framework</a>  a  type  string registered via the <a href="#Framework">install framework</a>
1143    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
1144   feature type for the site. If the site type is the default Eclipse site   feature type for the site. If the site type is the default Eclipse site type,
1145  type,  the default feature type is the packaged feature type (as specified   the default feature type is the packaged feature type (as specified in this
1146  in this  document).</li>   document).</li>
1147      <li> id - optional feature identifier. The information is used as a performance       <li> id - optional feature identifier. The information is used as a
1148   optimization to speed up searches for features. Must match the identifier  performance   optimization to speed up searches for features. Must match
1149   specified in the feature.xml of the referenced archive (the url attribute).  the identifier   specified in the feature.xml of the referenced archive (the
1150   If specified, the version attribute must also be specified.</li>  url attribute).   If specified, the version attribute must also be specified.</li>
1151      <li> version - optional feature version. The information is used as a       <li> version - optional feature version. The information is used as
1152  performance  optimization to speed up searches for features. Must match the  a  performance  optimization to speed up searches for features. Must match
1153  version specified in the feature.xml of the referenced archive (the url attribute).  the  version specified in the feature.xml of the referenced archive (the
1154  If specified, the id attribute must also be specified.</li>  url attribute).  If specified, the id attribute must also be specified.</li>
1155      <li> url - required URL reference to the feature archive. Can be relative      <li> url - required URL reference to the feature archive. Can be relative
1156   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
1157  file.       <b>Note</b>: the default site implementation allows features  file.       <b>Note</b>: the default site implementation allows features to
1158  to be accessed without being explicitly declared using a &lt;feature&gt;  be accessed without being explicitly declared using a &lt;feature&gt; entry.
1159  entry. By default, an undeclared features reference is interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>  By default, an undeclared features reference is interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>
1160       <li>label - optional feature label. The value is used for optimization       <li>label - optional feature label. The value is used for optimization
1161  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>
1162      </li>      </li>
1163      <li> os - optional operating system specification. A comma-separated      <li> os - optional operating system specification. A comma-separated
1164  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>
1165   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
1166   os systems. If this attribute is not specified, the feature can be installed    os systems. If this attribute is "*", the feature can be installed   on
1167   on all systems (portable implementation). This information is used as a hint  all systems (portable implementation). This information is used as a hint
1168  by the installation and update support (user can force installation of feature  by the installation and update support (user can force installation of feature
1169  regardless of this setting).</li>  regardless of this setting).</li>
1170      <li> arch - optional machine architecture specification. A comma-separated      <li> arch - optional machine architecture specification. A comma-separated
1171   list of architecture designators defined by Eclipse (see Javadoc for <tt>   list of architecture designators defined by Eclipse (see Javadoc for <tt>
1172   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only   org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature should only
1173   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&nbsp;is
1174   the feature can be installed on all systems (portable implementation). This  "*",  the feature can be installed on all systems (portable implementation).
1175   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
1176   can force installation of feature regardless of this setting).</li>  (user  can force installation of feature regardless of this setting).</li>
1177      <li> ws - optional windowing system specification. A comma-separated      <li> ws - optional windowing system specification. A comma-separated
1178  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>
1179   . Indicates this feature should only be installed on one of the specified   . Indicates this feature should only be installed on one of the specified
1180   ws systems. If this attribute is not specified, the feature can be installed    ws systems. If this attribute&nbsp;is "*", the feature can be installed
1181   on all systems (portable implementation). This information is used as a hint    on all systems (portable implementation). This information is used as a
1182  by the installation and update support (user can force installation of feature  hint by the installation and update support (user can force installation
1183  regardless of this setting).</li>  of feature regardless of this setting).</li>
1184      <li> nl - optional locale specification. A comma-separated list of locale      <li> nl - optional locale specification. A comma-separated list of locale
1185   designators defined by Java. Indicates this feature should only be installed   designators defined by Java. Indicates this feature should only be installed
1186   on a system running with a compatible locale (using Java locale-matching   on a system running with a compatible locale (using Java locale-matching
1187  rules). If this attribute is not specified, the feature can be installed  rules). If this attribute&nbsp;is "*", the feature can be installed on all
1188  on all systems (language-neutral implementation). This information is used  systems (language-neutral implementation). This information is used as a
1189  as a hint by the installation and update support (user can force installation  hint by the installation and update support (user can force installation of
1190  of feature regardless of this setting).</li>  feature regardless of this setting).</li>
1191      <li>patch - optional specification indicating if this feature is a  patch.       <li>patch - optional specification indicating if this feature is a
1192  Default is "false".&nbsp;</li>  patch. Default is "false".&nbsp;</li>
1193    
1194    </ul>    </ul>
1195      <li> &lt;archive&gt; - identifies referenced "storage" archive (the actual       <li> &lt;archive&gt; - identifies referenced "storage" archive (the
1196   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>
1197    elements in the feature manifest). The site simply manages archives as    elements in the feature manifest). The site simply manages archives as a
1198  a  path-to-URL map. The default Eclipse site implementation does not require   path-to-URL map. The default Eclipse site implementation does not require
1199   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). Any
1200   archive reference not explicitly defined as part of an &lt;archive&gt; section   archive reference not explicitly defined as part of an &lt;archive&gt; section
1201   is assumed to be mapped to a url in the form "&lt;archivePath&gt;" relative   is assumed to be mapped to a url in the form "&lt;archivePath&gt;" relative
# Line 1202  Line 1211 
1211    
1212    </ul>    </ul>
1213      <li> &lt;category-def&gt; - an optional definition of a category that      <li> &lt;category-def&gt; - an optional definition of a category that
1214  can be used by installation and update support to hierarchicaly organize features</li>   can be used by installation and update support to hierarchicaly organize
1215    features</li>
1216    
1217    <ul>    <ul>
1218     <li> name - category name. Is specified as a path of name tokens separated     <li> name - category name. Is specified as a path of name tokens separated
# Line 1210  Line 1220 
1220      <li> label - displayable label. Intended to be translated.</li>      <li> label - displayable label. Intended to be translated.</li>
1221    
1222    </ul>    </ul>
1223      <li> &lt;category&gt; - actual category specification for a feature entry</li>       <li> &lt;category&gt; - actual category specification for a feature
1224    entry</li>
1225    
1226    <ul>    <ul>
1227    name - category name    name - category name
# Line 1222  Line 1233 
1233  <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>
1234    
1235  <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
1236   files using Java property bundle conventions. Note that the translated strings    files using Java property bundle conventions. Note that the translated
1237   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
1238   mechanism). The property bundles are located relative to the site.xml location.  runtime  mechanism). The property bundles are located relative to the site.xml
1239   </p>  location.   </p>
1240    
1241  <h3> <a name="Default_Site_Layout"></a> Default Site Layout</h3>  <h3> <a name="Default_Site_Layout"></a> Default Site Layout</h3>
1242     <tt>&lt;site root&gt;/</tt> <br>     <tt>&lt;site root&gt;/</tt> <br>
# Line 1251  Line 1262 
1262   servlets that compute the site.xml map, and control access to individual   servlets that compute the site.xml map, and control access to individual
1263  archives based on some user criteria)</li>  archives based on some user criteria)</li>
1264      <li> by supplying a custom concrete implementation of the site object      <li> by supplying a custom concrete implementation of the site object
1265  (installed  on the client machine, update server specified <tt>&lt;site type=""&gt;</tt>   (installed  on the client machine, update server specified <tt>&lt;site
1266   ). The custom concrete site implementation, together with any server-side  type=""&gt;</tt>  ). The custom concrete site implementation, together with
1267   logic support the required control mechanisms.</li>  any server-side   logic support the required control mechanisms.</li>
1268    
1269  </ul>  </ul>
1270     Eclipse provides an example demonstrating an implementation of an access     Eclipse provides an example demonstrating an implementation of an access
# Line 1284  Line 1295 
1295    <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1296  META_INF/</tt>   </p>  META_INF/</tt>   </p>
1297    
1298  <p><b>Implementation Note:</b> we will go back to the original design of not  <p><b>Implementation Note:</b> we will go back to the original design of
1299  splitting out fragments (ie. plugin and fragments go into the same install  not splitting out fragments (ie. plugin and fragments go into the same install
1300   location) </p>   location) </p>
1301    
1302  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>  <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>
1303     Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins     Eclipse supports a concept of "unmanaged" plug-ins. These are plug-ins
1304  that were directly installed into the Eclipse file tree without being part  that were directly installed into the Eclipse file tree without being part
1305  of a feature (eg. developer unzipping plug-in archive directly into the Eclipse   of a feature (eg. developer unzipping plug-in archive directly into the
1306   file tree).  Eclipse  file tree).
1307  <p>Eclipse runtime recognizes these plugins during startup and loads the plug-in  <p>Eclipse runtime recognizes these plugins during startup and loads the
1308  information into the runtime registry following the standard plug-in binding  plug-in information into the runtime registry following the standard plug-in
1309  rules. The update support also recognizes the presence of this new plug-in,  binding rules. The update support also recognizes the presence of this new
1310  but since this plug-in is not part of any feature it cannot be updated using  plug-in, but since this plug-in is not part of any feature it cannot be updated
1311  the update support (hence "unmanaged"). Unmanaged plug-in that become referenced  using the update support (hence "unmanaged"). Unmanaged plug-in that become
1312  by a feature as a result of some future installation or update action become  referenced by a feature as a result of some future installation or update
1313  "managed" (can be updated as part of the feature). </p>  action become "managed" (can be updated as part of the feature). </p>
1314    
1315  <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
1316   UI. </p>   UI. </p>
# Line 1315  Line 1326 
1326  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
1327  to be installed using native installers into the shared installation tree.  to be installed using native installers into the shared installation tree.
1328  Instead, native installers must establish their own installation root directory.  Instead, native installers must establish their own installation root directory.
1329  The subdirectory structure is the same as defined for base Eclipse. The private   The subdirectory structure is the same as defined for base Eclipse. The
1330   root directory is logically linked into the shared Eclipse installation  private  root directory is logically linked into the shared Eclipse installation
1331  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
1332  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;
1333  </tt>  location is computed by Eclipse relative to the launch <a  </tt>  location is computed by Eclipse relative to the launch <a
# Line 1326  Line 1337 
1337    
1338  <p>The name of the link file is not specified by Eclipse. The name is determined  <p>The name of the link file is not specified by Eclipse. The name is determined
1339   by the native installer. To minimize the potential for naming collisions,   by the native installer. To minimize the potential for naming collisions,
1340   it is recommended that the file name contain the identifier and version of    it is recommended that the file name contain the identifier and version
1341  the feature being installed by the native installer. For example, <tt>&lt;featureId&gt;_&lt;featureVersion&gt;.properties</tt>  of the feature being installed by the native installer. For example, <tt>&lt;featureId&gt;_&lt;featureVersion&gt;.properties</tt>
1342   . The file content is in the form of a Java properties file, with the following   . The file content is in the form of a Java properties file, with the following
1343   properties defined: </p>   properties defined: </p>
1344    
1345  <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>
1346    
1347  <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
1348   install paths. The property value <tt>install-path</tt> is a full file path    install paths. The property value <tt>install-path</tt> is a full file
1349   to the installation directory root, specified in local OS format. The optional  path  to the installation directory root, specified in local OS format. The
1350   annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse update support  optional  annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse
1351   should allow the specified location to be used for updates. Default is to  update support  should allow the specified location to be used for updates.
1352   allow updates&nbsp; (w). </p>  Default is to  allow updates&nbsp; (w). </p>
1353    
1354  <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
1355   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
# Line 1348  Line 1359 
1359    &nbsp; </p>    &nbsp; </p>
1360    <br>    <br>
1361   <br>   <br>
1362     <br>
1363  </body>  </body>
1364  </html>  </html>

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