platform-update-home/doc/eclipse_update_packaging.html

Parent Directory Parent Directory | Revision Log Revision Log


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