Statistics
| Revision:

root / trunk / install / IzPack / doc / izpack / html / node4.html @ 11445

History | View | Annotate | Download (56.4 KB)

1 5819 cesar
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
3
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4
original version by:  Nikos Drakos, CBLU, University of Leeds
5
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6
* with significant contributions from:
7
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8
<HTML>
9
<HEAD>
10
<TITLE>Writing Installation XML Files</TITLE>
11
<META NAME="description" CONTENT="Writing Installation XML Files">
12
<META NAME="keywords" CONTENT="izpack-doc">
13
<META NAME="resource-type" CONTENT="document">
14
<META NAME="distribution" CONTENT="global">
15
16
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
17
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
18
19
<LINK REL="STYLESHEET" HREF="izpack-doc.css">
20
21
<LINK REL="next" HREF="node5.html">
22
<LINK REL="previous" HREF="node3.html">
23
<LINK REL="up" HREF="izpack-doc.html">
24
<LINK REL="next" HREF="node5.html">
25
</HEAD>
26
27
<BODY >
28
29
<DIV CLASS="navigation"><!--Navigation Panel-->
30
<A NAME="tex2html351"
31
  HREF="node5.html">
32
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
33
<A NAME="tex2html347"
34
  HREF="izpack-doc.html">
35
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
36
<A NAME="tex2html341"
37
  HREF="node3.html">
38
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
39
<A NAME="tex2html349"
40
  HREF="node1.html">
41
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
42
<BR>
43
<B> Next:</B> <A NAME="tex2html352"
44
  HREF="node5.html">Advanced Features</A>
45
<B> Up:</B> <A NAME="tex2html348"
46
  HREF="izpack-doc.html">izpack-doc</A>
47
<B> Previous:</B> <A NAME="tex2html342"
48
  HREF="node3.html">Getting started</A>
49
 &nbsp; <B>  <A NAME="tex2html350"
50
  HREF="node1.html">Contents</A></B>
51
<BR>
52
<BR></DIV>
53
<!--End of Navigation Panel-->
54
<!--Table of Child-Links-->
55
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
56
57
<UL CLASS="ChildLinks">
58
<LI><A NAME="tex2html353"
59
  HREF="node4.html#SECTION00410000000000000000">What You Need</A>
60
<UL>
61
<LI><A NAME="tex2html354"
62
  HREF="node4.html#SECTION00411000000000000000">Your editor</A>
63
<LI><A NAME="tex2html355"
64
  HREF="node4.html#SECTION00412000000000000000">Writing XML</A>
65
</UL>
66
<BR>
67
<LI><A NAME="tex2html356"
68
  HREF="node4.html#SECTION00420000000000000000">Variable Substitution</A>
69
<UL>
70
<LI><A NAME="tex2html357"
71
  HREF="node4.html#SECTION00421000000000000000">The Built-In Variables</A>
72
<LI><A NAME="tex2html358"
73
  HREF="node4.html#SECTION00422000000000000000">Environment Variables</A>
74
<LI><A NAME="tex2html359"
75
  HREF="node4.html#SECTION00423000000000000000">Parse Types</A>
76
</UL>
77
<BR>
78
<LI><A NAME="tex2html360"
79
  HREF="node4.html#SECTION00430000000000000000">The I<SMALL>Z</SMALL>P<SMALL>ACK</SMALL> Elements</A>
80
<UL>
81
<LI><A NAME="tex2html361"
82
  HREF="node4.html#SECTION00431000000000000000">The Root Element <TT>&lt;installation&gt;</TT></A>
83
<LI><A NAME="tex2html362"
84
  HREF="node4.html#SECTION00432000000000000000">The Information Element <TT>&lt;info&gt;</TT></A>
85
<LI><A NAME="tex2html363"
86
  HREF="node4.html#SECTION00433000000000000000">The Variables Element <TT>&lt;variables&gt;</TT></A>
87
<LI><A NAME="tex2html364"
88
  HREF="node4.html#SECTION00434000000000000000">The GUI Preferences Element <TT>&lt;guiprefs&gt;</TT></A>
89
<LI><A NAME="tex2html365"
90
  HREF="node4.html#SECTION00435000000000000000">The Localization Element <TT>&lt;locale&gt;</TT></A>
91
<LI><A NAME="tex2html366"
92
  HREF="node4.html#SECTION00436000000000000000">The Resources Element <TT>&lt;resources&gt;</TT></A>
93
<LI><A NAME="tex2html367"
94
  HREF="node4.html#SECTION00437000000000000000">The Panels Element <TT>&lt;panels&gt;</TT></A>
95
<LI><A NAME="tex2html368"
96
  HREF="node4.html#SECTION00438000000000000000">The Packs Element <TT>&lt;packs&gt;</TT></A>
97
<UL>
98
<LI><A NAME="tex2html369"
99
  HREF="node4.html#SECTION00438100000000000000">Internationalization of the PacksPanel</A>
100
<LI><A NAME="tex2html370"
101
  HREF="node4.html#SECTION00438200000000000000"><TT>&lt;description&gt;</TT> - pack description</A>
102
<LI><A NAME="tex2html371"
103
  HREF="node4.html#SECTION00438300000000000000"><TT>&lt;depends&gt;</TT> - pack dependencies</A>
104
<LI><A NAME="tex2html372"
105
  HREF="node4.html#SECTION00438400000000000000"><TT>&lt;os&gt;</TT> - OS restrictions</A>
106
<LI><A NAME="tex2html373"
107
  HREF="node4.html#SECTION00438500000000000000"><TT>&lt;updatecheck&gt;</TT></A>
108
<LI><A NAME="tex2html374"
109
  HREF="node4.html#SECTION00438600000000000000"><TT>&lt;file&gt;</TT> - add files or directories</A>
110
<UL>
111
<LI><A NAME="tex2html375"
112
  HREF="node4.html#SECTION00438610000000000000"><TT>&lt;additionaldata&gt;</TT></A>
113
</UL>
114
<LI><A NAME="tex2html376"
115
  HREF="node4.html#SECTION00438700000000000000"><TT>&lt;singlefile&gt;</TT> - add a single file</A>
116
<LI><A NAME="tex2html377"
117
  HREF="node4.html#SECTION00438800000000000000"><TT>&lt;fileset&gt;</TT>: add a fileset</A>
118
<LI><A NAME="tex2html378"
119
  HREF="node4.html#SECTION00438900000000000000"><TT>&lt;parsable&gt;</TT> - parse a file after installation</A>
120
<LI><A NAME="tex2html379"
121
  HREF="node4.html#SECTION004381000000000000000"><TT>&lt;executable&gt;</TT> - mark file executable or execute it</A>
122
<LI><A NAME="tex2html380"
123
  HREF="node4.html#SECTION004381100000000000000"><TT>&lt;os&gt;</TT> - make a file OS-dependent</A>
124
</UL>
125
<LI><A NAME="tex2html381"
126
  HREF="node4.html#SECTION00439000000000000000">The Native Element <TT>&lt;native&gt;</TT></A>
127
<UL>
128
<LI><A NAME="tex2html382"
129
  HREF="node4.html#SECTION00439100000000000000"><TT>&lt;os&gt;</TT> - make a library OS-dependent</A>
130
</UL>
131
<LI><A NAME="tex2html383"
132
  HREF="node4.html#SECTION004310000000000000000">The Jar Merging Element <TT>&lt;jar&gt;</TT></A>
133
</UL>
134
<BR>
135
<LI><A NAME="tex2html384"
136
  HREF="node4.html#SECTION00440000000000000000">The Available Panels</A>
137
<UL>
138
<LI><A NAME="tex2html385"
139
  HREF="node4.html#SECTION00441000000000000000">HelloPanel</A>
140
<LI><A NAME="tex2html386"
141
  HREF="node4.html#SECTION00442000000000000000">InfoPanel and HTMLInfoPanel</A>
142
<LI><A NAME="tex2html387"
143
  HREF="node4.html#SECTION00443000000000000000">LicencePanel and HTMLLicencePanel</A>
144
<LI><A NAME="tex2html388"
145
  HREF="node4.html#SECTION00444000000000000000">PacksPanel</A>
146
<LI><A NAME="tex2html389"
147
  HREF="node4.html#SECTION00445000000000000000">ImgPacksPanel</A>
148
<LI><A NAME="tex2html390"
149
  HREF="node4.html#SECTION00446000000000000000">TargetPanel</A>
150
<LI><A NAME="tex2html391"
151
  HREF="node4.html#SECTION00447000000000000000">InstallPanel</A>
152
<LI><A NAME="tex2html392"
153
  HREF="node4.html#SECTION00448000000000000000">XInfoPanel</A>
154
<LI><A NAME="tex2html393"
155
  HREF="node4.html#SECTION00449000000000000000">FinishPanel</A>
156
<LI><A NAME="tex2html394"
157
  HREF="node4.html#SECTION004410000000000000000">SimpleFinishPanel</A>
158
<LI><A NAME="tex2html395"
159
  HREF="node4.html#SECTION004411000000000000000">ShortcutPanel</A>
160
<LI><A NAME="tex2html396"
161
  HREF="node4.html#SECTION004412000000000000000">UserInputPanel</A>
162
<LI><A NAME="tex2html397"
163
  HREF="node4.html#SECTION004413000000000000000">CompilePanel</A>
164
<LI><A NAME="tex2html398"
165
  HREF="node4.html#SECTION004414000000000000000">ProcessPanel</A>
166
<LI><A NAME="tex2html399"
167
  HREF="node4.html#SECTION004415000000000000000">JDKPathPanel</A>
168
</UL></UL>
169
<!--End of Table of Child-Links-->
170
<HR>
171
172
<H1><A NAME="SECTION00400000000000000000">
173
Writing Installation XML Files</A>
174
</H1>
175
176
<P>
177
178
<H1><A NAME="SECTION00410000000000000000">
179
What You Need</A>
180
</H1>
181
182
<P>
183
184
<H2><A NAME="SECTION00411000000000000000">
185
Your editor</A>
186
</H2>
187
188
<P>
189
In order to write your XML installation files, you just need a plain
190
text editor. Of course it's always easier to work with color coded text,
191
so you might rather want to work with a text editor having such a
192
feature. Here is a list of free editors that work well :
193
194
<UL>
195
<LI>Jext : <TT><A NAME="tex2html19"
196
  HREF="http://www.jext.org/">http://www.jext.org/</A></TT>
197
</LI>
198
<LI>JEdit : <TT><A NAME="tex2html20"
199
  HREF="http://www.jedit.org/">http://www.jedit.org/</A></TT>
200
</LI>
201
<LI>classics like Vim and (X)Emacs.
202
</LI>
203
</UL>
204
<P>
205
206
<H2><A NAME="SECTION00412000000000000000">
207
Writing XML</A>
208
</H2>
209
210
<P>
211
Though you might not know much about XML, you have certainly heard about
212
it. If you know XML you can skip this subsection as we will briefly
213
present how to use XML.
214
<BR>
215
<P>
216
XML is a markup language, really close to HTML. If you've ever worked
217
with HTML the transition will be fast. However there are a few little
218
things to know. The markups used in XML have the following form :
219
<TT>&lt;markup&gt;</TT>. Each markup has to be closed somewhere with its
220
ending tag : <TT>&lt;/markup&gt;</TT>. Each tag can contain text and other
221
markups. If a markup does not contain anything, it is just reported once
222
: <TT>&lt;markup/&gt;</TT>. A markup can contain attributes like :
223
<TT>&lt;markup attr1="123" attr2="hello !"/&gt;</TT>. Here is a sample of a
224
valid XML structure :
225
<PRE>
226
&lt;chapter title="Chapter 1"&gt;
227
  &lt;section name="Introduction"&gt;
228
    &lt;paragraph&gt;
229
    This is the text of the paragraph number 1. It is available for the very low
230
    price of &lt;price currency="dollar"&gt;1 000 000&lt;/price&gt;.
231
    &lt;/paragraph&gt;
232
  &lt;/section&gt;
233
  &lt;section name="xxx"&gt;
234
  xxx
235
  &lt;/section&gt;
236
&lt;/chapter&gt;
237
</PRE>
238
<P>
239
You should be aware of the following common mistakes :
240
241
<UL>
242
<LI>markups <SPAN  CLASS="textbf">are</SPAN> case sensitive : <TT>&lt;markup&gt;</TT> is different
243
  from <TT>&lt;Markup&gt;</TT>.
244
245
<P>
246
</LI>
247
<LI>you <SPAN  CLASS="textbf">must</SPAN> close the markups in the same order as you create them
248
  : <TT>&lt;m1&gt;&lt;m2&gt;(...)&lt;/m2&gt;&lt;/m1&gt;</TT> is right but
249
  <TT>&lt;m1&gt;&lt;m2&gt;(...)&lt;/m1&gt;&lt;/m2&gt;</TT> is not.
250
251
<P>
252
</LI>
253
</UL>
254
255
<P>
256
Also, an XML file must start with the following header :
257
<BR><TT>&lt;?xml version="1.0" encoding="iso-8859-1 standalone="yes" ?&gt;</TT>. The only
258
thing you should modify is the encoding (put here the one your text editor saves
259
your files to). The <TT>standalone</TT> attribute is not very important for
260
us.
261
<BR>
262
<P>
263
This (brief !) introduction to XML was just meant to enable you to write
264
your installation specification. For a better introduction there are
265
plenty of books and articles/tutorials dealing with XML on the Internet,
266
in book stores, in magazines and so on.
267
<BR>
268
<P>
269
270
<H1><A NAME="SECTION00420000000000000000">
271
Variable Substitution</A>
272
</H1>
273
274
<P>
275
During the installation process IzPack can substitute variables in
276
various places with real values. Obvious targets for variable
277
substitution are resource files and launch scripts, however you will
278
notice many more places where it is more powerful to use variables
279
rather then hard coded values. Wherever variables can be used it will
280
be explained in the documentation.
281
<BR>
282
<P>
283
There are three types of variables:
284
285
<UL>
286
<LI>Built-In variables. These are implemented in IzPack and are
287
        all dynamic in nature. This means that the value of each
288
        variable depends on local conditions on the target system.
289
</LI>
290
<LI>Environment variables. These are provided by the operating system the
291
        installer is run on.
292
</LI>
293
<LI>Variables that you can define. You also define the value,
294
        which is fixed for a given installation file.
295
</LI>
296
</UL>
297
298
<P>
299
You define your own variables in the installation XML file with the
300
<TT>&lt;variable&gt;</TT> tag. How to do this is explained in detail later in
301
this chapter.
302
<BR>
303
<P>
304
<SPAN  CLASS="textbf">Please note</SPAN> that when using variables they must always appear
305
with a '<TT>$</TT>' sign as the first character, even though they are
306
not defined this way.
307
<BR>
308
<P>
309
310
<H2><A NAME="SECTION00421000000000000000">
311
The Built-In Variables</A>
312
</H2>
313
The following variables are built-in :
314
315
<UL>
316
<LI><TT>$INSTALL_PATH</TT> : the installation path on the
317
        target system, as chosen by the user
318
</LI>
319
<LI><TT>$JAVA_HOME</TT> : the Java<SUP><SMALL>TM</SMALL></SUP> virtual machine home path
320
</LI>
321
<LI><TT>$USER_HOME</TT> : the user's home directory path
322
</LI>
323
<LI><TT>$USER_NAME</TT> : the user name
324
</LI>
325
<LI><TT>$APP_NAME</TT> : the application name
326
</LI>
327
<LI><TT>$APP_URL</TT> : the application URL
328
</LI>
329
<LI><TT>$APP_VER</TT> : the application version
330
</LI>
331
<LI><TT>$ISO3_LANG</TT> : the ISO3 language code of the selected langpack.
332
</LI>
333
<LI><TT>$FILE_SEPARATOR</TT> : the file separator on the installation system
334
</LI>
335
</UL>
336
<P>
337
338
<H2><A NAME="SECTION00422000000000000000">
339
Environment Variables</A>
340
</H2>
341
Environment variables can be accessed via the syntax <TT>${ENV[variable]}</TT>.
342
The curly braces are mandatory.
343
Note that variable names are case-sensitive and usually in UPPER CASE.
344
345
<P>
346
Example: To get the value of the OS environment variable "CATALINA_HOME", use <TT>${ENV[CATALINA_HOME]}</TT>.
347
348
<P>
349
350
<H2><A NAME="SECTION00423000000000000000">
351
Parse Types</A>
352
</H2>
353
Parse types apply only when replacing variables in text files. At places
354
where it might be necessary to specify a parse type, the documentation
355
will mention this. Depending on the parse type, IzPack will handle
356
special cases -such as escaping control characters- correctly. The
357
following parse types are available:
358
359
<UL>
360
<LI><TT>plain</TT> - use this type for plain text files, where no
361
        special substitution rules apply. All variables will be
362
        replaced with their respective values as is.
363
</LI>
364
<LI><TT>javaprop</TT> - use this type if the substitution happens
365
        in a Java properties file. Individual variables might be
366
        modified to function properly within the context of Java
367
        property files.
368
</LI>
369
<LI><TT>xml</TT> - use this type if the substitution happens in
370
        a XML file. Individual variables might be modified to function
371
        properly within the context of XML files.
372
</LI>
373
<LI><TT>shell</TT> - use this type if the substitution happens in
374
        a shell script. Because shell scripts use <TT>$variable</TT>
375
        themselves, an alternative variable marker is used:
376
        <TT>%variable</TT> or <TT>%{variable}</TT>.
377
</LI>
378
</UL>
379
380
<P>
381
382
<H1><A NAME="SECTION00430000000000000000">
383
The I<SMALL>Z</SMALL>P<SMALL>ACK</SMALL> Elements</A>
384
</H1>
385
386
<P>
387
388
<SPAN  CLASS="textit">When writing your installer XML files, it's a good idea to have a look
389
at the I<SMALL>Z</SMALL>P<SMALL>ACK</SMALL> installation DTD</SPAN>.
390
<BR>
391
<P>
392
393
<H2><A NAME="SECTION00431000000000000000"></A>
394
<A NAME="root-element"></A>
395
<BR>
396
The Root Element <TT>&lt;installation&gt;</TT>
397
</H2>
398
399
<P>
400
The root element of an installation is <TT>&lt;installation&gt;</TT>. It takes
401
one required attribute : <TT>version</TT>. The attribute defines the
402
version of the XML file layout and is used by the compiler to identify
403
if it is compatible with the XML file. This should be set to <SPAN CLASS="MATH"><IMG
404
 WIDTH="29" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
405
 SRC="img4.png"
406
 ALT="$1.0$"></SPAN> for
407
the moment.
408
<BR>
409
<P>
410
411
<H2><A NAME="SECTION00432000000000000000"></A>
412
<A NAME="info-element"></A>
413
<BR>
414
The Information Element <TT>&lt;info&gt;</TT>
415
</H2>
416
417
<P>
418
This element is used to specify some general information for the installer. It
419
contains the following elements :
420
421
<UL>
422
<LI><TT>&lt;appname&gt;</TT> : the application name
423
</LI>
424
<LI><TT>&lt;appversion&gt;</TT> : the application version
425
</LI>
426
<LI><TT>&lt;appsubpath&gt;</TT> : the subpath for the default of the installation path.
427
  A variable substitution and a maskable slash-backslash conversion will be done. If this
428
  tag is not defined, the application name will be used instead.
429
</LI>
430
<LI><TT>&lt;url&gt;</TT> : the application official website url
431
</LI>
432
<LI><TT>&lt;authors&gt;</TT> : specifies the author(s) of the application. It must contain
433
  at least one <TT>&lt;author&gt;</TT> element whose attributes are :
434
435
<UL>
436
<LI><TT>name</TT> : the author's name
437
</LI>
438
<LI><TT>email</TT> : the author's email
439
440
</LI>
441
</UL>
442
</LI>
443
<LI><TT>&lt;uninstaller&gt;</TT> : specifies whether to create an uninstaller after installation, it has only the <TT>write</TT> attribute, with default value <TT>yes</TT>. If this tag is not specified, the uninstaller will still be written.
444
</LI>
445
<LI><TT>&lt;javaversion&gt;</TT> : specifies the minimum version of Java required to install your program. Values can be <TT>1.2</TT>, <TT>1.2.2</TT>, <TT>1.4</TT>, etc. The test is a lexical comparison against the <TT>java.version</TT> System property on the install machine.
446
</LI>
447
<LI><TT>&lt;webdir&gt;</TT> : Causes a ``web installer'' to be created, and specifies the URL packages are retrieved from at install time. The content of the tag must be a properly formed URL. See section&nbsp;<A HREF="node5.html#webinstaller">3.6</A> for more details.
448
449
<P>
450
</LI>
451
</UL>
452
<P>
453
Here is an example of a typical <TT>&lt;info&gt;</TT> section :
454
<BR><PRE>
455
&lt;info&gt;
456
  &lt;appname&gt;Super extractor&lt;/appname&gt;
457
  &lt;appversion&gt;2.1 beta 6&lt;/appversion&gt;
458
  &lt;appsubpath&gt;myCompany/SExtractor&lt;/appsubpath&gt;
459
  &lt;url&gt;http://www.superextractor.com/&lt;/url&gt;
460
  &lt;authors&gt;
461
    &lt;author name="John John Doo" email="jjd@jjd-mail.com"/&gt;
462
    &lt;author name="El Goyo" email="goyoman@mymail.org"/&gt;
463
  &lt;/authors&gt;
464
  &lt;javaversion&gt;1.2&lt;/javaversion&gt;
465
&lt;/info&gt;
466
</PRE>
467
<P>
468
469
<H2><A NAME="SECTION00433000000000000000"></A>
470
<A NAME="variables-element"></A>
471
<BR>
472
The Variables Element <TT>&lt;variables&gt;</TT>
473
</H2>
474
475
<P>
476
This element allows you to define variables for the variables
477
substitution system. Some variables are built-in, such as
478
<TT>$INSTALL_PATH</TT> (which is the installation path chosen by the
479
user). When you define a set of variables, you just have to place as
480
many <TT>&lt;variable&gt;</TT> tags in the file as needed. If you define a
481
variable named <TT>VERSION</TT> you need to type $VERSION in the files
482
to parse. The variable substitutor will then replace it with the correct
483
value. One <TT>&lt;variable&gt;</TT> tag take the following attributes :
484
485
<UL>
486
<LI><TT>name</TT> : the variable name
487
</LI>
488
<LI><TT>value</TT> : the variable value
489
490
<P>
491
</LI>
492
</UL>
493
<P>
494
Here's a sample <TT>&lt;variables&gt;</TT> section :
495
<BR><PRE>
496
&lt;variables&gt;
497
  &lt;variable name="app-version" value="1.4"/&gt;
498
  &lt;variable name="released-on" value="08/03/2002"/&gt;
499
&lt;/variables&gt;
500
</PRE>
501
<P>
502
503
<H2><A NAME="SECTION00434000000000000000"></A>
504
<A NAME="guiprefs-element"></A>
505
<BR>
506
The GUI Preferences Element <TT>&lt;guiprefs&gt;</TT>
507
</H2>
508
509
<P>
510
This element allows you to set the behavior of your installer GUI. This
511
information will not have any effect on the command-line installers that will be
512
available in future versions of I<SMALL>Z</SMALL>P<SMALL>ACK</SMALL> . The arguments to specify are :
513
514
<UL>
515
<LI><TT>resizable</TT> : takes <TT>yes</TT> or <TT>no</TT> and indicates
516
  whether the window size can be changed or not.
517
</LI>
518
<LI><TT>width</TT> : sets the initial window width
519
</LI>
520
<LI><TT>height</TT> : sets the initial window height.
521
522
<P>
523
</LI>
524
</UL>
525
<P>
526
Here's a sample :
527
<PRE>
528
&lt;guiprefs resizable="no" width="800" height="600"/&gt;
529
</PRE>
530
<P>
531
Starting from IzPack 3.6, the look and feel can be specified in this section on
532
a per-OS basis. For instance you can use the native look and feels on Win32 and
533
OS X but use a third-party one on Unix-like platforms. To do that, you have to
534
add some children to the <TT>guiprefs</TT> tag:
535
536
<UL>
537
<LI><TT>laf</TT>: the tag that specifies a look and feel. It has a
538
  <TT>name</TT> parameter that defines the look and feel name.
539
</LI>
540
<LI>Each <TT>laf</TT> element needs at least one <TT>os</TT> tag, specified
541
  like in the other parts of the specification that support this tag.
542
</LI>
543
<LI>Like you can add <TT>os</TT> elements, you can add any number of
544
  <TT>param</TT> elements to customize a look and feel. A <TT>param</TT>
545
  elements has two attribues: <TT>name</TT> and <TT>value</TT>.
546
547
<P>
548
</LI>
549
</UL>
550
<P>
551
The available look and feels are:
552
553
<UL>
554
<LI>Kunststoff: <TT>kunststoff</TT>
555
</LI>
556
<LI>Liquid: <TT>liquid</TT>
557
</LI>
558
<LI>Metouia: <TT>metouia</TT>
559
</LI>
560
<LI>JGoodies Looks: <TT>looks</TT>
561
562
<P>
563
</LI>
564
</UL>
565
<P>
566
If you don't specify a look and feel for a particular operating system, then the
567
default native one will be used: Windows on Windows, Aqua on Mac OS X and Metal
568
on the Unix-like variants.
569
<BR>
570
<P>
571
The <SPAN  CLASS="textit">Liquid Look and Feel</SPAN> supports the following parameters:
572
573
<UL>
574
<LI><TT>decorate.frames</TT>: <TT>yes</TT> means that it will render the
575
  frames in Liquid style
576
</LI>
577
<LI><TT>decorate.dialogs</TT>: <TT>yes</TT> means that it will render the
578
  dialogs in Liquid style
579
580
<P>
581
</LI>
582
</UL>
583
<P>
584
The <SPAN  CLASS="textit">JGoodies Looks</SPAN> look and feel can be specified by using the
585
<TT>variant</TT> parameters. The values can be one of:
586
587
<UL>
588
<LI><TT>extwin</TT>: use the Windows Extension look
589
</LI>
590
<LI><TT>plastic</TT>: use the basic Plastic look
591
</LI>
592
<LI><TT>plastic3D</TT>: use the Plastic 3D look
593
</LI>
594
<LI><TT>plasticXP</TT>: use the Plastic XP look (default).
595
596
<P>
597
</LI>
598
</UL>
599
<P>
600
Here is a small sample:
601
<PRE>
602
&lt;guiprefs height="600" resizable="yes" width="800"&gt;
603
    &lt;laf name="metouia"&gt;
604
        &lt;os family="unix" /&gt;
605
    &lt;/laf&gt;
606
    &lt;laf name="looks"&gt;
607
        &lt;os family="windows" /&gt;
608
        &lt;param name="variant" value="extwin" /&gt;
609
    &lt;/laf&gt;
610
&lt;/guiprefs&gt;
611
</PRE>
612
613
<P>
614
Starting from IzPack 3.7, some characteristics can be customized with the
615
<TT>&lt;modifier&gt;</TT> tag which contains following attributes:
616
617
<UL>
618
<LI><TT>key</TT>: a well defined key of the characteristic which should
619
  be changed.
620
</LI>
621
<LI><TT>value</TT> the value for the key.
622
</LI>
623
</UL> Following key value pairs are defined:
624
625
<UL>
626
<LI><TT>useButtonIcons</TT>: possible are "yes" or "no". Default is "yes".
627
If it is set to "no", all buttons which are created via the ButtonFactory
628
contains no icon also a icon id was submitted. Directly created buttons are
629
not affected.
630
</LI>
631
<LI><TT>useLabelIcons</TT>: possible are "yes" or "no". Default is "yes".
632
If it is set to "no", all labels which are created via the LabelFactory
633
contains no icon also a icon id was submitted. Directly created labels are
634
not affected.
635
</LI>
636
</UL>
637
<P>
638
639
<H2><A NAME="SECTION00435000000000000000"></A>
640
<A NAME="localization-element"></A>
641
<BR>
642
The Localization Element <TT>&lt;locale&gt;</TT>
643
</H2>
644
645
<P>
646
This element is used to specify the language packs (langpacks) that you want to
647
use for your installer. You must set one <TT>&lt;langpack&gt;</TT> markup per
648
language. This markup takes the <TT>iso3</TT> parameter which specifies the iso3
649
language code.
650
<BR>
651
<P>
652
Here's a sample :
653
<BR><PRE>
654
&lt;locale&gt;
655
  &lt;langpack iso3="eng"/&gt;
656
  &lt;langpack iso3="fra"/&gt;
657
  &lt;langpack iso3="spa"/&gt;
658
&lt;/locale&gt;
659
</PRE><SMALL CLASS="FOOTNOTESIZE"> </SMALL>
660
<P>
661
The supported ISO3 codes are :
662
<DIV ALIGN="CENTER">
663
<TABLE CELLPADDING=3 BORDER="1">
664
<TR><TH ALIGN="LEFT"><SPAN  CLASS="textit">ISO3 code</SPAN></TH>
665
<TH ALIGN="LEFT"><SPAN  CLASS="textit">Language</SPAN></TH>
666
</TR>
667
<TR><TD ALIGN="LEFT">cat</TD>
668
<TD ALIGN="LEFT">Catalunyan</TD>
669
</TR>
670
<TR><TD ALIGN="LEFT">chn</TD>
671
<TD ALIGN="LEFT">Chinese</TD>
672
</TR>
673
<TR><TD ALIGN="LEFT">cze</TD>
674
<TD ALIGN="LEFT">Czech</TD>
675
</TR>
676
<TR><TD ALIGN="LEFT">dan</TD>
677
<TD ALIGN="LEFT">Danish</TD>
678
</TR>
679
<TR><TD ALIGN="LEFT">deu</TD>
680
<TD ALIGN="LEFT">German</TD>
681
</TR>
682
<TR><TD ALIGN="LEFT">eng</TD>
683
<TD ALIGN="LEFT">English</TD>
684
</TR>
685
<TR><TD ALIGN="LEFT">fin</TD>
686
<TD ALIGN="LEFT">Finnish</TD>
687
</TR>
688
<TR><TD ALIGN="LEFT">fra</TD>
689
<TD ALIGN="LEFT">French</TD>
690
</TR>
691
<TR><TD ALIGN="LEFT">hun</TD>
692
<TD ALIGN="LEFT">Hungarian</TD>
693
</TR>
694
<TR><TD ALIGN="LEFT">ita</TD>
695
<TD ALIGN="LEFT">Italian</TD>
696
</TR>
697
<TR><TD ALIGN="LEFT">jpn</TD>
698
<TD ALIGN="LEFT">Japanese</TD>
699
</TR>
700
<TR><TD ALIGN="LEFT">mys</TD>
701
<TD ALIGN="LEFT">Malaysian</TD>
702
</TR>
703
<TR><TD ALIGN="LEFT">ned</TD>
704
<TD ALIGN="LEFT">Nederlands</TD>
705
</TR>
706
<TR><TD ALIGN="LEFT">nor</TD>
707
<TD ALIGN="LEFT">Norwegian</TD>
708
</TR>
709
<TR><TD ALIGN="LEFT">pol</TD>
710
<TD ALIGN="LEFT">Polnish</TD>
711
</TR>
712
<TR><TD ALIGN="LEFT">por</TD>
713
<TD ALIGN="LEFT">Portuguese (Brazilian)</TD>
714
</TR>
715
<TR><TD ALIGN="LEFT">rom</TD>
716
<TD ALIGN="LEFT">Romanian</TD>
717
</TR>
718
<TR><TD ALIGN="LEFT">rus</TD>
719
<TD ALIGN="LEFT">Russian</TD>
720
</TR>
721
<TR><TD ALIGN="LEFT">scg</TD>
722
<TD ALIGN="LEFT">Serbian</TD>
723
</TR>
724
<TR><TD ALIGN="LEFT">spa</TD>
725
<TD ALIGN="LEFT">Spanish</TD>
726
</TR>
727
<TR><TD ALIGN="LEFT">svk</TD>
728
<TD ALIGN="LEFT">Slovakian</TD>
729
</TR>
730
<TR><TD ALIGN="LEFT">swe</TD>
731
<TD ALIGN="LEFT">Swedish</TD>
732
</TR>
733
<TR><TD ALIGN="LEFT">ukr</TD>
734
<TD ALIGN="LEFT">Ukrainian</TD>
735
</TR>
736
</TABLE>
737
</DIV>
738
739
<P>
740
741
<H2><A NAME="SECTION00436000000000000000"></A>
742
<A NAME="resources-element"></A>
743
<BR>
744
The Resources Element <TT>&lt;resources&gt;</TT>
745
</H2>
746
747
<P>
748
Several panels, such as the license panel and the shortcut panel,
749
require additional data to perform their task. This data is supplied
750
in the form of resources. This section describes how to specify
751
them. Take a look at each panel description to see if it might need
752
any resources. Currently, no checks are made to ensure resources
753
needed by any panel have been included. The <TT>&lt;resources&gt;</TT>
754
element is not required, and no <TT>&lt;res&gt;</TT> elements are required
755
within.
756
<BR>
757
<P>
758
You have to set one <TT>&lt;res&gt;</TT> markup for each resource. Here are
759
the attributes to specify :
760
761
<UL>
762
<LI><TT>src</TT> : the path to the resource file which can be named freely
763
  of course (for instance <TT>my-picture.jpg</TT>).
764
</LI>
765
<LI><TT>id</TT> : the resource id, depending on the needs of a particular panel
766
</LI>
767
<LI><TT>parse</TT> : takes <TT>yes</TT> or <TT>no</TT> (default is
768
  <TT>no</TT>) - used to specify whether the resource must be parsed at the
769
  installer compilation time. For instance you could set the application version
770
  in a readme file used by <TT>InfoPanel</TT>.
771
</LI>
772
<LI><TT>type</TT> : specifies the parse type. This makes sense only for a text
773
  resource  - the default is <TT>plain</TT>, other values are <TT>javaprop,
774
  xml</TT> (Java properties file and XML files)
775
</LI>
776
<LI><TT>encoding</TT> : specifies the resource encoding if the receiver needs
777
  to know. This makes sense only for a text resource.
778
779
<P>
780
</LI>
781
</UL>
782
<P>
783
Here's a sample :
784
<PRE>
785
&lt;resources&gt;
786
  &lt;res id="InfoPanel.info" src="doc/readme.txt" parse="yes"/&gt;
787
  &lt;res id="LicencePanel.licence" src="legal/License.txt"/&gt;
788
&lt;/resources&gt;
789
</PRE>
790
<P>
791
792
<H2><A NAME="SECTION00437000000000000000"></A>
793
<A NAME="panels-element"></A>
794
<BR>
795
The Panels Element <TT>&lt;panels&gt;</TT>
796
</H2>
797
798
<P>
799
Here you tell the compiler which panels you want to use. They will
800
appear in the installer in the order in which they are listed in your
801
XML installation file. Take a look at the different panels in order to
802
find the ones you need. The <TT>&lt;panel&gt;</TT> markup takes a single
803
attribute <TT>classname</TT> which is the classname of the panel.
804
<BR>
805
<P>
806
Here's a sample :
807
<PRE>
808
&lt;panels&gt;
809
  &lt;panel classname="HelloPanel"/&gt;
810
  &lt;panel classname="LicencePanel"/&gt;
811
  &lt;panel classname="TargetPanel"/&gt;
812
  &lt;panel classname="InstallPanel"/&gt;
813
  &lt;panel classname="FinishPanel"/&gt;
814
&lt;/panels&gt;
815
</PRE>
816
<P>
817
818
<H2><A NAME="SECTION00438000000000000000"></A>
819
<A NAME="packs-element"></A>
820
<BR>
821
The Packs Element <TT>&lt;packs&gt;</TT>
822
</H2>
823
824
<P>
825
This is a crucial section as it is used to specify the files that need
826
to be installed. The <TT>&lt;packs&gt;</TT> section consists of several
827
<TT>&lt;pack&gt;</TT> tags.
828
829
<P>
830
The <TT>&lt;pack&gt;</TT> takes the following attributes :
831
832
<UL>
833
<LI><TT>name</TT>: the pack name
834
</LI>
835
<LI><TT>required</TT>: takes <TT>yes</TT> or <TT>no</TT> and specifies
836
    whether the pack is optional or not.
837
</LI>
838
<LI><TT>os</TT>: optional attribute that lets you make the pack targeted
839
    to a specific <SPAN  CLASS="textsl">operating system</SPAN>, for instance <TT>unix</TT>,
840
    <TT>mac</TT> and so on.
841
</LI>
842
<LI><TT>preselected</TT>: optional attribute that lets you choose whether
843
    the pack is by default selected for installation or not. Possible values
844
    are <TT>yes</TT> and <TT>no</TT>. A pack which is not preselected needs to
845
    be explicitly selected by the user during installation to get installed.
846
</LI>
847
<LI><TT>loose</TT>: can be used so that the files are not located in the
848
    installer Jar. The possible values are <TT>true</TT> or <TT>false</TT>, the
849
    default beeing <TT>false</TT>. The author of this feature needed to put his
850
    application on a CD so that the users could run it directly from this media.
851
    However, he also wanted to offer them the possibility to install the
852
    software localy. Enabling this feature will make IzPack take the files on
853
    disk instead of from the installer. <SPAN  CLASS="textit">Please make sure that your relative
854
    files paths are correct !</SPAN>
855
</LI>
856
<LI><TT>id</TT>: this attribute is used to give a unique id to the pack to
857
    be used for internationalization.
858
859
</LI>
860
</UL>
861
862
<P>
863
864
<H3><A NAME="SECTION00438100000000000000">
865
Internationalization of the PacksPanel</A>
866
</H3>
867
In order to provide internationalization for the PacksPanel, so that your users can
868
be presented with a different name and description for each language you support,
869
 you have to create a file named <TT>packsLang.xml_xyz</TT> where <TT>xyz</TT>
870
 is the ISO3 code of the language in lowercase. Please be aware that case is significant.
871
 This file has to be inserted in the resources section of <TT>install.xml</TT> with the
872
 <TT>id</TT> and <TT>src</TT> attributes set at the name of the file. The format of
873
 these files is identical with the distribution langpack files located at
874
 <TT>$IZPACK_HOME/install/langpacks/installer</TT>. For the name of the panel you just
875
 use the pack <TT>id</TT> as the txt <TT>id</TT>. For the description you use the pack
876
 <TT>id</TT> suffixed with <TT>'.description'</TT>.
877
878
<P>
879
The following sections describe the tags available for a <TT>&lt;pack&gt;</TT> section.
880
881
<P>
882
883
<H3><A NAME="SECTION00438200000000000000">
884
<TT>&lt;description&gt;</TT> - pack description</A>
885
</H3>
886
887
<P>
888
The contents of the <TT>&lt;description&gt;</TT> tag describe the pack contents.
889
This description is displayed if the user highlights the pack during
890
installation.
891
892
<P>
893
894
<H3><A NAME="SECTION00438300000000000000">
895
<TT>&lt;depends&gt;</TT> - pack dependencies</A>
896
</H3>
897
This can be used to make this pack selectable only to be installed only if some other is
898
selected to be installed. The pack can depend on more than one by specifying more than one
899
<TT>&lt;depends&gt;</TT> elements.
900
<BR>
901
Circular depedencies are not supported and the compiler reports an error if one occurs.
902
903
<P>
904
This tag takes the following attribute:
905
906
<UL>
907
<LI><TT>packname</TT>: The name of the pack that it depends on
908
</LI>
909
</UL>
910
911
<P>
912
913
<H3><A NAME="SECTION00438400000000000000">
914
<TT>&lt;os&gt;</TT> - OS restrictions</A>
915
</H3>
916
917
<P>
918
It is possible to restrict a panel to a certain list of operating systems. This
919
tag takes the following attributes:
920
921
<UL>
922
<LI><TT>family</TT>: unix, windows or mac
923
</LI>
924
<LI><TT>name</TT>: the exact OS name (ie Windows, Linux, ...)
925
</LI>
926
<LI><TT>version</TT>: the exact OS version (see the JVM <TT>os.version</TT> property)
927
</LI>
928
<LI><TT>arch</TT>: the machine architecture (see the JVM <TT>os.arch</TT> property).
929
</LI>
930
</UL>
931
932
<P>
933
934
<H3><A NAME="SECTION00438500000000000000">
935
<TT>&lt;updatecheck&gt;</TT></A>
936
</H3>
937
938
<P>
939
This feature can update an already installed package, therefore removing
940
superfluous files after installation. Here's how this feature author (Tino Schwarze)
941
described it on the IzPack development mailing-list:
942
<BLOCKQUOTE>
943
Each pack can now
944
specify an <TT>&lt;updatecheck&gt;</TT> tag. It supports a subset of ant fileset
945
syntax, e.g.:
946
</BLOCKQUOTE><PRE>
947
&lt;updatecheck&gt;
948
  &lt;include name="lib/**" /&gt;
949
  &lt;exclude name="config/local/** /&gt;
950
&lt;/updatecheck&gt;
951
</PRE>
952
<P>
953
<BLOCKQUOTE>If the paths are relative, they will be matched relative to
954
<TT>$INSTALL_PATH</TT>. Update checks are only enabled if at least one
955
<TT>&lt;include&gt;</TT> is specified. See
956
<TT>com.izforge.izpack.installer.Unpacker</TT> for details.
957
958
</BLOCKQUOTE>
959
960
<P>
961
962
<H3><A NAME="SECTION00438600000000000000"></A><A NAME="tag:file"></A>
963
<BR>
964
<TT>&lt;file&gt;</TT> - add files or directories
965
</H3>
966
967
<P>
968
The <TT>&lt;file&gt;</TT> tag specifies a file (a directory is a file too) to
969
include into the pack. It takes the following attributes:
970
971
<P>
972
973
<UL>
974
<LI><TT>src</TT>: the file location (relative path) - if this is a
975
  directory its content will be added recursively
976
977
<P>
978
</LI>
979
<LI><TT>targetdir</TT>: the destination directory, could be something like
980
  <TT>$INSTALL_PATH/subdirX</TT>
981
982
<P>
983
</LI>
984
<LI><TT>os</TT>: can optionally specify a target operating system
985
  (<TT>unix, windows, mac</TT>) - this means that the file will only be
986
  installed on its target operating system
987
988
<P>
989
</LI>
990
<LI><TT>override</TT>: if <TT>true</TT> then if the file is already
991
  installed, it will be overwritten. Alternative values: <TT>asktrue</TT> and
992
  <TT>askfalse</TT> - ask the user what to do and supply default value for
993
  non-interactive use. Another possible values is <TT>update</TT>. It means
994
  that the new file is only installed if it's modification time is newer than
995
  the modification time of the already existing file (note that this is not a
996
  reliable mechanism for updates - you cannot detect whether a file was
997
  altered after installation this way.) By default it is set to <TT>update</TT>.
998
999
<P>
1000
</LI>
1001
</UL>
1002
<H4><A NAME="SECTION00438610000000000000"></A><A NAME="tag:additionaldata"></A>
1003
<BR>
1004
<TT>&lt;additionaldata&gt;</TT>
1005
</H4>
1006
1007
<P>
1008
This tag can also be specified in order to pass additional data
1009
related to a file tag for customizing.
1010
1011
<P>
1012
1013
<UL>
1014
<LI><TT>&lt;key&gt;</TT>: key to identify the data
1015
</LI>
1016
<LI><TT>&lt;value&gt;</TT>: value which can be used by a custom
1017
  action
1018
1019
<P>
1020
</LI>
1021
</UL>
1022
1023
<P>
1024
1025
<H3><A NAME="SECTION00438700000000000000"></A><A NAME="tag:singlefile"></A>
1026
<BR>
1027
<TT>&lt;singlefile&gt;</TT> - add a single file
1028
</H3>
1029
1030
<P>
1031
Specifies a single file to include. The difference to <TT>&lt;file&gt;</TT> is that
1032
this tag allows the file to be renamed, therefore it has a
1033
<TT>target</TT> attribute instead of <TT>targetdir</TT>.
1034
1035
<P>
1036
1037
<UL>
1038
<LI><TT>src</TT>: the file location (relative path)
1039
1040
<P>
1041
</LI>
1042
<LI><TT>target</TT>: the destination file name, could be something
1043
  like <TT>$INSTALL_PATH/subdirX/fileY</TT>
1044
1045
<P>
1046
</LI>
1047
<LI><TT>os</TT>: can optionally specify a target operating system
1048
  (<TT>unix, windows, mac</TT>) - this means that the file will only be
1049
  installed on its target operating system
1050
1051
<P>
1052
</LI>
1053
<LI><TT>override</TT>: see <TT>&lt;file&gt;</TT> (<A HREF="#tag:file">2.3.8</A>) for description
1054
1055
<P>
1056
</LI>
1057
</UL>
1058
A <TT>&lt;additionaldata&gt;</TT> (<A HREF="#tag:additionaldata">2.3.8</A>) tag can
1059
also be specified for customizing.
1060
1061
<P>
1062
1063
<H3><A NAME="SECTION00438800000000000000"></A><A NAME="tag:fileset"></A>
1064
<BR>
1065
<TT>&lt;fileset&gt;</TT>: add a fileset
1066
</H3>
1067
1068
<P>
1069
The <TT>&lt;fileset&gt;</TT> tag allows files to be specified using the powerful
1070
Jakarta Ant set syntax. It takes the following parameters:
1071
1072
<P>
1073
1074
<UL>
1075
<LI><TT>dir</TT>: the base directory for the fileset (relative path)
1076
1077
<P>
1078
</LI>
1079
<LI><TT>targetdir</TT>: the destination path, works like for
1080
  <TT>&lt;file&gt;</TT>
1081
1082
<P>
1083
</LI>
1084
<LI><TT>casesensitive</TT>: optionally lets you specify if the names
1085
  are case-sensitive or not - takes <TT>yes</TT> or <TT>no</TT>
1086
1087
<P>
1088
</LI>
1089
<LI><TT>defaultexcludes</TT>: optionally lets you specify if the default
1090
  excludes will be used - takes <TT>yes</TT> or <TT>no</TT>.
1091
1092
<P>
1093
</LI>
1094
<LI><TT>os</TT>: specifies the operating system, works like for
1095
  <TT>&lt;file&gt;</TT>
1096
1097
<P>
1098
</LI>
1099
<LI><TT>override</TT>: see <TT>&lt;file&gt;</TT> for description
1100
1101
<P>
1102
</LI>
1103
<LI><TT>includes</TT>: comma- or space-separated list of patterns of
1104
  files that must be included; all files are included when omitted.
1105
  This is an alternative for multiple include tags.
1106
1107
<P>
1108
</LI>
1109
<LI><TT>excludes</TT>: comma- or space-separated list of patterns of
1110
  files that must be excluded; no files (except default excludes) are
1111
  excluded when omitted. This is an alternative for multiple exclude tags.
1112
1113
<P>
1114
</LI>
1115
</UL>
1116
1117
<P>
1118
You specify the files with  <TT>&lt;include&gt;</TT> and <TT>&lt;exclude&gt;</TT> tags
1119
that take the <TT>name</TT> parameter to specify the Ant-like pattern :
1120
1121
<UL>
1122
<LI><TT>**</TT> : means any subdirectory
1123
</LI>
1124
<LI><TT>*</TT> : used as a wildcard.
1125
</LI>
1126
</UL>
1127
Here are some examples of Ant patterns :
1128
1129
<UL>
1130
<LI><TT>&lt;include name="lib"/&gt;</TT> : will include <TT>lib</TT> and the
1131
  subdirectories of <TT>lib</TT>
1132
1133
<P>
1134
</LI>
1135
<LI><TT>&lt;exclude name="**/*.java"/&gt;</TT> : will exclude any file in any
1136
  directory starting from the base path ending by <TT>.java</TT>
1137
1138
<P>
1139
</LI>
1140
<LI><TT>&lt;include name="lib/*.jar"/&gt;</TT> : will include all the files
1141
  ending by <TT>.jar</TT> in <TT>lib</TT>
1142
1143
<P>
1144
</LI>
1145
<LI><TT>&lt;exclude name="lib/**/*FOO*"/&gt;</TT> : will exclude any file in
1146
  any subdirectory starting from <TT>lib</TT> whose name contains
1147
  <TT>FOO</TT>.
1148
1149
<P>
1150
</LI>
1151
</UL>
1152
1153
<P>
1154
There area set of definitions that are excluded by default file-sets,
1155
just as in Ant. IzPack defaults to the Ant list of default
1156
excludes. There is currently no equivalent to the &lt;defaultexcludes&gt;
1157
task. Default excludes are:
1158
<PRE>
1159
     **/*\~{}
1160
     **/\#*\#
1161
     **/.\#*
1162
     **/%*%
1163
     **/.\_*
1164
     **/CVS
1165
     **/CVS/**
1166
     **/.cvsignore
1167
     **/SCCS
1168
     **/SCCS/**
1169
     **/vssver.scc
1170
     **/.svn
1171
     **/.svn/**
1172
     **/.DS\_Store
1173
</PRE>A <TT>&lt;additionaldata&gt;</TT> (<A HREF="#tag:additionaldata">2.3.8</A>)
1174
tag can also be specified for customizing.
1175
1176
<P>
1177
1178
<H3><A NAME="SECTION00438900000000000000">
1179
<TT>&lt;parsable&gt;</TT> - parse a file after installation</A>
1180
</H3>
1181
1182
<P>
1183
Files specified by <TT>&lt;parsable&gt;</TT> are parsed after installation and may
1184
have variables substituted.
1185
1186
<P>
1187
1188
<UL>
1189
<LI><TT>targetfile</TT> : the file to parse, could be something like
1190
<BR>  <TT>$INSTALL_PATH/bin/launch-script.sh</TT>
1191
<BR>  <A NAME="tag:slashMasking"></A>A slash will be changed to the system dependant path separator (e.g. to
1192
  a backslash on Windows) only if no backslash masks the slash.
1193
1194
<P>
1195
</LI>
1196
<LI><TT>type</TT> : specifies the type (same as for the resources) -
1197
  the default is <TT>plain</TT>
1198
1199
<P>
1200
</LI>
1201
<LI><TT>encoding</TT> : specifies the file encoding
1202
1203
<P>
1204
</LI>
1205
<LI><TT>os</TT>: specifies the operating system, works like for
1206
  <TT>&lt;file&gt;</TT>
1207
1208
<P>
1209
</LI>
1210
</UL>
1211
<P>
1212
1213
<H3><A NAME="SECTION004381000000000000000">
1214
<TT>&lt;executable&gt;</TT> - mark file executable or execute it</A>
1215
</H3>
1216
1217
<P>
1218
The <TT>&lt;executable&gt;</TT> tag is a very useful thing if you need to execute
1219
something during the installation process. It can also be used to set the
1220
executable flag on Unix-like systems. Here are the attributes :
1221
1222
<P>
1223
1224
<UL>
1225
<LI><TT>targetfile</TT> : the file to run, could be something like
1226
<BR>  <TT>$INSTALL_PATH/bin/launch-script.sh</TT>
1227
<BR>
1228
Slashes are handled special (see attribute
1229
  <TT>targetfile</TT> of tag <TT>&lt;parsable&gt;</TT><A HREF="#tag:slashMasking">2.3.8</A>).
1230
1231
<P>
1232
</LI>
1233
<LI><TT>class</TT> : If the executable is a jar file, this is the
1234
  class to run for a Java<SUP><SMALL>TM</SMALL></SUP> program
1235
1236
<P>
1237
</LI>
1238
<LI><TT>type</TT> : <TT>bin</TT> or <TT>jar</TT> (the default is
1239
  <TT>bin</TT>)
1240
1241
<P>
1242
</LI>
1243
<LI><TT>stage</TT> : specifies when to launch : <TT>postinstall</TT>
1244
  is just after the installation is done and the default value,
1245
  <TT>never</TT> will never launch it (useful to set the +x flag on Unix).
1246
  <TT>uninstall</TT> will launch the executable when the application
1247
  is uninstalled. The executable is executed before any files are deleted.
1248
1249
<P>
1250
</LI>
1251
<LI><TT>failure</TT> : specifies what to do when an error occurs :
1252
  <TT>abort</TT> will abort the installation process, <TT>ask</TT> (default)
1253
  will ask the user what to do and <TT>warn</TT> will just tell the user
1254
  that something is wrong
1255
1256
<P>
1257
</LI>
1258
<LI><TT>os</TT>: specifies the operating system, works like for
1259
  <TT>&lt;file&gt;</TT>
1260
1261
<P>
1262
</LI>
1263
<LI><TT>keep</TT> : specifies whether the file will be kept after
1264
  execution. The default is to delete the file after is has been executed.
1265
  This can be changed by specifying <TT>keep="true"</TT>.
1266
1267
<P>
1268
</LI>
1269
</UL>
1270
A <TT>&lt;args&gt;</TT> tag can also be specified in order to pass
1271
arguments to the executable:
1272
1273
<UL>
1274
<LI><TT>&lt;arg&gt;</TT>: passes the argument specified in the
1275
  <TT>value</TT> attribute.   Slashes are handled special (see attribute
1276
  <TT>targetfile</TT> of tag <TT>&lt;parsable&gt;</TT><A HREF="#tag:slashMasking">2.3.8</A>).
1277
1278
<P>
1279
</LI>
1280
</UL>
1281
1282
<P>
1283
1284
<H3><A NAME="SECTION004381100000000000000"></A><A NAME="tag:os"></A>
1285
<BR>
1286
<TT>&lt;os&gt;</TT> - make a file OS-dependent
1287
</H3>
1288
1289
<P>
1290
The <TT>&lt;os&gt;</TT> tag can be used inside the <TT>&lt;file&gt;</TT>,
1291
<TT>&lt;fileset&gt;</TT>, <TT>&lt;singlefile&gt;</TT>, <TT>&lt;parsable&gt;</TT>,
1292
<TT>&lt;executable&gt;</TT> tags to restrict it's effect to a specific
1293
operating system family, architecture or version:
1294
1295
<P>
1296
1297
<UL>
1298
<LI><TT>family</TT>: <TT>unix, windows, mac</TT> to specify the
1299
  operating system family
1300
</LI>
1301
<LI><TT>name</TT>: the operating system name
1302
</LI>
1303
<LI><TT>version</TT>: the operating system version
1304
</LI>
1305
<LI><TT>arch</TT>: the operating system architecture (for instance the
1306
  Linux kernel can run on i386, sparc, and so on)
1307
1308
<P>
1309
</LI>
1310
</UL>
1311
1312
<P>
1313
Here's an example installation file :
1314
<PRE>
1315
&lt;packs&gt;
1316
    &lt;!-- The core files --&gt;
1317
    &lt;pack name="Core" required="yes"&gt;
1318
        &lt;description&gt;The IzPack core files.&lt;/description&gt;
1319
        &lt;file targetdir="$INSTALL_PATH" src="bin"/&gt;
1320
        &lt;file targetdir="$INSTALL_PATH" src="lib"/&gt;
1321
        &lt;file targetdir="$INSTALL_PATH" src="legal"/&gt;
1322
        &lt;file targetdir="$INSTALL_PATH" src="Readme.txt"/&gt;
1323
        &lt;file targetdir="$INSTALL_PATH" src="Versions.txt"/&gt;
1324
        &lt;file targetdir="$INSTALL_PATH" src="Thanks.txt"/&gt;
1325
        &lt;parsable targetfile="$INSTALL_PATH/bin/izpack-fe"/&gt;
1326
        &lt;parsable targetfile="$INSTALL_PATH/bin/izpack-fe.bat"/&gt;
1327
        &lt;parsable targetfile="$INSTALL_PATH/bin/compile"/&gt;
1328
        &lt;parsable targetfile="$INSTALL_PATH/bin/compile.bat"/&gt;
1329
        &lt;executable targetfile="$INSTALL_PATH/bin/compile" stage="never"/&gt;
1330
        &lt;executable targetfile="$INSTALL_PATH/bin/izpack-fe" stage="never"/&gt;
1331
    &lt;/pack&gt;
1332
1333
    &lt;!-- The documentation (1 directory) --&gt;
1334
    &lt;pack name="Documentation" required="no"&gt;
1335
        &lt;description&gt;The IzPack documentation (HTML and PDF).&lt;/description&gt;
1336
        &lt;file targetdir="$INSTALL_PATH" src="doc"/&gt;
1337
    &lt;/pack&gt;
1338
&lt;/packs&gt;
1339
</PRE>
1340
<P>
1341
1342
<H2><A NAME="SECTION00439000000000000000"></A>
1343
<A NAME="native-element"></A>
1344
<BR>
1345
The Native Element <TT>&lt;native&gt;</TT>
1346
</H2>
1347
1348
<P>
1349
Use this if you want to use a feature that requires a native library.
1350
The native libraries are placed under <TT>bin/native/..</TT>. There are 2
1351
kinds of native libraries : the I<SMALL>Z</SMALL>P<SMALL>ACK</SMALL> libraries and the third-party
1352
ones. The IzPack libraries are located at <TT>bin/native/izpack</TT>,
1353
you can place your own libraries at <TT>bin/native/3rdparty</TT>.
1354
It is possible to place a native library also into the uninstaller.
1355
It is useable from CustomActions (<A HREF="node9.html#cha:customactions">7</A>). If one or
1356
more are referenced for it, the needed support classes are automatically
1357
placed into the uninstaller. To place it only on operating systems
1358
for which they are build, it is possible to define an OS
1359
restriction. This restriction will only be performed for the
1360
uninstaller. The markup takes the following attributes :
1361
<UL>
1362
<LI><TT>type</TT> : <TT>izpack</TT> or <TT>3rdparty</TT>
1363
</LI>
1364
<LI><TT>name</TT> : the library filename
1365
</LI>
1366
<LI><TT>stage</TT>: stage where to use the library
1367
  (install|uninstall|both)
1368
1369
<P>
1370
</LI>
1371
</UL>
1372
<H3><A NAME="SECTION00439100000000000000">
1373
<TT>&lt;os&gt;</TT> - make a library OS-dependent</A>
1374
</H3>
1375
1376
<P>
1377
The <TT>&lt;os&gt;</TT> tag can be used to restrict the inclusion into
1378
the uninstaller to a specific operating system family,
1379
architecture or version. The inclusion into the installer will be
1380
always done. For more information see <A HREF="#tag:os">2.3.8</A>.
1381
1382
<P>
1383
Here's a sample :
1384
<PRE>
1385
&lt;native type="izpack" name="ShellLink.dll"/&gt;
1386
</PRE>
1387
<P>
1388
1389
<H2><A NAME="SECTION004310000000000000000"></A>
1390
<A NAME="jar-element"></A>
1391
<BR>
1392
The Jar Merging Element <TT>&lt;jar&gt;</TT>
1393
</H2>
1394
1395
<P>
1396
If you adapt I<SMALL>Z</SMALL>P<SMALL>ACK</SMALL> for your own needs, you might need to merge the
1397
content of another jar file into the jar installer. For instance, this
1398
could be a library that you need to merge. The <TT>&lt;jar&gt;</TT> markup
1399
allows you to merge the raw content of another jar file into the
1400
installer and the uninstaller. It is necessary that the paths in the
1401
jars are unique because only the contained files of the jar are added
1402
to the installer jar, not the jar file self.
1403
The attributes are:
1404
<UL>
1405
<LI><TT>src</TT> : the path at compile time
1406
</LI>
1407
<LI><TT>stage</TT>: stage where to use the contents of the additional jar file
1408
  (install|uninstall|both)
1409
1410
<P>
1411
</LI>
1412
</UL>
1413
<P>
1414
A sample :
1415
<PRE>
1416
&lt;jar src="../nicelibrary.jar"/&gt;
1417
</PRE>
1418
<P>
1419
1420
<H1><A NAME="SECTION00440000000000000000">
1421
The Available Panels</A>
1422
</H1>
1423
1424
<P>
1425
In this section I will introduce the various panels available in IzPack.
1426
The usage for most is pretty simple and described right here. The more
1427
elaborate ones are explained in more detail in the <SPAN  CLASS="textit">Advanced
1428
Features</SPAN> chapter or in their own chapter. The panels are listed by
1429
their class name. This is the name that must be used with the
1430
<TT>classname</TT> attribute (case-sensitive).
1431
<BR>
1432
<P>
1433
1434
<H2><A NAME="SECTION00441000000000000000">
1435
HelloPanel</A>
1436
</H2>
1437
1438
<P>
1439
This panel welcomes the user by displaying the project name, the
1440
version, the URL as well as the authors.
1441
<BR>
1442
<P>
1443
1444
<H2><A NAME="SECTION00442000000000000000">
1445
InfoPanel and HTMLInfoPanel</A>
1446
</H2>
1447
1448
<P>
1449
This is a kind of 'README' panel. It presents text of any length. The
1450
text is specified by the <TT>(HTML)InfoPanel.info</TT> resource. Starting from
1451
IzPack 3.7.0, variables substitution is allowed.
1452
<BR>
1453
<P>
1454
1455
<H2><A NAME="SECTION00443000000000000000">
1456
LicencePanel and HTMLLicencePanel</A>
1457
</H2>
1458
1459
<P>
1460
1461
<SPAN  CLASS="textit"><SPAN ID="txt818">Note :</SPAN> there is a mistake in the name - it should be
1462
LicensePanel. In France the word is Licence ... and one of my diploma is a
1463
'Licence' so ...</SPAN> :-)
1464
<BR>
1465
<P>
1466
These panels can prompt the user to acknowledge a license agreement. They block
1467
unless the user selects the 'agree' option. To specify the license agreement
1468
text you have to use the <TT>(HTML)LicencePanel.licence</TT> resource.
1469
<BR>
1470
<P>
1471
1472
<H2><A NAME="SECTION00444000000000000000">
1473
PacksPanel</A>
1474
</H2>
1475
1476
<P>
1477
Allows the user to select the packs he wants to install.
1478
<BR>
1479
<P>
1480
1481
<H2><A NAME="SECTION00445000000000000000">
1482
ImgPacksPanel</A>
1483
</H2>
1484
1485
<P>
1486
This is the same as above, but for each panel a different picture is
1487
shown to the user. The pictures are specified with the resources
1488
<TT>ImgPacksPanel.img.x</TT> where x stands for the pack number, the
1489
numbers start from 0. Of course it's up to you to specify as many images
1490
as needed and with correct numbers. For instance if you have 2 packs
1491
<TT>core</TT> and <TT>documentation</TT> (in this order), then the resource for
1492
<TT>core</TT> will be <TT>ImgPacksPanel.img.0</TT> and the resource for
1493
<TT>doc</TT> will be <TT>ImgPacksPanel.img.1</TT>. The supported image formats
1494
depend on what you JVM supports, but starting from J2SE 1.3, <SPAN  CLASS="textsl">GIF</SPAN>,
1495
<SPAN  CLASS="textsl">JPEG</SPAN> and <SPAN  CLASS="textsl">PNG</SPAN> are supported.
1496
<BR>
1497
<P>
1498
1499
<H2><A NAME="SECTION00446000000000000000">
1500
TargetPanel</A>
1501
</H2>
1502
1503
<P>
1504
This panel allows the user to select the installation path. It can be customized with
1505
the following resources (they are text files containing the path) :
1506
1507
<UL>
1508
<LI><TT>TargetPanel.dir.f</TT> where f stands for the family (<TT>mac,
1509
  macosx, windows, unix</TT>)
1510
</LI>
1511
<LI><TT>TargetPanel.dir</TT> : the directory name, instead of the software
1512
  to install name
1513
</LI>
1514
<LI><TT>TargetPanel.dir.d</TT> where d is a "dynamic" name, as returned by
1515
  the Java<SUP><SMALL>TM</SMALL></SUP> virtual machine. You should write the name in lowercase and replace the
1516
  spaces with underscores. For instance, you might want a different setting for
1517
  Solaris and GNU/Linux which are both Unix-like systems. The resources would be
1518
  <TT>TargetPanel.dir.sunos, TargetPanel.dir.linux</TT>. You should have a
1519
  Unix-resource in case it wouldn't work though.
1520
1521
<P>
1522
</LI>
1523
</UL>
1524
<P>
1525
1526
<H2><A NAME="SECTION00447000000000000000">
1527
InstallPanel</A>
1528
</H2>
1529
1530
<P>
1531
You should always have this one as it launches the installation process !
1532
<BR>
1533
<P>
1534
1535
<H2><A NAME="SECTION00448000000000000000">
1536
XInfoPanel</A>
1537
</H2>
1538
1539
<P>
1540
A panel showing text parsed by the variable substitutor. The text can be
1541
specified through the <TT>XInfoPanel.info</TT> resource. This panel can
1542
be useful when you have to show information after the installation
1543
process is completed (for instance if the text contains the target
1544
path).
1545
<BR>
1546
<P>
1547
1548
<H2><A NAME="SECTION00449000000000000000">
1549
FinishPanel</A>
1550
</H2>
1551
1552
<P>
1553
A ending panel, able to write automated installer information. For
1554
details see the chapter on 'Advanced Features'.
1555
<BR>
1556
<P>
1557
1558
<H2><A NAME="SECTION004410000000000000000">
1559
SimpleFinishPanel</A>
1560
</H2>
1561
1562
<P>
1563
Same as <TT>FinishPanel</TT>, but without the automated installer features. It
1564
is aimed at making the life easier for end-users who will never encounter the
1565
automated installer extra feature.
1566
<BR>
1567
<P>
1568
1569
<H2><A NAME="SECTION004411000000000000000">
1570
ShortcutPanel</A>
1571
</H2>
1572
1573
<P>
1574
This panel is used to create desktop shortcuts. For details on using the
1575
ShortcutPanel see the chapter 'Desktop Shortcuts'.
1576
1577
<P>
1578
1579
<H2><A NAME="SECTION004412000000000000000">
1580
UserInputPanel</A>
1581
</H2>
1582
1583
<P>
1584
This panel allows you to prompt the user for data. What the user is prompted
1585
for is specified using an XML file which is included as a resource to the
1586
installer. See chapter <A HREF="node8.html#chap:userinput">6</A> on page <A HREF="node8.html#chap:userinput"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
1587
for a detailed explanation.
1588
1589
<P>
1590
1591
<H2><A NAME="SECTION004413000000000000000">
1592
CompilePanel</A>
1593
</H2>
1594
1595
<P>
1596
This panel allows you to compile just installed Java sourcecode.
1597
The details for the compilation are specified using the resource <TT>CompilePanel.Spec.xml</TT>.
1598
The XML file has the following format:
1599
<PRE>
1600
&lt;compilation&gt;
1601
  &lt;global&gt;
1602
    &lt;compiler&gt;
1603
      &lt;choice value="$JAVA_HOME/bin/javac" /&gt;
1604
      &lt;choice value="jikes" /&gt;
1605
    &lt;/compiler&gt;
1606
    &lt;arguments&gt;
1607
      &lt;choice value="-O -g:none" /&gt;
1608
      &lt;choice value="-O" /&gt;
1609
      &lt;choice value="-g" /&gt;
1610
      &lt;choice value="" /&gt;
1611
    &lt;/arguments&gt;
1612
  &lt;/global&gt;
1613
  &lt;jobs&gt;
1614
    &lt;classpath add="$INSTALL_PATH/src/classes/" /&gt;
1615
    &lt;job name="optional name"&gt;
1616
      &lt;directory name="$INSTALL_PATH/src/classes/xyz" /&gt;
1617
    &lt;/job&gt;
1618
    &lt;job name="another job"&gt;
1619
      &lt;packdepency name="some package name" /&gt;
1620
      &lt;classpath sub="$INSTALL_PATH/" /&gt;
1621
      &lt;directory name="$INSTALL_PATH/src/classes/abc" /&gt;
1622
      &lt;file name="$INSTALL_PATH/some/file.java" /&gt;
1623
    &lt;/job&gt;
1624
  &lt;/jobs&gt;
1625
&lt;/compilation&gt;
1626
</PRE>
1627
1628
<P>
1629
In theory, jobs can be nested but this has not been tested at all. A change to
1630
the classpath within a job only affects this job and nested jobs. The classpath
1631
should be specified before any files or directories.
1632
1633
<P>
1634
The user can change the compiler to use and choose from some default
1635
compilation options before compilation is started.
1636
1637
<P>
1638
<IMG
1639
  WIDTH="628" HEIGHT="455" ALIGN="BOTTOM" BORDER="0"
1640
 SRC="./compilePanel.png"
1641
 ALT="Image compilePanel">
1642
1643
<P>
1644
1645
<H2><A NAME="SECTION004414000000000000000">
1646
ProcessPanel</A>
1647
</H2>
1648
1649
<P>
1650
This panel allows you to execute arbitrary files after installation.
1651
The details for the compilation are specified using the resource <TT>ProcessPanel.Spec.xml</TT>.
1652
1653
<P>
1654
The XML file has the following format:
1655
<PRE>
1656
&lt;processing&gt;
1657
  &lt;job name="do xyz"&gt;
1658
    &lt;os family="windows" /&gt;
1659
    &lt;executefile name="$INSTALL_PATH/scripts/xyz.bat"&gt;
1660
      &lt;arg&gt;doit&lt;/arg&gt;&lt;arg&gt;$variable&lt;/arg&gt;
1661
    &lt;/executefile&gt;
1662
  &lt;/job&gt;
1663
  &lt;job name="do xyz"&gt;
1664
    &lt;os family="unix" /&gt;
1665
    &lt;executefile name="$INSTALL_PATH/scripts/xyz.sh"&gt;
1666
      &lt;arg&gt;doit&lt;/arg&gt;&lt;arg&gt;$variable&lt;/arg&gt;
1667
    &lt;/executefile&gt;
1668
  &lt;/job&gt;
1669
&lt;/processing&gt;
1670
</PRE>
1671
1672
<P>
1673
Each job may have an <TT>&lt;os&gt;</TT> attribute - see <A HREF="#tag:os">2.3.8</A> for details.
1674
<BR>
1675
<P>
1676
It is also possible to execute Java classes from this panel. Here's what this
1677
feature author (Alex Bradley) says:
1678
<BLOCKQUOTE>
1679
I've been able to work around my requirements by extending the
1680
<TT>ProcessPanelWorker</TT> functionality to run user-specified classes. I've
1681
extended the DTD of the <TT>ProcessPanel.Spec.xml</TT> to include a new element:
1682
</BLOCKQUOTE><PRE>
1683
&lt;executeclass name="classname"&gt;
1684
&lt;args..../&gt;
1685
&lt;/executeclass&gt;
1686
</PRE><BLOCKQUOTE>
1687
I've also added a new sub-class of <TT>Processable</TT> called
1688
<TT>executeclass</TT>. This will run a user-specified class in the context of
1689
the installer JVM with a single method :
1690
</BLOCKQUOTE><PRE>run( AbstractUIProcessHandler handler, String[] args]);
1691
</PRE>
1692
<P>
1693
<BLOCKQUOTE>It can do everything I need and more. In particular, it allows me to write a
1694
process extension and still be able to provide feedback to the user through
1695
the feedback panel, and to add new functionality to the installer, after its
1696
been built.
1697
1698
</BLOCKQUOTE>
1699
1700
<P>
1701
New with version 3.7 is the possibility to tee output that is written to
1702
the ProcessPanel's textarea into an optional logfile. Using this feature is
1703
pretty much straightforward, you only have to add a line in <TT>ProcessPanel.Spec.xml</TT>
1704
that will tell IzPack the location, where the logfile should be stored.
1705
1706
<P>
1707
Variable substitution is performed, so you can use <TT>$INSTALL_PATH</TT> as example.
1708
1709
<P>
1710
The name of the logfile is not (yet) configurable but should fit in most cases. It will
1711
be named
1712
<PRE>
1713
Install_V&lt;$APP_VER&gt;_&lt;YYYY&gt;-&lt;MM&gt;-&lt;DD&gt;_&lt;hh&gt;-&lt;mm&gt;-&lt;ss&gt;_&lt;RandomId&gt;.log
1714
</PRE>
1715
1716
<P>
1717
Here's an example:
1718
1719
<P>
1720
<PRE>
1721
&lt;processing&gt;
1722
  &lt;logfiledir&gt;$INSTALL_PATH&lt;/logfiledir&gt;
1723
  &lt;job name="do xyz"&gt;
1724
    &lt;os family="windows" /&gt;
1725
    &lt;executefile name="$INSTALL_PATH/scripts/xyz.bat"&gt;
1726
      &lt;arg&gt;doit&lt;/arg&gt;&lt;arg&gt;$variable&lt;/arg&gt;
1727
    &lt;/executefile&gt;
1728
&lt;/processing&gt;
1729
</PRE>
1730
1731
<P>
1732
This will generate a logfile named e.g. <TT>Install_V1.3_2004-11-08_19-22-20_43423.log</TT>
1733
located in <TT>$INSTALL_PATH</TT>.
1734
1735
<P>
1736
<TT>ProcessPanelWorker</TT> will write all output that is directed to <TT>stdout</TT> and <TT>stderr</TT> to this file
1737
if <TT>ProcessPanel.Spec.xml</TT> contains the <TT>logfiledir</TT> entry.
1738
1739
<P>
1740
Please note that this one file is used for storing the complete output of all jobs and not
1741
a file for each job that is run.
1742
1743
<P>
1744
1745
<H2><A NAME="SECTION004415000000000000000">
1746
JDKPathPanel</A>
1747
</H2>
1748
This panel allows the user to select a JDK path. The variable JAVA_HOME does
1749
not point to a JDK, else to a JRE also the environment variable points to a JDK.
1750
This is not a bug, this is the behavior of the VM. But some products needs a JDK,
1751
for that this panel can be used. There is not only a selection of the path else
1752
a validation. The validation will be done with the file JDKPath/lib/tools.jar.
1753
If JAVA_HOME points to the VM which is placed in the JDK, the directory will
1754
be used as default (JAVA_HOME/..). If there is the variable
1755
<PRE>
1756
JDKPathPanel.skipIfValid
1757
</PRE>
1758
defined with the value "yes", the panel will be skiped if the path is valid.
1759
Additional it is possible to make a version control. If one or both variables
1760
<PRE>
1761
JDKPathPanel.minVersion
1762
JDKPathPanel.maxVersion
1763
</PRE>
1764
are defined, only a JDK will be accepted which has a version in the
1765
range of it. The detection is a little bit pragmatically, therefor it is
1766
possible, that the detection can fail at some VMs.
1767
The values in the install.xml should be like
1768
<PRE>
1769
&lt;variables&gt;
1770
  &lt;variable name="JDKPathPanel.minVersion" value="1.4.1" /&gt;
1771
  &lt;variable name="JDKPathPanel.maxVersion" value="1.4.99" /&gt;
1772
  &lt;variable name="JDKPathPanel.skipIfValid" value="yes" /&gt;
1773
&lt;/variables&gt;
1774
</PRE>
1775
1776
<P>
1777
If all is valid, the panels isValidated method sets the variable
1778
<PRE>
1779
JDKPath
1780
</PRE>
1781
to the chosen path. Be aware, this variable exist not until the JDKPanel
1782
was quitted once. At a secound activation, the default will be the
1783
last selection.
1784
1785
<DIV CLASS="navigation"><HR>
1786
<!--Navigation Panel-->
1787
<A NAME="tex2html351"
1788
  HREF="node5.html">
1789
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
1790
<A NAME="tex2html347"
1791
  HREF="izpack-doc.html">
1792
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
1793
<A NAME="tex2html341"
1794
  HREF="node3.html">
1795
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
1796
<A NAME="tex2html349"
1797
  HREF="node1.html">
1798
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
1799
<BR>
1800
<B> Next:</B> <A NAME="tex2html352"
1801
  HREF="node5.html">Advanced Features</A>
1802
<B> Up:</B> <A NAME="tex2html348"
1803
  HREF="izpack-doc.html">izpack-doc</A>
1804
<B> Previous:</B> <A NAME="tex2html342"
1805
  HREF="node3.html">Getting started</A>
1806
 &nbsp; <B>  <A NAME="tex2html350"
1807
  HREF="node1.html">Contents</A></B> </DIV>
1808
<!--End of Navigation Panel-->
1809
<ADDRESS>
1810
Julien Ponge
1811
2005-04-22
1812
</ADDRESS>
1813
</BODY>
1814
</HTML>