platform-update-home/doc/eclipse_update_packaging.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (view) (download) (as text)

1 : droberts 1.6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 : vlad 1.1 <html>
3 :     <head>
4 : celek 1.15
5 : celek 1.9 <meta http-equiv="Content-Type"
6 :     content="text/html; charset=iso-8859-1">
7 : celek 1.15
8 : celek 1.7 <meta name="Author" content="Lab User">
9 : celek 1.15
10 : celek 1.7 <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
11 :     <title>Eclipse Platform: Installation and Update</title>
12 : vlad 1.1 </head>
13 : celek 1.7 <body>
14 : celek 1.15
15 : celek 1.7 <h1> Eclipse Platform<br>
16 : celek 1.15 Update Packaging Conventions</h1>
17 :     <font size="-1">Revision Date: 01/22/2003 9:56AM - Version: 2.0.18</font><br>
18 :     <a href="../../../../../hglegal.htm"><img src="ngibmcpy.gif"
19 : celek 1.10 border="0" height="12" width="195">
20 : celek 1.15 </a>
21 : celek 1.9 <p><b>Change History:</b> </p>
22 : celek 1.15
23 : celek 1.7 <ul>
24 : celek 1.15 <li><small>2.0.18</small></li>
25 : celek 1.14 <ul>
26 : celek 1.15 <li><small>added &lt;feature plugin=""&gt;</small></li>
27 :     </ul>
28 :     <li><small>2.0.17</small></li>
29 :    
30 :     <ul>
31 :     <li><small>added $os$,$ws$,$arch$ and $nl$ for copyright, description
32 : celek 1.14 and license URL tag in feature.<br>
33 : celek 1.15 </small></li>
34 :    
35 : celek 1.14 </ul>
36 : celek 1.15 <li><small>2.0.16</small> <small><br>
37 :     </small>
38 : celek 1.11 <ul>
39 : celek 1.15 <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws support
40 : celek 1.14 "*"</small></li>
41 : celek 1.15
42 : celek 1.11 </ul>
43 : celek 1.15 </li>
44 :     <li><small>2.0.15</small>
45 : celek 1.12 <ul>
46 : celek 1.15 <li><small>added &lt;site&gt;&lt;feature&gt; os,arch,nl,ws,patch
47 : celek 1.14 tag</small></li>
48 : celek 1.15
49 : celek 1.12 </ul>
50 : celek 1.15 </li>
51 :     <li><small>2.0.14<br>
52 :     </small>
53 : celek 1.10 <ul>
54 : celek 1.15 <li><small>added &lt;site&gt;&lt;feature&gt; label tag</small><br>
55 :     </li>
56 :    
57 : celek 1.14 </ul>
58 : celek 1.15 </li>
59 :     <li><small>2.0.13<br>
60 :     </small> </li>
61 :    
62 :     <ul>
63 :     <li><small>added &lt;includes name,optional,match,search_location</small>
64 :     &gt;</li>
65 :     <li><small>added &lt;import feature,patch&gt;</small></li>
66 :    
67 :     </ul>
68 :     <li><small>2.0.12<br>
69 :     </small></li>
70 :    
71 : celek 1.11 <ul>
72 : celek 1.15 <li> <font size="-1">added reference to the <a
73 :     href="http://www.eclipse.org/legal/updatemanager.html"> Eclipse.org Update
74 : celek 1.14 Manager Agreement</a> </font></li>
75 : celek 1.15
76 : celek 1.7 </ul>
77 : celek 1.15 <li> <font size="-1">2.0.11</font></li>
78 :    
79 : celek 1.7 <ul>
80 : celek 1.15 <li> <font size="-1">&lt;feature&gt; &lt;license&gt; is required</font></li>
81 :    
82 : celek 1.7 </ul>
83 : celek 1.15 <li> <font size="-1">2.0.10</font></li>
84 :    
85 : celek 1.14 <ul>
86 : celek 1.15 <li> <font size="-1">&lt;feature colocation-affinity=""&gt;</font></li>
87 :    
88 : celek 1.14 </ul>
89 : celek 1.15 <li> <font size="-1">2.0.9</font></li>
90 :    
91 : celek 1.14 <ul>
92 : celek 1.15 <li> <font size="-1">&lt;site&gt; &lt;feature&gt; changes - additional
93 :     markup to optionally expose feature identification information to speed
94 : celek 1.14 up searches</font></li>
95 : celek 1.15 <li> <font size="-1">removed obsolete text</font></li>
96 :     <li> <font size="-1">web-triggered update not in 2.0</font></li>
97 :     <li> <font size="-1">no assist in 2.0 for license/ "key file"
98 : celek 1.14 handling (individual application/ plugin responsibility)</font></li>
99 : celek 1.15
100 : celek 1.14 </ul>
101 : celek 1.15 <li> <font size="-1">2.0.8</font></li>
102 :    
103 : celek 1.14 <ul>
104 : celek 1.15 <li> <font size="-1">&lt;feature&gt; &lt;includes&gt;</font></li>
105 :    
106 : celek 1.14 </ul>
107 : celek 1.15 <li> <font size="-1">2.0.7</font></li>
108 :    
109 : celek 1.14 <ul>
110 : celek 1.15 <li> <font size="-1">support explicit xml markup for primary features</font></li>
111 :    
112 : celek 1.14 </ul>
113 : celek 1.15 <li> <font size="-1">2.0.6</font></li>
114 :    
115 : celek 1.14 <ul>
116 : celek 1.15 <li> <font size="-1">install handler markup changes</font></li>
117 :    
118 : celek 1.14 </ul>
119 : celek 1.15 <li> <font size="-1">2.0.5</font></li>
120 :    
121 : celek 1.14 <ul>
122 : celek 1.15 <li> <font size="-1">updates to security section</font></li>
123 :    
124 : celek 1.14 </ul>
125 : celek 1.15 <li> <font size="-1">2.0.4</font></li>
126 :    
127 : celek 1.14 <ul>
128 : celek 1.15 <li> <font size="-1">general text cleanup</font></li>
129 :     <li> <font size="-1">&lt;feature&gt;&lt;group&gt; support removed
130 : celek 1.14 (will not be in Eclipse 2.0)</font></li>
131 : celek 1.15 <li> <font size="-1">arch= support added to &lt;feature&gt; and
132 : celek 1.14 &lt;feature&gt;&lt;plugin&gt;</font></li>
133 : celek 1.15 <li> <font size="-1">os=/ arch=/ ws=/ nl= added to &lt;fetaure&gt;&lt;data&gt;</font></li>
134 :     <li> <font size="-1">&lt;site url=""&gt; new semantics</font></li>
135 :     <li> <font size="-1">corrected errors in native installer link
136 :     support</font></li>
137 :     <li> <font size="-1">defined callback query strings for browser-triggered
138 :     processing</font></li>
139 :    
140 : celek 1.10 </ul>
141 : celek 1.15
142 : celek 1.7 </ul>
143 : celek 1.15
144 : celek 1.7 <h3> <font size="+2">Table of Contents</font></h3>
145 : celek 1.15 <a href="#Introduction">Introduction</a> <br>
146 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
147 : celek 1.14 href="#Changes_from_R1.0">Changes from 1.0</a> <br>
148 : celek 1.15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Concepts">Concepts</a>
149 : celek 1.14 <br>
150 : celek 1.15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Framework">Framework</a>
151 : celek 1.14 <br>
152 : celek 1.15 <a href="#Packaging_Conventions">Packaging Conventions</a> <br>
153 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
154 :     href="#Feature_Archive">Feature Archive</a> <br>
155 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
156 :     href="#Plug-In_Archive">Plug-In Archive</a> <br>
157 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Packaging_NL">Packaging
158 :     NL</a> <br>
159 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
160 :     href="#Translated_Feature_Information"> Translated Feature Information</a>
161 :     <br>
162 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
163 :     href="#Translated_Plug-In_Information"> Translated Plug-In Information</a>
164 :     <br>
165 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
166 :     href="#Packaging_Target-Specific_Support"> Packaging Target-Specific Support</a>
167 :     <br>
168 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
169 :     href="#Packaging_Attribution_Information"> Packaging Attribution Information</a>
170 :     <br>
171 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
172 :     href="#Packaging_Attribution_Information"> Packaging Non-Plug-In Files</a>
173 :     <br>
174 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
175 :     href="#Packaging_Attribution_Information"> Custom Install Handling</a>
176 :     <br>
177 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
178 : celek 1.11 href="#Security_Considerations">Security Considerations</a> <br>
179 : celek 1.15 <a href="#Update_Server">Update Server</a> <br>
180 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#Site_Map">Site Map</a>
181 : celek 1.14 <br>
182 : celek 1.15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
183 : celek 1.14 href="#Default_Site_Layout">Default Site Layout</a> <br>
184 : celek 1.15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
185 : celek 1.14 href="#Controlling_Access">Controlling Access</a> <br>
186 : celek 1.15 <a href="#Eclipse_Install">Eclipse Install</a> <br>
187 :     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
188 : celek 1.11 href="#Default_Install_Layout">Default Install Layout</a> <br>
189 : celek 1.15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
190 : celek 1.14 href="#Unmanaged_Plugins">"Unmanaged" Plug-Ins</a> <br>
191 : celek 1.15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
192 :     href="#Using_Native_Platform_Installers"> Using Native Platform Installers</a>
193 :    
194 : celek 1.9 <h2> <a name="Introduction"></a> Introduction</h2>
195 : celek 1.15 This document outlines the support for managing the delivery of
196 :     function within the Eclipse platform. Also refer to the "<a
197 :     href="http://www.eclipse.org/legal/updatemanager.html"> Eclipse.org Update
198 :     Manager Agreement</a> " for additional legal information governing the
199 :     use of the Eclipse update manager function.
200 : celek 1.9 <h3> <a name="Changes_from_R1.0"></a> Changes from R1.0</h3>
201 : celek 1.15 This section describes the major design changes from the R1.0
202 :     Installation and Update support and supplies rationale for each design
203 :     change.
204 : celek 1.7 <ul>
205 : celek 1.15 <li> <b>extendable framework</b></li>
206 :     <br>
207 :     In R2.0 Eclipse defines an extendable framework for installation
208 :     and update, allowing the support for alternate packaging and site management
209 :     schemes. R2.0 supplies a default concrete implementation of this framework.
210 :     <li> <b> feature support</b></li>
211 :     <br>
212 :     In R2.0 the concept of a <i>component</i> and <i>configuration</i>
213 :     is merged into <i>feature</i>. Features define the packaging structure
214 :     for a group of related plug-ins, plug-in fragments, and optionally non-plug-in
215 :     files. Features are treated purely as an installation and packaging construct.
216 :     They do not play a role during Eclipse plug-in execution. Features do not
217 :     nest. They are simply an inclusive "manifest" of the plug-ins, fragments
218 :     and other files that make up that feature. If features are logically made
219 :     up of plug-ins from "sub-features", the top-level feature "manifest" must
220 : celek 1.14 be fully resolved at packaging time. <li> <b>default feature archive format</b></li>
221 : celek 1.15 <br>
222 :     R1.0 components were packaged as a single Java .jar containing
223 :     the component manifest as well as the actual plug-in files. The problem
224 :     with this approach is lack of granularity at download time. In R2.0,
225 :     the feature archive consists of multiple separate .jars - one .jar per
226 :     plug-in and fragment, plus one .jar for the actual feature information.
227 :     The Installation and Update support selectively downloads only those
228 :     jars required for the installation. <li> <b>site map</b></li>
229 :     <br>
230 :     Default Eclipse update server must contain a <i>site map</i> file
231 :     (site.xml). This is an evolution of the R1.0 install.index support. The
232 :     rationale for using a structured site defined by the map rather than a
233 :     "free form" web site, is the ability to present a consistent installation
234 :     experience for the user. Also, this provides the necessary structure for
235 :     discovery of available updates. Additional support for "free form" browsing
236 : celek 1.14 may be considered in future work. <li> <b>using native install/ uninstall</b></li>
237 : celek 1.15 <br>
238 :     The primary mechanism for installing and updating Eclipse features
239 :     is the built-in installation and update support. Some products may instead
240 :     choose to use native installer technology (eg. MSI, RPM, etc) to deliver
241 :     Eclipse features. However, native installers do not implement the required
242 :     support for understanding the Eclipse installation structure. In particular,
243 :     the native uninstallers will, by default, remove plug-in files that were
244 :     installed using the native installer without regard to these plug-ins being
245 :     needed by other features. As a result, features installed using native installers
246 :     must be written into private product-specific installation location and
247 :     not the shared Eclipse installation location. The shared Eclipse is made
248 :     aware of the produce-specific location via an installed "link file". <li>
249 :     <b>custom install handling</b></li>
250 :     <br>
251 :     In many cases the standard installation handling supplied by Eclipse
252 :     is not be sufficient to handle various custom requirements. To accommodate
253 :     this, R2.0 Eclipse supports custom install handlers packaged as part of
254 :     the feature and executed during the feature installation. <li> <b>path
255 : celek 1.14 naming conventions</b></li>
256 : celek 1.15 <br>
257 :     R1.0 mandated the use of the various identifiers and versions inside
258 :     the packaged archives (eg. directory path names for plug-ins). This
259 :     approach has proven to be ackward and error prone. In 2.0, the packaging
260 :     requirements no longer mandate that path names of packaged files precisely
261 :     reflect the contained identifiers and versions. The properly identified
262 :     install subdirectories are created by the Eclipse support during the installation
263 :     and update process based on the archive content (rather than explicit
264 :     jar path structure set up at packaging time)
265 : celek 1.7 </ul>
266 : celek 1.15
267 : celek 1.9 <h3> <a name="Concepts"></a> Concepts</h3>
268 : celek 1.15 <b>Plug-in</b> <br>
269 :     Eclipse developers build plug-ins. Plug-ins are the base units
270 :     of execution recognized by the Eclipse runtime environment. In general,
271 :     plug-ins are not exposed to users that select function during installation
272 :     or update. The reason is that plug-in boundaries are established by developers
273 :     for development reasons (like function reuse) and present the wrong level
274 :     of granularity in terms of what the user sees as the unit of function.
275 : celek 1.14
276 : celek 1.15 <p>While plug-ins are being developed (ie. are frequently being changed),
277 :     their internal file structure will reflect what is convenient to the
278 :     developer. This will generally depend on the particular development tool
279 :     being used. Typically, however, the developer will likely setup the plug-in
280 :     to execute from a directory tree containing exposed .class files, rather
281 :     than executing from a .jar (requires an extra step to create the .jar
282 :     and we all know developers hate extra steps). Also, at this stage the developer
283 :     does not pay particular attention to plug-in versioning information, because
284 : celek 1.14 the plug-in is continually changing. </p>
285 : celek 1.15
286 :     <p>However, when the plug-in is ready to be packaged, it needs to be converted
287 :     to a form suitable for packaging and installation. Typically it means
288 :     creation of the runtime .jar(s) and removing any development-time files
289 :     (source, exposed .class files, etc). It also means updating the plugin.xml
290 :     manifest with the formal plug-in version and reflecting the version in the
291 :     plug-in directory name (see "Concurrent Plug-In Version Support" for details).
292 :     </p>
293 :    
294 : celek 1.7 <p><b>Plug-in Fragment</b> <br>
295 : celek 1.15 Plug-in Fragments (or simply Fragments) allow independent packaging
296 :     of certain aspects of the base plug-in. This includes (but may not be
297 :     limited to) translated resources for the plug-in, OS-specific or windowing-system-specific
298 :     code. At runtime, fragments are logically merged into the base plug-in.
299 :     From a packaging point of view, the install and update support does not
300 :     really differentiate between plug-ins and their related fragments. </p>
301 :    
302 : celek 1.7 <p><b>Feature</b> <br>
303 : celek 1.15 A feature is an installation packaging mechanism used to define
304 :     a group of versioned plug-ins and/or plug-in fragments plus non-plug-in
305 :     files that is used to deliver some user function. A feature can also include
306 :     other features. Features are exposed to users as part of the packaging
307 :     and installation process, because they represent a unit of function selection.
308 :     Features also represent a unit of installation. Features carry a version
309 : celek 1.14 identifier.</p>
310 : celek 1.15
311 :     <p>Features are packaged as a feature archive, referencing the required plug-ins,
312 :     plug-in fragments and optional non-plug-in files. The feature archives
313 :     are placed on an update server for download and installation by the Eclipse
314 :     update manager, or they can be used as the input into a formal packaging
315 :     process using one of the "traditional" installer technologies. The format
316 :     of the feature archive is described later. </p>
317 :    
318 : celek 1.9 <h3> <a name="Framework"></a> Framework</h3>
319 : celek 1.15 The 2.0 installation and update support is provided as a framework
320 :     that allows custom implementations to be supplied for its key elements.
321 :     In particular, the following can be supplied:
322 : vlad 1.1 <ul>
323 : celek 1.15 <li> concrete implementations of feature (IFeature interface)
324 :     that can be used to support alternate packaging schemes. New concrete
325 :     feature types are registere via the "org.eclipse.update.featureTypes"
326 :     extension point.</li>
327 :     <li> concrete implementations of site (ISite interface) that
328 :     can be used to support alternate site layout, or site behavior. New concrete
329 :     site types are registered via the "org.eclipse.update.siteTypes" extension
330 : celek 1.14 point.</li>
331 : celek 1.15 <li> each feature can specify a custom install handler as part
332 :     of its feature manifest. Install handlers (IInstallHandler interface)
333 :     are dynamically invoked as part of the installation process to handle
334 :     non-plugin data, plus perform other custom processing allowed by the framework.</li>
335 :    
336 : celek 1.7 </ul>
337 : celek 1.15 Eclipse provides default implementations of feature and site.
338 :     These are described in the rest of this document. <br>
339 :     &nbsp;
340 : celek 1.7 <table border="1" cols="1" width="100%">
341 : celek 1.15 <tbody>
342 :     <tr>
343 :     <td><b>Note: <i>The reminder of this document describes the default
344 :     concrete implementation of the framework delivered with Eclipse. It
345 :     specifies the structure of the default feature implementation, as well
346 :     as the default site implementation, plus the corresponding xml files
347 :     (feature.xml and site.xml). Providers of alternate concrete implementations
348 :     can extend&nbsp; parts or all of the default Eclipse implementation. This
349 :     includes providing a mechanism for dynamic computation of the site map
350 :     (site.xml)</i></b></td>
351 :     </tr>
352 :    
353 :     </tbody>
354 : vlad 1.1 </table>
355 : celek 1.15
356 : celek 1.9 <h2> <a name="Packaging_Conventions"></a> Packaging Conventions</h2>
357 : celek 1.15 Default feature packages consist of several related files:
358 :    
359 : celek 1.7 <ul>
360 : celek 1.15 <li> exactly one jar containing the feature manifest and related
361 : celek 1.14 files. This one is refered to as the "<b>feature archive</b>"</li>
362 : celek 1.15 <li> zero or more jars containing the feature plug-ins. These
363 : celek 1.14 are refered to as the "<b>plug-in archives</b>"</li>
364 : celek 1.15 <li> zero or more non-plug-in files associated with the feature.
365 :     They are used by feature custom install handlers and contain data not
366 :     interpreted by Eclipse</li>
367 :    
368 : celek 1.9 </ul>
369 : celek 1.15
370 : celek 1.9 <h3> <a name="Feature_Archive"></a> Feature Archive</h3>
371 : celek 1.15 The feature packaging information is placed into a separate Java
372 :     .jar. Standard Java jar facilities are used for constructing feature archives.
373 :     Feature archives reference separately packaged plug-in archives (see next
374 :     section) and non-plug-in files.
375 :     <p>Features are identified using a structured identifier based on the provider
376 :     internet domain name. For example, organization eclipse.org may produce
377 :     feature org.eclipse.javatooling. The character set used for feature identifiers
378 :     is as specified for plug-in identifiers (see reference information describing
379 : celek 1.14 the plug-in manifest). </p>
380 : celek 1.15
381 : celek 1.7 <p>The recommended convention for naming the feature archives is <br>
382 : celek 1.15 <tt>&lt;id&gt;_&lt;version&gt;.jar</tt> </p>
383 :    
384 :     <p>Where <tt>&lt;id&gt;</tt> is the feature identifier and <tt>&lt;version&gt;</tt>
385 :     is the full version identifier contained in the respective feature.xml.
386 :     Note that this is a recommended convention that minimizes chance of collisions,
387 :     but is not required by the Eclipse architecture. For example, the following
388 : celek 1.14 are valid feature archive names </p>
389 : celek 1.15
390 : celek 1.7 <p><tt>org.eclipse.javatooling_1.0.3.jar</tt> <br>
391 : celek 1.15 <tt>org.eclipse.pde_2.0.jar</tt> <br>
392 :     <tt>my_feature.jar</tt> </p>
393 :    
394 :     <p>Internally, each feature archive is packaged relative to its feature directory
395 :     (but not including the directory path element). The archive has the
396 :     following structure </p>
397 :    
398 : celek 1.7 <p><tt>feature.xml</tt> <br>
399 : celek 1.15 <tt>feature&lt;_locale&gt;.properties (see "Translated Feature
400 :     Information")</tt> <br>
401 :     <tt>other feature files and subdirectories (TBD)</tt> <br>
402 :     <tt>META-INF/</tt> <br>
403 :     <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt>
404 :     </p>
405 :    
406 : celek 1.7 <p>The feature install.xml format is defined by the following dtd: </p>
407 : celek 1.15
408 : celek 1.7 <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
409 : celek 1.15
410 :     <p><tt>&lt;!ELEMENT feature (install-handler?, description?, copyright?, license?,
411 :     url?, includes*, requires?, plugin*, data*)&gt;</tt> <br>
412 :     <tt>&lt;!ATTLIST feature</tt> <br>
413 :     <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
414 : celek 1.14 CDATA #REQUIRED</tt> <br>
415 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
416 :     CDATA #REQUIRED</tt> <br>
417 :     <tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
418 : celek 1.14 CDATA #IMPLIED</tt> <br>
419 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; provider-name CDATA #IMPLIED</tt> <br>
420 :     <tt>&nbsp;&nbsp;&nbsp; image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
421 : celek 1.14 CDATA #IMPLIED</tt> <br>
422 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
423 : celek 1.14 CDATA #IMPLIED</tt> <br>
424 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
425 : celek 1.14 CDATA #IMPLIED</tt> <br>
426 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
427 : celek 1.14 CDATA #IMPLIED</tt> <br>
428 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
429 : celek 1.14 CDATA #IMPLIED</tt> <br>
430 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; colocation-affinity</tt> <br>
431 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
432 : celek 1.14 CDATA #IMPLIED</tt> <br>
433 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
434 :     (true | false) "false"</tt> <br>
435 :     <tt>&nbsp;&nbsp;&nbsp; application&nbsp;&nbsp; CDATA #IMPLIED<br>
436 :     </tt> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <tt>plugin&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
437 :     &nbsp;CDATA #IMPLIED</tt><br>
438 :     <tt>&gt;</tt> </p>
439 :    
440 : celek 1.7 <p><tt>&lt;!ELEMENT install-handler EMPTY&gt;</tt> <br>
441 : celek 1.15 <tt>&lt;!ATTLIST install-handler</tt> <br>
442 :     <tt>&nbsp;&nbsp;&nbsp; library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
443 :     CDATA #IMPLIED</tt> <br>
444 :     <tt>&nbsp;&nbsp;&nbsp; handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
445 :     CDATA #IMPLIED</tt> <br>
446 :     <tt>&gt;</tt> </p>
447 :    
448 : celek 1.7 <p><tt>&lt;!ELEMENT description (#PCDATA)&gt;</tt> <br>
449 : celek 1.15 <tt>&lt;!ATTLIST description</tt> <br>
450 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
451 : celek 1.14 CDATA #IMPLIED</tt> <br>
452 : celek 1.15 <tt>&gt;</tt> </p>
453 :    
454 : celek 1.7 <p><tt>&lt;!ELEMENT copyright (#PCDATA)&gt;</tt> <br>
455 : celek 1.15 <tt>&lt;!ATTLIST copyright</tt> <br>
456 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
457 : celek 1.14 CDATA #IMPLIED</tt> <br>
458 : celek 1.15 <tt>&gt;</tt> </p>
459 :    
460 : celek 1.7 <p><tt>&lt;!ELEMENT license (#PCDATA)&gt;</tt> <br>
461 : celek 1.15 <tt>&lt;!ATTLIST license</tt> <br>
462 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
463 : celek 1.14 CDATA #IMPLIED</tt> <br>
464 : celek 1.15 <tt>&gt;</tt> </p>
465 :    
466 : celek 1.7 <p><tt>&lt;!ELEMENT url (update?, discovery*)&gt;</tt> </p>
467 : celek 1.15
468 : celek 1.7 <p><tt>&lt;!ELEMENT update EMPTY&gt;</tt> <br>
469 : celek 1.15 <tt>&lt;!ATTLIST update</tt> <br>
470 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
471 : celek 1.14 CDATA #REQUIRED</tt> <br>
472 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
473 : celek 1.14 CDATA #IMPLIED</tt> <br>
474 : celek 1.15 <tt>&gt;</tt> </p>
475 :    
476 : celek 1.7 <p><tt>&lt;!ELEMENT discovery EMPTY&gt;</tt> <br>
477 : celek 1.15 <tt>&lt;!ATTLIST discovery</tt> <br>
478 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
479 : celek 1.14 CDATA #REQUIRED</tt> <br>
480 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
481 : celek 1.14 CDATA #IMPLIED</tt> <br>
482 : celek 1.15 <tt>&gt;</tt> </p>
483 :    
484 : celek 1.7 <p><tt>&lt;!ELEMENT includes EMPTY&gt;</tt> <br>
485 : celek 1.15 <tt>&lt;!ATTLIST includes</tt> <br>
486 :     <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
487 : celek 1.14 &nbsp;&nbsp;&nbsp; CDATA #REQUIRED</tt> <br>
488 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
489 :     &nbsp;&nbsp;&nbsp; CDATA #REQUIRED</tt>&nbsp;<br>
490 :     <tt>&nbsp;&nbsp;&nbsp; name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
491 : celek 1.14 &nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt> <br>
492 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; optional &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;&nbsp;
493 :     (true | false) "false"</tt><tt>&nbsp;<br>
494 :     </tt><tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
495 :     &nbsp;&nbsp;&nbsp; (perfect | equivalent | compatible | greaterOrEqual)
496 : celek 1.14 "compatible"</tt><tt> &nbsp; &nbsp;&nbsp;&nbsp; </tt><br>
497 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; search_location&nbsp;&nbsp; </tt><tt>(</tt><font
498 : celek 1.9 color="#000000"><tt> root | self | both) "root"</tt></font><br>
499 : celek 1.15 <tt>&gt;</tt> </p>
500 :    
501 : celek 1.7 <p><tt>&lt;!ELEMENT requires (import+)&gt;</tt> </p>
502 : celek 1.15
503 : celek 1.7 <p><tt>&lt;!ELEMENT import EMPTY&gt;</tt> <br>
504 : celek 1.15 <tt>&lt;!ATTLIST import</tt> <br>
505 :     <tt>&nbsp;&nbsp;&nbsp; plugin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
506 : celek 1.14 CDATA #IMPLIED</tt><br>
507 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; feature &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA
508 : celek 1.14 #IMPLIED</tt><br>
509 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
510 :     CDATA #IMPLIED</tt> <br>
511 :     <tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
512 :     &nbsp;(perfect | equivalent | compatible | greaterOrEqual) "compatible"</tt>&nbsp;<br>
513 :     <tt>&nbsp;&nbsp;&nbsp; patch &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;
514 :     (true | false) "false"</tt><tt>&nbsp;</tt><tt><br>
515 :     &gt;</tt><br>
516 :     </p>
517 :    
518 : celek 1.7 <p><tt>&lt;!ELEMENT plugin EMPTY&gt;</tt> <br>
519 : celek 1.15 <tt>&lt;!ATTLIST plugin</tt> <br>
520 :     <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
521 : celek 1.14 CDATA #REQUIRED</tt> <br>
522 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
523 :     CDATA #REQUIRED</tt> <br>
524 :     <tt>&nbsp;&nbsp;&nbsp; fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true
525 : celek 1.14 | false) "false"</tt> <br>
526 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
527 : celek 1.14 CDATA #IMPLIED</tt> <br>
528 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
529 : celek 1.14 CDATA #IMPLIED</tt> <br>
530 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
531 : celek 1.14 CDATA #IMPLIED</tt> <br>
532 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
533 : celek 1.14 CDATA #IMPLIED</tt> <br>
534 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; download-size CDATA #IMPLIED</tt> <br>
535 :     <tt>&nbsp;&nbsp;&nbsp; install-size&nbsp; CDATA #IMPLIED</tt> <br>
536 :     <tt>&gt;</tt> </p>
537 :    
538 : celek 1.7 <p><tt>&lt;!ELEMENT data EMPTY&gt;</tt> <br>
539 : celek 1.15 <tt>&lt;!ATTLIST data</tt> <br>
540 :     <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
541 : celek 1.14 CDATA #REQUIRED</tt> <br>
542 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
543 : celek 1.14 CDATA #IMPLIED</tt> <br>
544 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
545 : celek 1.14 CDATA #IMPLIED</tt> <br>
546 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
547 : celek 1.14 CDATA #IMPLIED</tt> <br>
548 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
549 : celek 1.14 CDATA #IMPLIED</tt> <br>
550 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; download-size CDATA #IMPLIED</tt> <br>
551 :     <tt>&nbsp;&nbsp;&nbsp; install-size&nbsp; CDATA #IMPLIED</tt> <br>
552 :     <tt>&gt;</tt> </p>
553 :    
554 : celek 1.7 <p>The element and attribute definitions are as follows: </p>
555 : celek 1.15
556 : celek 1.7 <ul>
557 : celek 1.15 <li> &lt;feature&gt; - defines the feature</li>
558 :    
559 : celek 1.7 <ul>
560 : celek 1.15 <li> id - required feature identifier (eg. com.xyz.myfeature)</li>
561 :     <li> version - required component version (eg. 1.0.3)</li>
562 :     <li> label - optional displayable label (name). Intended to be
563 :     translated.</li>
564 :     <li> provider-name - optional display label identifying the organization
565 :     providing this component. Intended to be translated.</li>
566 :     <li> image - optional image to use when displaying information
567 :     about the feature.&nbsp; Specified relative to the feature.xml.</li>
568 :     <li> os - optional operating system specification. A comma-separated
569 :     list of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
570 :     . Indicates this feature should only be installed on one of the specified
571 :     os systems. If this attribute is not specified, the feature can be installed
572 :     on all systems (portable implementation). This information is used as
573 :     a hint by the installation and update support (user can force installation
574 : celek 1.14 of feature regardless of this setting).</li>
575 : celek 1.15 <li> arch - optional machine architecture specification. A comma-separated
576 :     list of architecture designators defined by Eclipse (see Javadoc for
577 :     <tt> org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
578 :     should only be installed on one of the specified systems. If this attribute
579 :     is not specified, the feature can be installed on all systems (portable
580 :     implementation). This information is used as a hint by the installation
581 :     and update support (user can force installation of feature regardless
582 :     of this setting).</li>
583 :     <li> ws - optional windowing system specification. A comma-separated
584 :     list of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
585 :     . Indicates this feature should only be installed on one of the specified
586 :     ws systems. If this attribute is not specified, the feature can be installed
587 :     on all systems (portable implementation). This information is used as
588 :     a hint by the installation and update support (user can force installation
589 : celek 1.14 of feature regardless of this setting).</li>
590 : celek 1.15 <li> nl - optional locale specification. A comma-separated list
591 :     of locale designators defined by Java. Indicates this feature should only
592 :     be installed on a system running with a compatible locale (using Java
593 :     locale-matching rules). If this attribute is not specified, the feature
594 :     can be installed on all systems (language-neutral implementation). This
595 :     information is used as a hint by the installation and update support (user
596 :     can force installation of feature regardless of this setting).</li>
597 :     <li> colocation-affinity - optional reference to another feature
598 :     identifier used to select the default installation location for this
599 :     feature. When this feature is being installed as a new feature (no other
600 :     versions of it are installed), an attempt is made to install this feature
601 :     in the same installation location as the referenced feature.</li>
602 :     <li> primary - optional indication specifying whether this feature
603 :     can be used as a <a href="#Dominant_Feature">primary feature</a> . Default
604 :     if <i>false</i> (not a primary feature).</li>
605 :     <li> application - optional identifier of the Eclipse application
606 : celek 1.14 that is to be used during startup when the declaring feature is the <a
607 : celek 1.15 href="#Dominant_Feature"> primary feature</a> . The application identifier
608 :     must represent a valid application registered in the <tt>org.eclipse.core.runtime.applications</tt>
609 : celek 1.14 extension point. Default is <tt>org.eclipse.ui.workbench</tt>.</li>
610 : celek 1.15 <li> plugin- optional identifier of the primary plugin associated with
611 :     this <a
612 :     href="file:///C:/OTI/workspace/plugins/platform-update-home/doc/eclipse_update_packaging.html#Dominant_Feature">primary
613 :     feature</a>. The primary plugin carries branding information. If the plugin
614 :     attribute is not declared, the primary plugin identifier used will be the
615 :     same as the feature identifier. </li>
616 :    
617 :     </ul>
618 :     <li> &lt;install-handler&gt;</li>
619 :    
620 :     <ul>
621 :     <li> library - optional .jar library containing the install handler
622 :     classes. If specified, the referenced .jar must be contained in the
623 :     feature archive. It is specified as a path within the feature archive,
624 :     relative to the feature.xml entry. If not specified, the feature archive
625 :     itself is used to load the install handler classes. This attribute is only
626 :     interpreted if <i>class</i> attribute is also specified</li>
627 :     <li> handler - optional identifier of the install handler. The
628 :     value is interpreted depending on the value of the <i>library</i> attribute.
629 :     If <i> library</i> is specified,&nbsp; the value is interpreted
630 :     as a fully qualified name of a class contained in the specified <i>library</i>.
631 :     If <i>library</i> is not specified, the value is is interpreted
632 :     as an extension identifier of an extension registered in the <i>org.eclipse.update.installHandlers</i>
633 :     extension point. In either case, the resulting class must implement
634 :     the <i> IInstallHandler</i> interface. The class is dynamically
635 :     loaded and called at specific points during feature processing. The handler
636 :     has visibility to the API classes from the update plug-in, and Eclipse plug-ins
637 : celek 1.14 required by the update plugin.</li>
638 : celek 1.15
639 : celek 1.14 </ul>
640 : celek 1.15 <li> &lt;description&gt; - brief component description as simple
641 :     text. Intended to be translated.</li>
642 :    
643 :     <ul>
644 :     <li> url - optional URL for the full description as HTML. The
645 :     URL can be specified as absolute of relative. If relative, it is assumed
646 :     to be relative to (and packaged in) the feature archive. Note, that for
647 :     NL handling the URL value should be separated to allow alternate URLs to
648 :     be specified for each national language. &nbsp;URL support keywords $os$,$ws$,$arch$
649 :     and $nl$ that will be replaced by the appropriate operating system, windowing
650 : celek 1.14 system, operating architecture or national language value.</li>
651 : celek 1.15
652 : celek 1.14 </ul>
653 : celek 1.15 <li> &lt;copyright&gt; - feature copyright as simple text. Intended
654 : celek 1.14 to be translated.</li>
655 : celek 1.15
656 : celek 1.14 <ul>
657 : celek 1.15 <li> url - optional URL for the full description as HTML. The
658 :     URL can be specified as absolute of relative. If relative, it is assumed
659 :     to be relative to (and packaged in) the feature archive. Note, that for
660 :     NL handling the URL value should be separated to allow alternate URLs to
661 :     be specified for each national language. URL support keywords $os$,$ws$,$arch$
662 :     and $nl$ that will be replaced by the appropriate operating system, windowing
663 :     system, operating architecture or national language value.</li>
664 :    
665 :     </ul>
666 :     <li> &lt;license&gt; - feature "click-through" license as simple
667 :     text. Intended to be translated. It is displayed in a standard dialog
668 :     with [Accept] [Reject] actions during the download/ installation process.
669 :     Note, that click-through license must be specified for any feature that
670 :     will be selected for installation or update using the Eclipse update manager.
671 :     When using nested features, only the nesting parent (ie. the feature selected
672 :     for installation or update) must have click-through license text defined.
673 :     The license text is required even if the optional <i>url</i> attribute
674 :     is specified.</li>
675 :    
676 :     <ul>
677 :     <li> url - optional URL for the full description as HTML. The
678 :     URL can be specified as absolute of relative. If relative, it is assumed
679 :     to be relative to (and packaged in) the feature archive. Note, that for
680 :     NL handling the URL value should be separated to allow alternate URLs to
681 :     be specified for each national language. Note, that the "content" of this
682 :     URL is <b>not</b> what is presented as the click-through license during
683 :     installation processing. The click-through license is the actual value
684 :     of the <i>&lt;license&gt;</i> element (eg. <tt>&lt;license&gt;click
685 :     through text&lt;/license&gt;</tt>).&nbsp;URL support keywords $os$,$ws$,$arch$
686 : celek 1.14 and $nl$ that will be replaced by the appropriate operating system, windowing
687 :     system, operating architecture or national language value.</li>
688 : celek 1.15
689 : celek 1.14 </ul>
690 : celek 1.15 <li> &lt;url&gt; - optional URL specifying site(s) contain feature
691 :     updates, or new features</li>
692 :    
693 : celek 1.13 <ul>
694 : celek 1.15 <li> &lt;update&gt; - URL to go to for updates to this feature</li>
695 :    
696 : celek 1.7 <ul>
697 : celek 1.15 <li> url - actual URL</li>
698 :     <li> label - displayable label (name) for the referenced site</li>
699 :    
700 : celek 1.7 </ul>
701 : celek 1.15 <li> &lt;discovery&gt; - URL to go to for new features. In general,
702 :     a provider can use this element to reference its own site(s), or site(s)
703 :     of partners that offer complementary features. Eclipse uses this element
704 : celek 1.14 simply as a way to distribute new site URLs to the clients</li>
705 : celek 1.15
706 : celek 1.7 <ul>
707 : celek 1.15 <li> url - actual URL</li>
708 :     <li> label - displayable label (name) for the referenced site</li>
709 :    
710 : celek 1.11 </ul>
711 : celek 1.15
712 : celek 1.7 </ul>
713 : celek 1.15 <li> &lt;includes&gt; - optional reference to a nested feature
714 :     that is considered to be part of this feature. Nested features must be
715 :     located on the same update site as this feature</li>
716 :    
717 :     <ul>
718 :     <li> id - required nested feature identifier</li>
719 :     <li> version - required nested feature version</li>
720 :     <li> name- optional displayable label (name). Intended to be
721 :     translated.</li>
722 :     <li>optional - optional specification indicating if this included
723 : celek 1.14 feature can be optionally installed. Default is "false"<br>
724 : celek 1.15 </li>
725 :     <li>match&nbsp; - optional rule that will be applied when resolving
726 :     the feature reference. A <samp>perfect</samp> match (the default that
727 :     matches the 2.0.1 behavior) requires that the feature has exactly the version
728 :     specified by the version attribute. Other choices progressively relax
729 :     the rule (<samp> equivalent</samp> allows only service part of the version
730 :     to be more recent, <samp>compatible</samp> also allows minor part
731 :     to be included in the consideration, while <samp>greaterOrEqual</samp>
732 :     simply allows any version that is more recent or identical to the one
733 :     specified).</li>
734 :     <li>search_location&nbsp; - optional. Indicates whether the
735 :     "New Updates" action should search the update location determined by the
736 :     nesting root feature (<tt>root</tt>, is the default), or the location defined
737 :     by the nested feature (<tt>self</tt>), or search both (<tt>both</tt>)
738 :     in that order (root first, self if nothing is found).</li>
739 :    
740 :     </ul>
741 :     <li> &lt;requires&gt; - optional feature dependency information.
742 :     Is expressed in terms of plug-in dependencies. If specified, is enforced
743 :     by the installation and update support at the time of installation</li>
744 :    
745 : celek 1.14 <ul>
746 : celek 1.15 <li> &lt;import&gt; - dependency entry. Specification and processing
747 : celek 1.14 is a subset of the &lt;import&gt; specification in plugin.xml</li>
748 : celek 1.15
749 : celek 1.7 <ul>
750 : celek 1.15 <li> plugin - identifier of dependent plug-in.</li>
751 :     <li> feature - identifier of dependent feature. If plugin
752 :     and feature are specified, plugin takes precedence upon feature. Feature
753 : celek 1.14 or plugin must be specified.</li>
754 : celek 1.15 <li> version - optional plug-in/feature version specification</li>
755 :     <li>patch - optional specification indicating if this feature
756 :     is a patch of the dependant feature. Default is "false". If patch is true,
757 :     version must be specified. If patch is true, only feature must be specified.
758 :     If patch is true, and match is specified, it must be 'perfect'.<br>
759 :     </li>
760 :     <li> match - optional matching rule. Valid values and processing
761 :     are as follows:</li>
762 : celek 1.14
763 : celek 1.15
764 : celek 1.7 <ul>
765 : celek 1.15 <li> if version attribute is not specified, the match attribute
766 :     (if specified) is ignored.</li>
767 :     <li>if version is specified, match defaults to compatible.<br>
768 :     </li>
769 :     <li>if patch is true, and match is not specified, match
770 : celek 1.14 defaults to perfect.<br>
771 : celek 1.15 </li>
772 :     <li> <b><i>perfect</i></b> - dependent plug-in version must match
773 : celek 1.14 exactly the specified version.</li>
774 : celek 1.15 <li> <b><i>equivalent</i></b> - dependent plug-in version must
775 :     be at least at the version specified, or at a higher service level (major
776 : celek 1.14 and minor version levels must equal the specified version).</li>
777 : celek 1.15 <li> <b><i>compatible</i></b> - dependent plug-in version must
778 :     be at least at the version specified, or at a higher service level or
779 :     minor level (major version level must equal the specified version).</li>
780 :     <li> <b><i>greaterOrEqual</i></b> - dependent plug-in version
781 :     must be at least at the version specified, or at a higher service, minor
782 : celek 1.14 or major level.</li>
783 :    
784 : celek 1.15
785 : celek 1.12 </ul>
786 : celek 1.15
787 : celek 1.11 </ul>
788 : celek 1.15
789 : celek 1.7 </ul>
790 : celek 1.15 <li> &lt;plugin&gt; - identifies referenced plug-in</li>
791 :    
792 : celek 1.7 <ul>
793 : celek 1.15 <li> id - required plug-in identifier (from plugin.xml)</li>
794 :     <li> version - required plug-in version (from plugin.xml)</li>
795 :     <li> fragment - optional specification indicating if this entry
796 : celek 1.14 is a plug-in fragment. Default is "false"</li>
797 : celek 1.15 <li> os - optional operating system specification. A comma-separated
798 :     list of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
799 :     . Indicates this entry should only be installed on one of the specified
800 :     os systems. If this attribute is not specified, the entry can be installed
801 :     on all systems (portable implementation). This information is used as
802 :     a hint by the installation and update support (user can force installation
803 : celek 1.14 of entry regardless of this setting).</li>
804 : celek 1.15 <li> arch - optional machine architecture specification. A comma-separated
805 :     list of architecture designators defined by Eclipse (see Javadoc for
806 :     <tt> org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
807 :     should only be installed on one of the specified systems. If this attribute
808 :     is not specified, the feature can be installed on all systems (portable
809 :     implementation). This information is used as a hint by the installation
810 :     and update support (user can force installation of feature regardless
811 :     of this setting).</li>
812 :     <li> ws - optional windowing system specification. A comma-separated
813 :     list of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
814 :     . Indicates this entry should only be installed on one of the specified
815 :     ws systems. If this attribute is not specified, the entry can be installed
816 :     on all systems (portable implementation). This information is used as
817 :     a hint by the installation and update support (user can force installation
818 : celek 1.14 of entry regardless of this setting).</li>
819 : celek 1.15 <li> nl - optional locale specification. A comma-separated list
820 :     of locale designators defined by Java. Indicates this entry should only
821 :     be installed on a system running with a compatible locale (using Java
822 :     locale-matching rules). If this attribute is not specified, the entry can
823 :     be installed on all systems (language-neutral implementation). This information
824 :     is used as a hint by the installation and update support (user can force
825 : celek 1.14 installation of entry regardless of this setting).</li>
826 : celek 1.15 <li> download-size - optional hint supplied by the feature packager,
827 :     indicating the download size in KBytes of the referenced plug-in archive.
828 :     If not specified, the download size is not known (<b>Implementation
829 :     Note:</b> the implementation needs to distinguish between "not known"
830 :     and 0 size)</li>
831 :     <li> install-size - optional hint supplied by the feature packager,
832 :     indicating the install size in KBytes of the referenced plug-in archive.
833 :     If not specified, the install size is not known (<b>Implementation Note:</b>
834 : celek 1.14 the implementation needs to distinguish between "not known" and 0 size)</li>
835 : celek 1.15
836 : celek 1.13 </ul>
837 : celek 1.15 <li> &lt;data&gt; - identifies non-plugin and non-feature data
838 :     that is part of the feature. Generally, data are post-install processed
839 :     using feature Install handler. Feature files like feature.properties are
840 :     not considered data.</li>
841 :    
842 :     <ul>
843 :     <li> id - required data identifier in the form of a relative path.</li>
844 :     <li> os - optional operating system specification. A comma-separated
845 :     list of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
846 :     . Indicates this entry should only be installed on one of the specified
847 :     os systems. If this attribute is not specified, the entry can be installed
848 :     on all systems (portable implementation). This information is used as
849 :     a hint by the installation and update support (user can force installation
850 : celek 1.14 of entry regardless of this setting).</li>
851 : celek 1.15 <li> arch - optional machine architecture specification. A comma-separated
852 :     list of architecture designators defined by Eclipse (see Javadoc for
853 :     <tt> org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
854 :     should only be installed on one of the specified systems. If this attribute
855 :     is not specified, the feature can be installed on all systems (portable
856 :     implementation). This information is used as a hint by the installation
857 :     and update support (user can force installation of feature regardless
858 :     of this setting).</li>
859 :     <li> ws - optional windowing system specification. A comma-separated
860 :     list of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
861 :     . Indicates this entry should only be installed on one of the specified
862 :     ws systems. If this attribute is not specified, the entry can be installed
863 :     on all systems (portable implementation). This information is used as
864 :     a hint by the installation and update support (user can force installation
865 : celek 1.14 of entry regardless of this setting).</li>
866 : celek 1.15 <li> nl - optional locale specification. A comma-separated list
867 :     of locale designators defined by Java. Indicates this entry should only
868 :     be installed on a system running with a compatible locale (using Java
869 :     locale-matching rules). If this attribute is not specified, the entry can
870 :     be installed on all systems (language-neutral implementation). This information
871 :     is used as a hint by the installation and update support (user can force
872 : celek 1.14 installation of entry regardless of this setting).</li>
873 : celek 1.15 <li> download-size - optional hint supplied by the feature packager,
874 :     indicating the download size in KBytes of the referenced data archive.
875 :     If not specified, the download size is not known (<b>Implementation Note:</b>
876 :     the implementation needs to distinguish between "not known" and 0 size)</li>
877 :     <li> install-size - optional hint supplied by the feature packager,
878 :     indicating the install size in KBytes of the referenced data archive.
879 :     If not specified, the install size is not known (<b>Implementation Note:</b>
880 : celek 1.14 the implementation needs to distinguish between "not known" and 0 size)</li>
881 : celek 1.15
882 : celek 1.10 </ul>
883 : celek 1.15
884 : celek 1.9 </ul>
885 : celek 1.15 <a name="Feature_Archive_Mapping_Id_To_Path"></a> When interacting
886 :     with the update site, the feature implementation maps the <tt>&lt;plugin&gt;</tt>
887 :     and <tt>&lt;data&gt;</tt> elements into path identifiers used by the site
888 :     to determine the actual files to download and install. The default feature
889 :     implementation supplied by Eclipse constructs the path identifiers as
890 :     follows:
891 : celek 1.7 <ul>
892 : celek 1.15 <li> <tt>&lt;plugin&gt;</tt> element results in a path entry in
893 :     the form "<tt>plugins/&lt;pluginId&gt;_&lt;pluginVersion&gt;.jar</tt>"
894 :     (for example, "<tt>plugins/org.eclipse.core.boot_1.0.3.jar</tt>")</li>
895 :     <li> <tt>&lt;data&gt;</tt> element results in a path entry in
896 :     the form "<tt>features/&lt;featureId&gt;_&lt;featureVersion&gt;/&lt;dataId&gt;</tt>
897 :     " (for example, "f<tt>eatures/com.xyz.tools_2.3.1/examples.zip</tt>")</li>
898 :    
899 : celek 1.7 </ul>
900 : celek 1.15 Note, that in general the feature.xml&nbsp; manifest documents
901 :     should specify UTF-8 encoding. For example
902 : celek 1.7 <p><tt>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </p>
903 : celek 1.15
904 :     <p>Translatable text contained in the feature.xml can be separated into feature&lt;_locale&gt;.properties
905 :     files using Java property bundle conventions. Note that the translated
906 :     strings are used at installation time (ie. do not employ the plug-in
907 :     fragment runtime mechanism). </p>
908 :    
909 : celek 1.9 <h3> <a name="Plug-In_Archive"></a> Plug-In Archive</h3>
910 : celek 1.15 Plug-ins and plug-in fragments are individually packaged as separate
911 :     Java .jars. Standard Java jar facilities are used for constructing plug-in
912 :     archives. There is no distinction made between a plug-in archive containing
913 :     a plug-in and one containing a plug-in fragment.
914 : celek 1.7 <p>The recommended convention for naming the plug-in archives is <br>
915 : celek 1.15 <tt>&lt;id&gt;_&lt;version&gt;.jar</tt> </p>
916 :    
917 :     <p>Where <tt>&lt;id&gt;</tt> is the plug-in or fragment identifier and <tt>
918 :     &lt;version&gt;</tt> is the full version identifier contained in the
919 :     respective plugin.xml or fragment.xml. Note that this is a recommended
920 :     convention that minimizes chance of collisions, but is not required by
921 :     the Eclipse architecture. For example, the following are valid plug-in
922 :     archive names </p>
923 :    
924 : celek 1.7 <p><tt>org.eclipse.platform_1.0.3.jar</tt> <br>
925 : celek 1.15 <tt>org.eclipse.ui.nl_2.0.jar</tt> <br>
926 :     <tt>my_plugin.jar</tt> </p>
927 :    
928 :     <p>Internally, each plug-in archive packages all the relevant plug-in or fragment
929 :     files relative to its plug-in or fragment directory (but not including the
930 :     directory path element). The archive has the following structure </p>
931 :    
932 : celek 1.7 <p><tt>plugin.xml *OR* fragment.xml</tt> <br>
933 : celek 1.15 <tt>other plug-in or feature files and subdirectories</tt> <br>
934 :     <tt>META-INF/</tt> <br>
935 :     <tt>&nbsp;&nbsp;&nbsp; Java jar manifest and security files</tt>
936 :     </p>
937 :    
938 : celek 1.9 <h3> <a name="Packaging_NL"></a> Packaging NL</h3>
939 : celek 1.15 In Eclipse, translated plug-in information is packaged either
940 :     together with the base plug-in, or as a plug-in fragment. At runtime,
941 :     Eclipse locates the translations for the required locale. The use of
942 :     fragments allows translations to be added to the runtime without the
943 :     need to repackage the base plug-ins.
944 :     <p>This mechanism cannot be used for translating the actual packaging information
945 :     that is part of the installation xml files. Consequently the standard
946 :     Java translation conventions are used for the packaging information, and
947 :     all necessary translations must be available at the time the feature is
948 :     packaged. </p>
949 :    
950 : celek 1.9 <h4> <a name="Translated_Feature_Information"></a> Translated Feature Information</h4>
951 : celek 1.15 <b>Note:</b> This section describes the conventions used for translating
952 :     the information contained within the feature manifest. It allows for
953 :     the update client to select the correctly localized strings from the update
954 :     server. This section specifically does not describe localization of individual
955 :     plug-ins.
956 :     <p>Several of the attributes within the feature manifest are strings intended
957 :     for display through user interfaces. To facilitate translation, these
958 :     attribute values use the convention defined for translatable attributes
959 :     of plugin.xml. Strings beginning with % up to the first space are treated
960 :     as resource identifier keys (without the %) and looked up in a properties
961 : celek 1.14 file. For example </p>
962 : celek 1.15
963 : celek 1.7 <p><tt>label="%cfg Tool Feature for Linux"</tt> </p>
964 : celek 1.15
965 :     <p>results in a resource lookup in the correct property file with key "cfg".
966 :     If no property files are supplied, or the key is not found the default
967 : celek 1.14 string value (following the %key) is used. </p>
968 : celek 1.15
969 :     <p>The property files are named as feature_&lt;locale&gt;.properties using
970 :     the Java resource bundle naming conventions. Within the feature archive
971 :     .jar they are placed in the same directory as their corresponding feature.xml
972 : celek 1.14 file. </p>
973 : celek 1.15
974 :     <p><b>Implementation Note</b>: When accessing the resource bundles the Eclipse
975 :     installation and update code should create a class loader for accessing
976 :     the translated string. This way, the standard locale lookup algorithm
977 :     implemented by Java is automatically used. </p>
978 :    
979 : celek 1.7 <p><tt>ResourceBundle b;</tt> <br>
980 : celek 1.15 <tt>ClassLoader l;</tt> <br>
981 :     <tt>l = new URLClassLoader(new URL[] {&lt;targetDirectoryURL&gt;},
982 :     null);</tt> <br>
983 :     <tt>b = ResourceBundle.getBundle("feature",Locale.getDefault(),l);</tt>
984 : celek 1.14 </p>
985 : celek 1.15
986 :     <p>The resulting resource bundle can be used in <tt>IPluginDescriptor.getResourceString(String,ResourceBundle)</tt>
987 :     to actually return the correct translated string for the manifest attribute.
988 : celek 1.14 </p>
989 : celek 1.15
990 : celek 1.9 <h4> <a name="Translated_Plug-In_Information"></a> Translated Plug-In Information</h4>
991 : celek 1.15 No change from 1.0. Translated plug-in information should be packaged
992 :     as plug-in fragments.
993 :     <h3> <a name="Packaging_Target-Specific_Support"></a> Packaging Target-Specific
994 : celek 1.14 Support</h3>
995 : celek 1.15 No change from 1.0. Target-specific plug-in support (os, ws) should
996 :     be packaged as plug-in fragments.
997 :     <h3> <a name="Packaging_Attribution_Information"></a> Packaging Attribution
998 : celek 1.14 Information</h3>
999 : celek 1.15 This topic is covered in separate documents available on the eclipse.org
1000 :     development resources page of the Update component.
1001 : celek 1.9 <h3> <a name="Packaging_Non_Plug_In_Files"></a> Packaging Non-Plug-In Files</h3>
1002 : celek 1.15 Arbitrary non-plug-in files can be included as part of the feature
1003 :     definition using the <tt>&lt;data&gt;</tt> elements. Non-plug-in files
1004 :     typically also requires specification of a custom install handler. In
1005 :     general, the Eclipse support only downloads the referenced non-plug-in
1006 :     files and calls the custom install handler to perform any actual installation
1007 :     steps.
1008 : celek 1.7 <p>Eclipse does not specify the format of the non-plug-in files. </p>
1009 : celek 1.15
1010 : celek 1.9 <h3> <a name="Custom_Install_Handling"></a> Custom Install Handling</h3>
1011 : celek 1.15 Custom install handlers are written as a Java class and are packaged
1012 :     as part of the <a href="#Feature_Archive">feature archive</a> . The installer
1013 :     must implement the <tt>IInstallHandler</tt> interface (in most cases will
1014 :     extend the <tt>BaseInstallHandler</tt> abstract helper class which implements
1015 :     <tt>IInstallHandler</tt>). When required, the install handler is dynamically
1016 :     loaded by the installation and update code, and is called at specific
1017 :     points during its processing. The install handler code has visibility
1018 :     to classes from the installation and update support plug-in, and its prerequisite
1019 :     plug-ins.
1020 :     <p><b>Implementation Note:</b> the detailed list of visible prerequisite plug-ins
1021 :     is still evolving. It is expected to include <tt>org.eclipse.core.boot </tt>
1022 :     and <tt>org.eclipse.core.runtime</tt> in all cases, plus <tt>org.eclipse.ui</tt>
1023 :     and <tt>org.eclipse.swt</tt> when running with full workbench (ie.
1024 :     not "headless mode"). Also, it would be useful to always expose <tt>org.eclipse.core.ant</tt>
1025 :     so that build scripts can be used as part of the install handler implementation.
1026 : celek 1.14 </p>
1027 : celek 1.15
1028 :     <p>The IInstallHandler interface supports the following methods [<b>Implementation
1029 :     Note:</b> the detailed definition of the IInstallHandler interface is
1030 :     still evolving. The description below is not an API specification (simply
1031 : celek 1.14 a functional description)]: </p>
1032 : celek 1.15
1033 : celek 1.7 <ul>
1034 : celek 1.15 <li> install-initiated - the install handler is called after a
1035 :     feature was selected for installation, but before any files were downloaded.
1036 :     It is intended to implement any custom click-through or user registration
1037 :     dialogs. The base implementation of this method supplied with the abstract
1038 :     class <tt>BaseInstallHandler </tt>performs the default click-through
1039 :     processing using the license text supplied as part of the feature manifest.
1040 :     On return this method indicates success (installation continues) of failure
1041 : celek 1.14 (installation is aborted).</li>
1042 : celek 1.15 <li> install-downloaded - the install handler is called after
1043 :     all the required feature files were downloaded (feature, plugins, data)
1044 :     but before the actual installation is performed. The install handler
1045 :     is expected to perform verification of the non-plug-in data files (eg.
1046 :     security), or any other pre-install processing.&nbsp; On return this method
1047 :     indicates success (installation continues) or failure (installation is
1048 : celek 1.14 aborted).</li>
1049 : celek 1.15 <li> install-completion - the install handler is called after
1050 :     the feature information and the plug-ins were installed. It is expected
1051 :     to complete the installation of any non-plug-in data that was part of the
1052 :     feature. On return this method indicates success (returns custom install
1053 :     log) or failure (installation is aborted). On failure, the install handler
1054 : celek 1.14 is expected to perform any required cleanup.</li>
1055 : celek 1.15 <li> uninstall-initiated - the install handler is called when
1056 :     a feature is selected for removal, but before any of the standard uninstall
1057 :     processing has taken place. It is passed the custom install log created
1058 : celek 1.14 by the install handler install-completion step.</li>
1059 : celek 1.15 <li> uninstall-completion - the install handler is called on
1060 :     completion of the standard uninstall steps. It is passed the custom
1061 :     install log created by the install handler install-completion step.</li>
1062 :    
1063 : celek 1.7 </ul>
1064 : celek 1.15 Note, that as a general practice, install handlers should be provided
1065 :     in their own jars (even though they could be just exposed in the feature
1066 :     archive jar). The jar should be signed, and sealed.
1067 : celek 1.9 <h3> <a name="Security_Considerations"></a> Security Considerations</h3>
1068 : celek 1.15 The general approach is to use base Java jar signing for the feature
1069 :     and plug-in archive .jars.
1070 : celek 1.7 <p>Features are verified as follows: </p>
1071 : celek 1.15
1072 : celek 1.7 <ul>
1073 : celek 1.15 <li> download and verify the feature archive (use base Java jar
1074 :     verification)</li>
1075 :     <li> for each plug-in archive</li>
1076 :    
1077 : celek 1.14 <ul>
1078 : celek 1.15 <li> verify the archive jar content (use base Java jar verification)</li>
1079 :     <li> verify plug-in id and version from <tt>&lt;plugin&gt;</tt>
1080 : celek 1.14 entry in feature manifest matches downloaded plugin.xml</li>
1081 : celek 1.15
1082 : celek 1.7 </ul>
1083 : celek 1.15 <li> for each non-plugin file</li>
1084 :    
1085 : celek 1.7 <ul>
1086 : celek 1.15 <li> call install handler to verify file</li>
1087 :    
1088 : celek 1.10 </ul>
1089 : celek 1.15
1090 : celek 1.9 </ul>
1091 : celek 1.15 In general, when processing signed jars, the user will be prompted
1092 :     for each unrecognized certificate. The response choices will include aborting
1093 :     the installation (originator is not trusted), continuing the installation
1094 :     (originator is trusted for this installation).
1095 : celek 1.9 <h2> <a name="Update_Server"></a> Update Server</h2>
1096 : celek 1.15 The default Eclipse update server is any URL-accessible server.
1097 :     The default implementation assumes a fixed-layout server. The content
1098 :     of the server (in terms of available features and plug-ins) is described
1099 :     in a site map file, <i>site.xml</i>. This file can be manually maintained,
1100 :     or can be dynamically computed by the server.
1101 : celek 1.9 <h3> <a name="Site_Map"></a> Site Map</h3>
1102 : celek 1.15 The update server URL can be specified as a full URL to the site
1103 :     map file, or a URL of a directory path containing the site map file (similar
1104 :     to index.html processing). The site map site.xml format is defined by
1105 :     the following dtd:
1106 : celek 1.7 <p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt> </p>
1107 : celek 1.15
1108 :     <p><tt>&lt;!ELEMENT site (description?, feature*, archive*, category-def*)&gt;</tt>
1109 :     <br>
1110 :     <tt>&lt;!ATTLIST site</tt> <br>
1111 :     <tt>&nbsp;&nbsp;&nbsp; type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1112 : celek 1.14 CDATA #IMPLIED</tt> <br>
1113 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1114 : celek 1.14 CDATA #IMPLIED</tt> <br>
1115 : celek 1.15 <tt>&gt;</tt> </p>
1116 :    
1117 : celek 1.7 <p><tt>&lt;!ELEMENT description (#PCDATA)&gt;</tt> <br>
1118 : celek 1.15 <tt>&lt;!ATTLIST description</tt> <br>
1119 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1120 : celek 1.14 CDATA #IMPLIED</tt> <br>
1121 : celek 1.15 <tt>&gt;</tt> </p>
1122 :    
1123 : celek 1.7 <p><tt>&lt;!ELEMENT feature (category*)&gt;</tt> <br>
1124 : celek 1.15 <tt>&lt;!ATTLIST feature</tt> <br>
1125 :     <tt>&nbsp;&nbsp;&nbsp; type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1126 : celek 1.14 CDATA #IMPLIED</tt> <br>
1127 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1128 : celek 1.14 CDATA #IMPLIED</tt> <br>
1129 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1130 :     CDATA #IMPLIED</tt> <br>
1131 :     <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1132 : celek 1.14 CDATA #REQUIRED<br>
1133 : celek 1.15 &nbsp;&nbsp;&nbsp; label &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CDATA
1134 : celek 1.14 #IMPLIED<br>
1135 : celek 1.15 </tt><tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1136 : celek 1.14 CDATA #IMPLIED</tt> <br>
1137 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1138 : celek 1.14 CDATA #IMPLIED</tt> <br>
1139 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1140 : celek 1.14 CDATA #IMPLIED</tt> <br>
1141 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1142 : celek 1.14 CDATA #IMPLIED</tt><br>
1143 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; patch &nbsp;&nbsp;&nbsp;&nbsp; </tt><tt>&nbsp;&nbsp;
1144 :     (true | false) "false"</tt><br>
1145 :     <tt> &gt;</tt> </p>
1146 :    
1147 : celek 1.7 <p><tt>&lt;!ELEMENT archive EMPTY&gt;</tt> <br>
1148 : celek 1.15 <tt>&lt;!ATTLIST archive</tt> <br>
1149 :     <tt>&nbsp;&nbsp;&nbsp; path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1150 : celek 1.14 CDATA #REQUIRED</tt> <br>
1151 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1152 : celek 1.14 CDATA #REQUIRED</tt> <br>
1153 : celek 1.15 <tt>&gt;</tt> </p>
1154 :    
1155 : celek 1.7 <p><tt>&lt;!ELEMENT category EMPTY&gt;</tt> <br>
1156 : celek 1.15 <tt>&lt;!ATTLIST category</tt> <br>
1157 :     <tt>&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1158 : celek 1.14 CDATA #REQUIRED</tt> <br>
1159 : celek 1.15 <tt>&gt;</tt> </p>
1160 :    
1161 : celek 1.7 <p><tt>&lt;!ELEMENT category-def (description?)&gt;</tt> <br>
1162 : celek 1.15 <tt>&lt;!ATTLIST category-def</tt> <br>
1163 :     <tt>&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1164 : celek 1.14 CDATA #REQUIRED</tt> <br>
1165 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1166 : celek 1.14 CDATA #REQUIRED</tt> <br>
1167 : celek 1.15 <tt>&gt;</tt> </p>
1168 :    
1169 : celek 1.7 <p>The element and attribute definitions are as follows: </p>
1170 : celek 1.15
1171 : celek 1.7 <ul>
1172 : celek 1.15 <li> &lt;site&gt; - defines the site map</li>
1173 :    
1174 : celek 1.7 <ul>
1175 : celek 1.15 <li> type - optional site type specification. The value refers
1176 :     to a type string registered via the <a href="#Framework">install framework</a>
1177 :     extension point. If not specified, the type is assumed to be the default
1178 :     Eclipse site type (as specified in this document).</li>
1179 :     <li> url - optional URL defining the update site baseline URL
1180 :     (used to determine individual &lt;feature&gt; and &lt;archive&gt; location).&nbsp;
1181 :     Can be relative or absolute. If relative, is relative to site.xml. If
1182 :     not specified, the default is the URL location of the site.xml file.</li>
1183 :    
1184 :     </ul>
1185 :     <li> &lt;description&gt; - brief description as simple text.
1186 :     Intended to be translated.</li>
1187 :    
1188 :     <ul>
1189 :     <li> url - optional URL for the full description as HTML. The
1190 :     URL can be specified as absolute of relative. If relative, If relative,
1191 :     is relative to site.xml.</li>
1192 :     <br>
1193 :     Note, that for NL handling the URL value should be separated to
1194 :     allow alternate URLs to be specified for each national language.
1195 :    
1196 :     </ul>
1197 :     <li> &lt;feature&gt; - identifies referenced feature archive</li>
1198 :    
1199 :     <ul>
1200 :     <li> type - optional feature type specification. The value refers
1201 :     to a type string registered via the <a href="#Framework">install framework</a>
1202 :     extension point. If not specified, the type is assumed to be the default
1203 :     feature type for the site. If the site type is the default Eclipse site
1204 :     type, the default feature type is the packaged feature type (as specified
1205 :     in this document).</li>
1206 :     <li> id - optional feature identifier. The information is used
1207 :     as a performance optimization to speed up searches for features. Must
1208 :     match the identifier specified in the feature.xml of the referenced archive
1209 :     (the url attribute). If specified, the version attribute must also be
1210 : celek 1.14 specified.</li>
1211 : celek 1.15 <li> version - optional feature version. The information is used
1212 :     as a performance optimization to speed up searches for features. Must
1213 :     match the version specified in the feature.xml of the referenced archive
1214 :     (the url attribute). If specified, the id attribute must also be specified.</li>
1215 :     <li> url - required URL reference to the feature archive. Can
1216 :     be relative or absolute. If relative, it is relative to the location of
1217 :     the site.xml file. <b>Note</b>: the default site implementation
1218 :     allows features to be accessed without being explicitly declared using
1219 :     a &lt;feature&gt; entry. By default, an undeclared features reference is
1220 :     interpreted as "features/&lt;id&gt;_&lt;version&gt;.jar"</li>
1221 :     <li>label - optional feature label. The value is used for optimization
1222 : celek 1.14 when browsing the site from the update manager. Intended to be translated.<br>
1223 : celek 1.15 </li>
1224 :     <li> os - optional operating system specification. A comma-separated
1225 :     list of os designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
1226 :     . Indicates this feature should only be installed on one of the specified
1227 :     os systems. If this attribute is "*", the feature can be installed
1228 :     on all systems (portable implementation). This information is used as a
1229 :     hint by the installation and update support (user can force installation
1230 : celek 1.14 of feature regardless of this setting).</li>
1231 : celek 1.15 <li> arch - optional machine architecture specification. A comma-separated
1232 :     list of architecture designators defined by Eclipse (see Javadoc for
1233 :     <tt> org.eclipse.core.boot.BootLoader)</tt>. Indicates this feature
1234 :     should only be installed on one of the specified systems. If this attribute&nbsp;is
1235 :     "*", the feature can be installed on all systems (portable implementation).
1236 :     This information is used as a hint by the installation and update support
1237 : celek 1.14 (user can force installation of feature regardless of this setting).</li>
1238 : celek 1.15 <li> ws - optional windowing system specification. A comma-separated
1239 :     list of ws designators defined by Eclipse (see Javadoc for <tt>org.eclipse.core.boot.BootLoader)</tt>
1240 :     . Indicates this feature should only be installed on one of the specified
1241 :     ws systems. If this attribute&nbsp;is "*", the feature can be installed
1242 :     on all systems (portable implementation). This information is used as
1243 :     a hint by the installation and update support (user can force installation
1244 : celek 1.14 of feature regardless of this setting).</li>
1245 : celek 1.15 <li> nl - optional locale specification. A comma-separated list
1246 :     of locale designators defined by Java. Indicates this feature should only
1247 :     be installed on a system running with a compatible locale (using Java
1248 :     locale-matching rules). If this attribute&nbsp;is "*", the feature can
1249 :     be installed on all systems (language-neutral implementation). This information
1250 :     is used as a hint by the installation and update support (user can force
1251 :     installation of feature regardless of this setting).</li>
1252 :     <li>patch - optional specification indicating if this feature
1253 : celek 1.14 is a patch. Default is "false".&nbsp;</li>
1254 : celek 1.15
1255 : celek 1.7 </ul>
1256 : celek 1.15 <li> &lt;archive&gt; - identifies referenced "storage" archive
1257 :     (the actual files referenced via the <tt>&lt;plugin&gt;</tt> or <tt>&lt;data&gt;</tt>
1258 :     elements in the feature manifest). The site simply manages archives
1259 :     as a path-to-URL map. The default Eclipse site implementation does not
1260 :     require the &lt;archive&gt; section to be included in the site map (site.xml).
1261 :     Any archive reference not explicitly defined as part of an &lt;archive&gt;
1262 :     section is assumed to be mapped to a url in the form "&lt;archivePath&gt;"
1263 :     relative to the location of the site.xml file.</li>
1264 :    
1265 : celek 1.14 <ul>
1266 : celek 1.15 <li> path - required archive path identifier. This is a string
1267 : celek 1.14 that is determined by the <a
1268 : celek 1.15 href="#Feature_Archive_Mapping_Id_To_Path">feature</a> referencing this
1269 :     archive and is not otherwise interpreted by the site (other than as a
1270 :     lookup token).</li>
1271 :     <li> url - required URL reference to the archive. Can be relative
1272 :     or absolute. If relative, it is relative to the location of the site.xml
1273 : celek 1.14 file.</li>
1274 : celek 1.15
1275 : celek 1.14 </ul>
1276 : celek 1.15 <li> &lt;category-def&gt; - an optional definition of a category
1277 :     that can be used by installation and update support to hierarchicaly
1278 :     organize features</li>
1279 :    
1280 : celek 1.14 <ul>
1281 : celek 1.15 <li> name - category name. Is specified as a path of name tokens
1282 : celek 1.14 separated by /</li>
1283 : celek 1.15 <li> label - displayable label. Intended to be translated.</li>
1284 :    
1285 : celek 1.14 </ul>
1286 : celek 1.15 <li> &lt;category&gt; - actual category specification for a feature
1287 : celek 1.14 entry</li>
1288 : celek 1.15
1289 : celek 1.9 <ul>
1290 : celek 1.15 name - category name
1291 : celek 1.13 </ul>
1292 : celek 1.15
1293 : celek 1.7 </ul>
1294 : celek 1.15 Note, that in general the feature.xml&nbsp; manifest documents
1295 :     should specify UTF-8 encoding. For example
1296 : celek 1.7 <p><tt>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</tt> </p>
1297 : celek 1.15
1298 :     <p>Translatable text contained in the site.xml can be separated into site&lt;_locale&gt;.properties
1299 :     files using Java property bundle conventions. Note that the translated
1300 :     strings are used at installation time (ie. do not employ the plug-in fragment
1301 :     runtime mechanism). The property bundles are located relative to the site.xml
1302 : celek 1.14 location. </p>
1303 : celek 1.15
1304 : celek 1.9 <h3> <a name="Default_Site_Layout"></a> Default Site Layout</h3>
1305 : celek 1.15 <tt>&lt;site root&gt;/</tt> <br>
1306 :     <tt>&nbsp;&nbsp;&nbsp; site.xml</tt> <br>
1307 :     <tt>&nbsp;&nbsp;&nbsp; features/</tt> <br>
1308 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; feature archives&nbsp;&nbsp;
1309 : celek 1.14 (eg. org.eclipse.javatools_1.0.1.jar)</tt> <br>
1310 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;featureId&gt;_&lt;featureVersion&gt;/&nbsp;&nbsp;&nbsp;
1311 : celek 1.14 (optional)</tt> <br>
1312 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1313 :     non-plug-in files for feature</tt> <br>
1314 :     <tt>&nbsp;&nbsp;&nbsp; plugins/</tt> <br>
1315 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plug-in argives&nbsp;&nbsp;&nbsp;
1316 :     (eg. org.eclipse.ui_1.0.3.jar)</tt>
1317 : celek 1.9 <h3> <a name="Controlling_Access"></a> Controlling Access</h3>
1318 : celek 1.15 The default Eclipse site implementation provides support for http
1319 :     access with basic user authentication (userid and password).
1320 :    
1321 :     <p>Custom access control mechanisms can be added to base Eclipse in one of
1322 :     2 ways: </p>
1323 :    
1324 : celek 1.7 <ul>
1325 : celek 1.15 <li> by supplying server-side logic on the update server (eg.
1326 :     implementing servlets that compute the site.xml map, and control access
1327 :     to individual archives based on some user criteria)</li>
1328 :     <li> by supplying a custom concrete implementation of the site
1329 :     object (installed on the client machine, update server specified <tt>&lt;site
1330 :     type=""&gt;</tt> ). The custom concrete site implementation, together with
1331 :     any server-side logic support the required control mechanisms.</li>
1332 :    
1333 : vlad 1.1 </ul>
1334 : celek 1.15 Eclipse provides an example demonstrating an implementation of
1335 :     an access mechanism based on feature key files.
1336 : celek 1.9 <h2> <a name="Eclipse_Install"></a> Eclipse Install</h2>
1337 : celek 1.15
1338 : celek 1.9 <h3> <a name="Default_Install_Layout"></a> Default Install Layout</h3>
1339 : celek 1.15 <tt>&lt;install root&gt;/</tt> <br>
1340 :     <tt>&nbsp;&nbsp;&nbsp; install/</tt> <br>
1341 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; features/</tt> <br>
1342 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1343 :     &lt;featureId&gt;_&lt;version&gt;/</tt> <br>
1344 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1345 : celek 1.14 feature.xml</tt> <br>
1346 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1347 : celek 1.14 other feature files</tt> <br>
1348 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1349 : celek 1.14 META-INF/</tt> <br>
1350 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1351 :     META-INF-ECLIPSE/</tt>
1352 : celek 1.7 <p><tt>&nbsp;&nbsp;&nbsp; plugins/</tt> <br>
1353 : celek 1.15 <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pluginORfragmentId&gt;_&lt;version&gt;/</tt>
1354 :     <br>
1355 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1356 :     plugin.xml or fragment.xml</tt> <br>
1357 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1358 :     other plugin or fragment files</tt> <br>
1359 :     <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1360 :     META_INF/</tt> </p>
1361 :    
1362 :     <p><b>Implementation Note:</b> we will go back to the original design of not
1363 :     splitting out fragments (ie. plugin and fragments go into the same install
1364 :     location) </p>
1365 :    
1366 : celek 1.9 <h3> <a name="Unmanaged_Plugins"></a> "Unmanaged" Plug-Ins</h3>
1367 : celek 1.15 Eclipse supports a concept of "unmanaged" plug-ins. These are
1368 :     plug-ins that were directly installed into the Eclipse file tree without
1369 :     being part of a feature (eg. developer unzipping plug-in archive directly
1370 :     into the Eclipse file tree).
1371 :     <p>Eclipse runtime recognizes these plugins during startup and loads the plug-in
1372 :     information into the runtime registry following the standard plug-in binding
1373 :     rules. The update support also recognizes the presence of this new plug-in,
1374 :     but since this plug-in is not part of any feature it cannot be updated using
1375 :     the update support (hence "unmanaged"). Unmanaged plug-in that become referenced
1376 :     by a feature as a result of some future installation or update action become
1377 :     "managed" (can be updated as part of the feature). </p>
1378 :    
1379 :     <p>Unmanaged plug-ins are not displayed as part of the installation and update
1380 :     UI. </p>
1381 :    
1382 :     <h3> <a name="Using_Native_Platform_Installers"></a> Using Native Platform
1383 : celek 1.14 Installers</h3>
1384 : celek 1.15 The Eclipse installation contains plugins that can be shared across
1385 :     multiple features. When installing and uninstalling features using the
1386 :     Eclipse installation and update support, these relationship are correctly
1387 :     maintained. Only one copy of any version of a plug-in is used.
1388 :    
1389 :     <p>However, when using native platform installers, performing native uninstall
1390 :     creates problems because plug-ins would be removed without regard to
1391 :     any sharing relationships. As a result, Eclipse <b>does not allow</b> plug-ins
1392 :     to be installed using native installers into the shared installation tree.
1393 :     Instead, native installers must establish their own installation root
1394 :     directory. The subdirectory structure is the same as defined for base
1395 :     Eclipse. The private root directory is logically linked into the shared
1396 :     Eclipse installation via a link file installed by the native installer.
1397 :     The file path for the link file is <tt>&lt;configRoot&gt;/links/</tt>.
1398 :     The <tt>&lt;configRoot&gt; </tt> location is computed by Eclipse relative
1399 :     to the launch <a href="#Multiple%20Launch%20Points"> configuration file</a>
1400 :     . By default, this is the <tt>install/</tt> directory in the shared Eclipse
1401 : celek 1.14 installation tree. </p>
1402 : celek 1.15
1403 :     <p>The name of the link file is not specified by Eclipse. The name is determined
1404 :     by the native installer. To minimize the potential for naming collisions,
1405 :     it is recommended that the file name contain the identifier and version
1406 :     of the feature being installed by the native installer. For example, <tt>&lt;featureId&gt;_&lt;featureVersion&gt;.properties</tt>
1407 :     . The file content is in the form of a Java properties file, with the
1408 :     following properties defined: </p>
1409 :    
1410 : celek 1.7 <p><tt>path=[r|rw] install-path[,[r|rw] install-path]*</tt> </p>
1411 : celek 1.15
1412 :     <p>The property <tt>path</tt> is a comma-separated list of optionally annotated
1413 :     install paths. The property value <tt>install-path</tt> is a full file
1414 :     path to the installation directory root, specified in local OS format.
1415 :     The optional annotation <tt>r</tt> or <tt>rw</tt> indicates whether Eclipse
1416 :     update support should allow the specified location to be used for updates.
1417 : celek 1.14 Default is to allow updates&nbsp; (w). </p>
1418 : celek 1.15
1419 :     <p>Eclipse does not manage the linked directories in any way. It simply detects
1420 :     their existence by the presence of the link files, and includes the
1421 :     linked plug-ins during the platform startup. The native installer is
1422 :     responsible for uninstalling the link when the corresponding directory
1423 :     is removed. Eclipse runtime ignores any links that cannot be resolved.
1424 :     <br>
1425 :     &nbsp; </p>
1426 :     <br>
1427 : celek 1.14 <br>
1428 :     <br>
1429 :     <br>
1430 :     <br>
1431 : celek 1.13 <br>
1432 : celek 1.15 <br>
1433 : vlad 1.1 </body>
1434 :     </html>