Statistics
| Revision:

root / import / ext3D / trunk / install-extension3d / IzPack / doc / izpack / html / node4.html @ 15280

History | View | Annotate | Download (58.2 KB)

1
<!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>