source: release-kits/shared/launch4j/web/docs_es.html@ 15024

Last change on this file since 15024 was 15024, checked in by oranfry, 16 years ago

putting launch4j in the shared area

File size: 19.3 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3 <head>
4 <title>Launch4j - Empaquetador cross-platform de aplicaciones Java para crear ejecutables nativos de Windows</title>
5 <meta name="description" content="Empaquetador cross-platform de aplicaciones Java para crear ejecutables nativos de Windows. Con funcionalidad para pantallas de bienvenida nativas, icono de aplicación, empaquetado de poco tamaño.">
6 <meta name="keywords" content="java executable wrapper, java application wrapper, exe wrapper, jar wrapper, wrap, wraps, wrapping, free software, launch, launcher, linux, mac, windows, open source, ant, solaris, native splash screen, deploy, build tool">
7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8 <meta name="author" content="Grzegorz Kowal" >
9 <link rel="stylesheet" type="text/css" href="style.css">
10 </head>
11 <body>
12 <div id="container">
13 <div id="top">
14 <img style="width: 249px; height: 58px;" src="launch4j.gif" alt="launch4j"> <span class="version">2.1.5</span>
15 </div>
16 <div id="leftnav">
17 <ul>
18 <li><a href="index_es.html">Inicio</a></li>
19 <li><a href="docs_es.html">Documentación</a></li>
20 <li><a href="changelog_es.html">Historial de cambios</a></li>
21 <li><a href="http://sourceforge.net/project/screenshots.php?group_id=95944">Capturas de pantalla</a></li>
22 <li><a href="http://sourceforge.net/project/showfiles.php?group_id=95944&amp;package_id=152236">Descarga</a></li>
23 <li><a href="http://sourceforge.net/forum/?group_id=95944">Soporte</a></li>
24 <li><a href="http://sourceforge.net/projects/launch4j">Resumen del proyecto</a></li>
25 <li><a href="http://sourceforge.net/tracker/?atid=613100&amp;group_id=95944">Informes de errores</a></li>
26 <li><a href="links_es.html">Enlaces</a></li>
27 </ul>
28 <ul style="margin-top: 20px; font-size: 75%">
29 <li><a href="index.html">English</a></li>
30 <li><a href="index_es.html">Español</a></li>
31 </ul>
32 </div>
33 <div id="content">
34<a href="#Running_launch4j">Ejecutando launch4j</a><br>
35<a href="#Configuration_file">Fichero de configuración</a><br>
36<a href="#Importing_1.x_configuration">Importando configuración 1.x</a><br>
37<a href="#Ant_task">Tarea Ant</a><br>
38<a href="#Debug_launching_mode">Lanzamiento en modo de depuración</a><br>
39
40<h2 id="Running_launch4j">Ejecutando launch4j</h2>
41Ejecute <em>launch4j.exe</em> o el script&nbsp; <em>launch4j</em> sin argumentos
42de línea de órdenes para entrar en el modo gráfico (GUI).
43
44<pre>launch4j.exe</pre>
45
46Para empaquetar un jar en modo consola use <em>launch4jc.exe</em>&nbsp;y especifique
47el fichero de configuración.
48
49<pre>launch4jc.exe config.xml</pre>
50
51En Linux use el script <em>launch4j</em>.
52
53<pre>launch4j ./demo/l4j/config.xml</pre>
54
55<h2 id="Configuration_file">Fichero de configuración</h2>
56Launch4j necesita un fichero de configuración xml para cada ejecutable. Puede
57crearlo y editarlo convenientemente usando la interfaz gráfica de usuario o su
58editor favorito. También es posible pasar todos los parámetros de configuración
59a través de la tarea Ant. Para todos los ficheros excepto excepto para <em>&lt;jre&gt;&lt;path&gt;</em>
60se pueden usar rutas absolutas o relativas a la ruta del fichero de
61configuración.
62
63<pre>&lt;!-- <strong>Bold</strong> elements are required --&gt;<br><strong>&lt;launch4jConfig&gt;<br></strong> &lt;!-- Header types: 0-GUI, 1-console --&gt;<strong><br></strong> <strong>&lt;headerType&gt;</strong><span class="codeword">0|1</span><strong>&lt;/headerType&gt;</strong><br><strong></strong> <strong>&lt;outfile&gt;</strong><span class="codeword">file.exe</span><strong><span class="codeword"></span>&lt;/outfile&gt;<br></strong> <strong>&lt;jar&gt;</strong><span class="codeword">file</span><span class="codeword"></span><strong>&lt;/jar&gt;<br></strong> &lt;dontWrapJar&gt;<span class="codeword">true|<u>false</u></span>&lt;/dontWrapJar&gt;<br> &lt;errTitle&gt;<span class="codeword">text</span>&lt;/errTitle&gt;<br> &lt;jarArgs&gt;<span class="codeword">text</span>&lt;/jarArgs&gt;<br> &lt;chdir&gt;<span class="codeword">path</span>&lt;/chdir&gt;<br> &lt;customProcName&gt;<span class="codeword">true|<u>false</u></span>&lt;/customProcName&gt;<br> &lt;stayAlive&gt;<span class="codeword">true|false</span>&lt;/stayAlive&gt;<br> &lt;icon&gt;<span class="codeword">file</span>&lt;/icon&gt;<br> &lt;headerObjects&gt;<br> <strong>&lt;file&gt;</strong><span class="codeword">object file</span><strong>&lt;/file&gt;</strong><br> <strong>&lt;file&gt;</strong><span class="codeword">object file</span><strong>&lt;/file&gt;</strong><br> <strong>...</strong><br> &lt;/headerObjects&gt;<br> &lt;libs&gt;<br> <strong>&lt;file&gt;</strong><span class="codeword">w32api lib</span><strong>&lt;/file&gt;<br></strong><strong> &lt;file&gt;</strong><span class="codeword">w32api lib</span><strong>&lt;/file&gt;<br> ...<br></strong> &lt;/libs&gt;<br> <strong>&lt;jre&gt;<br></strong> &lt;!-- Specify one of the following or both --&gt;<br> <strong>&lt;path&gt;</strong><span class="codeword">path</span><strong>&lt;/path&gt;<br> </strong><strong>&lt;minVersion&gt;</strong><span class="codeword">x.x.x[_xx]</span><strong>&lt;/minVersion&gt;<br></strong> &lt;maxVersion&gt;<span class="codeword">x.x.x[_xx]</span>&lt;/maxVersion&gt;<br> &lt;!-- Heap sizes in MB, 0-use default --&gt;<br> &lt;initialHeapSize&gt;<span class="codeword">MB</span>&lt;/initialHeapSize&gt;<br> &lt;maxHeapSize&gt;<span class="codeword">MB</span>&lt;/maxHeapSize&gt;<br> &lt;args&gt;<span class="codeword">text</span>&lt;/args&gt;<br> <strong>&lt;/jre&gt;</strong><br> &lt;splash&gt;<br> <strong>&lt;file&gt;</strong><span class="codeword">file</span><strong>&lt;/file&gt;</strong><br> &lt;waitForWindow&gt;<span class="codeword"><u>true</u>|false</span>&lt;/waitForWindow&gt;<br> &lt;timeout&gt;<span class="codeword">seconds [60]</span>&lt;/timeout&gt;<br> &lt;timeoutErr&gt;<span class="codeword"><u>true</u>|false</span>&lt;/timeoutErr&gt;<br> &lt;/splash&gt;<br> &lt;versionInfo&gt;<br> <strong>&lt;fileVersion&gt;</strong><span class="codeword">x.x.x.x</span><strong>&lt;/fileVersion&gt;</strong><br> <strong>&lt;txtFileVersion&gt;</strong><span class="codeword">text</span><strong>&lt;/txtFileVersion&gt;</strong><br> <strong>&lt;fileDescription&gt;</strong><span class="codeword">text</span><strong>&lt;/fileDescription&gt;</strong><br> <strong>&lt;copyright&gt;</strong><span class="codeword">text</span><strong>&lt;/copyright&gt;</strong><br> <strong>&lt;productVersion&gt;</strong><span class="codeword">x.x.x.x</span><strong>&lt;/productVersion&gt;</strong><br> <strong>&lt;txtProductVersion&gt;</strong><span class="codeword">text</span><strong>&lt;/txtProductVersion&gt;</strong><br> <strong>&lt;productName&gt;</strong><span class="codeword">text</span><strong>&lt;/productName&gt;</strong><br> &lt;companyName&gt;<span class="codeword">text</span>&lt;/companyName&gt;<br> <strong>&lt;internalName&gt;</strong><span class="codeword">filename</span><strong>&lt;/internalName&gt;</strong><br> <strong>&lt;originalFilename&gt;</strong><span class="codeword">filename.exe</span><strong>&lt;/originalFilename&gt;</strong><br> &lt;/versionInfo&gt;<br><strong>&lt;/launch4jConfig&gt;</strong><br></pre>
64
65<dl>
66 <dt>&lt;headerType&gt;</dt>
67 <dd>
68 Tipo de cabecera usada para empaquetar la aplicación.
69 <table>
70 <thead>
71 <tr>
72 <th>Tipo de cabecera</th>
73 <th>Tipo de aplicación</th>
74 <th>Lanzador</th>
75 <th>Pantalla de bienvenida</th>
76 <th style="white-space: nowrap;">Esperar a que se cierre la
77 aplicación</th>
78 </tr>
79 </thead>
80 <tbody>
81 <tr>
82 <td>0</td>
83 <td>GUI</td>
84 <td>javaw</td>
85 <td>sí</td>
86 <td class="description">el empaquetador espera sólo si <em>stayAlive</em>
87 está puesto a true (verdadero), en otro caso termina inmediatamente
88 o después de cerrar la pantalla de bienvenida.
89 </td>
90 </tr>
91 <tr>
92 <td>1</td>
93 <td>consola</td>
94 <td>java</td>
95 <td>no</td>
96 <td class="description">siempre espera y devuelve el código de
97 salida de la aplicación.</td>
98 </tr>
99 </tbody>
100 </table>
101 </dd>
102</dl>
103<dl>
104 <dt>&lt;outfile&gt;</dt>
105 <dd>El fichero ejecutable de salida.</dd>
106</dl>
107<dl>
108 <dt>&lt;jar&gt;</dt>
109 <dd>
110 Depende de <em>&lt;dontWrapJar&gt;</em>, si false (falso, por defecto)
111 entonces este elemento es el jar ejecutable que empaquetar.
112 Cuando <em>&lt;dontWrapJar&gt;</em> está puesto a true (verdadero) es la
113 ruta del jar relativa al ejecutable. Por ejemplo, si el lanzador
114 ejecutable y la aplicación jar, llamados calc.exe y calc.jar
115 respectivamente, están en el mismo directorio, entonces debería usar <i>&lt;jar&gt;calc.jar&lt;/jar&gt;</i>.
116 </dd>
117</dl>
118<dl>
119 <dt>&lt;dontWrapJar&gt;</dt>
120 <dd>
121 No empaquetar el fichero jar.
122 Opcional, por defecto a false (falso). Launch4j por defecto empaqueta
123 jars en los ejecutables nativos, usted puede evitar esto poniendo <em>&lt;dontWrapJar&gt;</em>
124 a true (verdadero).
125 El ejecutable actúa como un lanzador e inicia la aplicación especificada
126 en <em>&lt;jar&gt;.</em>
127 </dd>
128</dl>
129<dl>
130 <dt>&lt;errTitle&gt;</dt>
131 <dd>
132 <p align="justify">Opcional, estable el título de la ventana de error que se
133 muestra si Java no se ha podido encontrar, por ejemplo. Este normalmente
134 debería contener el nombre de su aplicación. La cabecera de tipo consola
135 muestra esta propiedad delante del mensaje de error (myapp: error...)
136 </dd>
137</dl>
138<dl>
139 <dt>&lt;jarArgs&gt;</dt>
140 <dd>Opcional, los argumentos de la línea de órdenes.</dd>
141</dl>
142<dl>
143 <dt>&lt;chdir&gt;</dt>
144 <dd>
145 <p align="justify">Opcional. Cambia el directorio actual a una ruta relativa
146 arbitraria al ejecutable. Si omite esta propiedad o la deja en blanco, no
147 tendrá ningún efecto. Si establece esta propiedad como <em>.</em> se
148 cambiará el directorio actual al mismo directorio que el ejecutable. <em>..</em>
149 lo cambiará al directorio padre y así sucesivamente.
150 </dd>
151 <dd>
152 <pre>&lt;chdir&gt;.&lt;/chdir&gt;</pre>
153 </dd>
154 <dd>
155 <pre>&lt;chdir&gt;../somedir&lt;/chdir&gt;</pre>
156 </dd>
157</dl>
158<dl>
159 <dt>&lt;customProcName&gt;</dt>
160 <dd>
161 <p align="justify">Opcional, por defecto puesta a false (falso). Establece
162 el nombre del proceso como el nombre del fichero ejecutable. Crea un fichero
163 temporal en el directorio launch4j-tmp dentro del JRE usado. Estos ficheros
164 son borrados por cualquier aplicación empaquetada por launch4j, que
165 establece el nombre del proceso y usa el mismo JRE. El borrado tiene lugar
166 cuando la aplicación <strong>comienza</strong>, así que al menos una copia
167 de este fichero siempre estará presente.
168 </dd>
169</dl>
170<dl>
171 <dt>&lt;stayAlive&gt;</dt>
172 <dd>
173 <p align="justify">Opcional, por defecto puesta a&nbsp; false (falso) en la
174 cabecera GUI, siempre es true (verdadero) en la cabecera de tipo consola.
175 Cuando está activada, el lanzador espera a que la aplicación finalice y
176 devuelve su código de salida.
177 </dd>
178</dl>
179<dl>
180 <dt>&lt;icon&gt;</dt>
181 <dd>Icono de aplicación en formato ICO. Puede contener varias profundidades
182 de color/resoluciones.</dd>
183</dl>
184<dl>
185 <dt>&lt;headerObjects&gt;</dt>
186 <dd>Opcional, sólo cabeceras personalizadas. Lista ordenada de los ficheros
187 objeto de cabecera.</dd>
188</dl>
189<dl>
190 <dt>&lt;libs&gt;</dt>
191 <dd>Opcional, sólo cabeceras personalizadas. Lista ordenada de bibliotecas
192 usadas por la cabecera.</dd>
193</dl>
194<dl>
195 <dt>&lt;jre&gt;</dt>
196 <dd>Elementos requeridos que agrupan la configuración del JRE.</dd>
197</dl>
198<blockquote>
199 <dl>
200 <dt>&lt;path&gt;, &lt;minVersion&gt;, &lt;maxVersion&gt;</dt>
201 <dd>
202 <p align="justify">La propiedad <em>&lt;path&gt;</em> se usa para especificar
203 la ruta relativa (al ejecutable) de un JRE embebido, que no depende del
204 directorio actual o <em>&lt;chdir&gt;</em>. Nótese que esta ruta no se
205 comprueba hasta la ejecución de la aplicación. Si desea que el
206 empaquetador busque un JRE (público o SDK privado) use la propiedad <em>
207 &lt;minVersion&gt;</em>, también puede especificar <em>&lt;maxVersion&gt; </em> para
208 evitar que se usa una versión superior de Java. Launch4j siempre usará
209 la versión más alta disponible (en el rango mínimo/máximo, por
210 supuesto). Puede combinar estas propiedades para cambiar el proceso de
211 inicio...</dd>
212 </dl>
213 <blockquote>
214 <dl>
215 <dt>&lt;path&gt;</dt>
216 <dd>Se ejecuta si el&nbsp; JRE y javaw.exe están presentes, de otro
217 modo se para con error.</dd>
218 <dt>&lt;path&gt; + &lt;minVersion&gt;&nbsp; [+ &lt;maxVersion&gt;]</dt>
219 <dd>
220 <p align="justify">Usa primero el JRE, si no puede encontrarlo busca
221 Java, si eso falla muestra un mensaje de error y abre la página de
222 descarga de Java.
223 </dd>
224 <dt>&lt;minVersion&gt;&nbsp; [+ &lt;maxVersion&gt;]</dt>
225 <dd>Busca Java, si no se encuentra ninguna versión correcta, muestra
226 un mensaje de error y abre la página de descarga de Java.
227 </dd>
228 </dl>
229 </blockquote>
230</blockquote>
231<blockquote>
232 <dl>
233 <dt>&lt;initialHeapSize&gt;</dt>
234 <dd>Opcional, tamaño inicial de la pila, en MB, 0 por defecto.</dd>
235 </dl>
236 <dl>
237 <dt>&lt;maxHeapSize&gt;</dt>
238 <dd>Opcional, tamaño máximo de la pila, en MB, 0 por defecto.</dd>
239 </dl>
240 <dl>
241 <dt>&lt;args&gt;</dt>
242 <dd>
243 <p align="justify">Opcional, acepta todo lo que normalmente se le
244 pasaría al lanzador java/javaw: opciones assertion, opciones de sistema
245 y opciones X. Aquí puede mapear variables de entorno y variables
246 especiales <em>EXEDIR</em>
247 (directorio del ejecutable), <em>EXEFILE</em> (ruta completa del fichero
248 del ejecutable) a propiedades del sistema. Todas las referencias a las
249 varibles deben ir rodeadas por signos de porcentaje y entre comillas.
250 <pre>-Dlaunch4j.exedir="%EXEDIR%"<br>-Dlaunch4j.exefile="%EXEFILE%"<br>-Denv.path="%Path%"<br>-Dsettings="%HomeDrive%%HomePath%\\app-settings.ini"</pre>
251 </dd>
252 </dl>
253</blockquote>
254
255<dl>
256 <dt>&lt;splash&gt;</dt>
257 <dd>Opcional, agrupa los ajustes de configuración de la pantalla de
258 bienvenida. Sólo permitido en la cabecera GUI.</dd>
259</dl>
260<blockquote>
261 <dl>
262 <dt>&lt;file&gt;</dt>
263 <dd>La imagen de la pantalla de bienvenida en formato BMP.</dd>
264 </dl>
265 <dl>
266 <dt>&lt;waitForWindow&gt;</dt>
267 <dd>
268 <p align="justify">Opcional, por defecto puesta a true (verdadero).
269 Cierra la pantalla de bienvenida cuando aparece la ventana de la
270 aplicación o un mensaje de error de Java. Si se pone a false, la
271 pantalla de bienvenida se cerrará después del tiempo de espera.
272 </dd>
273 </dl>
274 <dl>
275 <dt>&lt;timeout&gt;</dt>
276 <dd>
277 <p align="justify">Tiempo de espera. Opcional, por defecto puesto a 60.
278 Número de segundos después de que la ventana de bienvenida se cierre. El
279 tiempo de espera puede causar un error dependiendo del <em>&lt;timeoutErr&gt;</em>.
280 </dd>
281 </dl>
282 <dl>
283 <dt>&lt;timeoutErr&gt;</dt>
284 <dd>
285 <p align="justify">Opcional, por defecto puesto a true (verdadero). True
286 señala un error después del tiempo de espera de la pantalla de
287 bienvenida, false (falso) cierra la pantalla de bienvenida
288 silenciosamente.
289 </dd>
290 </dl>
291</blockquote>
292
293<dl>
294 <dt>&lt;versionInfo&gt;</dt>
295 <dd>Opcional, información de la versión que se mostrará en el Windows
296 Explorer.</dd>
297</dl>
298<blockquote>
299 <dl>
300 <dt>&lt;fileVersion&gt;</dt>
301 <dd>Versión del fichero. Número de versión &#39;x.x.x.x&#39;.</dd>
302 </dl>
303 <dl>
304 <dt>&lt;txtFileVersion&gt;</dt>
305 <dd>Versión del fichero. Forma libre de versión, por ejemplo &#39;1.20.RC1&#39;.</dd>
306 </dl>
307 <dl>
308 <dt>&lt;fileDescription&gt;</dt>
309 <dd>Descripción del fichero presentado al usuario.</dd>
310 </dl>
311 <dl>
312 <dt>&lt;copyright&gt;</dt>
313 <dd>Copyright legal.</dd>
314 </dl>
315 <dl>
316 <dt>&lt;productVersion&gt;</dt>
317 <dd>Versión del producto. Número de versión &#39;x.x.x.x&#39;.</dd>
318 </dl>
319 <dl>
320 <dt>&lt;txtProductVersion&gt;</dt>
321 <dd>Versión del producto. Forma libre de versión, por ejemplo
322 &#39;1.20.RC1&#39;.</dd>
323 </dl>
324 <dl>
325 <dt>&lt;productName&gt;</dt>
326 <dd>Nombre del producto. Texto.</dd>
327 </dl>
328 <dl>
329 <dt>&lt;companyName&gt;</dt>
330 <dd>Nombre de la compañía u organización. Texto opcional.</dd>
331 </dl>
332 <dl>
333 <dt>&lt;internalName&gt;</dt>
334 <dd>Nombre interno sin extensión, el nombre original del fichero o el
335 módulo, por ejemplo.</dd>
336 <dt>&nbsp;</dt>
337 <dt>&lt;originalFilename&gt;</dt>
338 <dd>Nombre original del fichero sin la ruta. Permite determinar si un
339 fichero ha sido renombrado por un usuario. </dd>
340 </dl>
341</blockquote>
342
343<h2 id="Importing_1.x_configuration">Importando configuración 1.x</h2>
344<p align="justify">Es posible importar un fichero de configuración 1.x usando la
345interfaz gráfica (GUI). Abra el fichero, corrija las rutas y guárdelo como una
346nueva configuración xml.</p>
347<h2 id="Ant_task">Tarea Ant</h2>
348Puede especificar una propiedad de directorio launch4j&nbsp; o cambiar la
349definición de la tarea.
350
351<pre>&lt;property name=&quot;launch4j.dir&quot; location=&quot;/opt/launch4j&quot; /&gt;</pre>
352
353Defina la tarea en su script Ant.
354
355<pre>&lt;taskdef name=&quot;launch4j&quot;<br> classname=&quot;net.sf.launch4j.ant.Launch4jTask&quot;<br> classpath=&quot;${launch4j.dir}/launch4j.jar<br> :${launch4j.dir}/lib/xstream.jar&quot; /&gt;</pre>
356
357¡Ejecute la tarea!
358
359<pre>&lt;launch4j configFile=&quot;./l4j/demo.xml&quot; /&gt;</pre>
360
361Puede especificar las siguientes propiedades de configuración...
362<p class="attrib">
363 jar="absolute path or relative to <em>basedir</em>"<br>
364 jarPath="relative path"<br>
365 outfile<br>
366 fileVersion<br>
367 txtFileVersion<br>
368 productVersion<br>
369 txtProductVersion
370</pn>
371
372<pre>&lt;launch4j configFile=&quot;./l4j/demo.xml&quot;<br> outfile=&quot;mydemo.exe&quot;<br> &nbsp;fileVersion=&quot;1.0.0.0&quot; txtFileVersion=&quot;1.0 RC2&quot; /&gt;</pre>
373
374<p align="justify">También puede definir toda la configuración en la tarea, pero
375no será posible editarla en modo gráfico (GUI). Todos las rutas excepto&nbsp; <em>
376&lt;chdir&gt;</em>, <em>&lt;jre&gt;&lt;path&gt;</em> y <em>jarPath</em>
377se calculan usando el atributo de proyecto <em>basedir</em>.
378</p>
379
380<pre>&lt;launch4j&gt;<br> &lt;config headerType="0" outfile="demo.exe"<br> dontWrapJar="true" jarPath="demo.jar" &gt;<br> &lt;jre minVersion="1.4.0" /&gt;<br> &lt;/config&gt;<br>&lt;/launch4j&gt;</pre>
381
382<h2 id="Debug_launching_mode">Lanzamiento en modo depuración</h2>
383Para asegurarse de que la salida del ejecutable está configurada correctamente,
384puede usar el lanzamiento en modo depuración que muestra diversa información
385antes de ejecutar la aplicación Java. Para habilitarlo ponga la variable de
386entorno <em>launch4j=debug </em> y ejecute el programa empaquetado.<pre>set launch4j=debug<br>app.exe</pre>
387 </div>
388 <div class="footer">
389 Copyright &copy; 2005-2006 Grzegorz Kowal <br>
390 Traducción al español Copyright &copy; 2005-2006 Patricio Martínez Ros
391 <p style="margin-top: 2em">
392 <a href="http://sourceforge.net"><img style="width: 125px; height: 37px; border: none" src="http://sourceforge.net/sflogo.php?group_id=95944&amp;type=4" alt="sf.net"></a>
393 <a href="http://www.nosoftwarepatents.com"><img style="width: 90px; height: 40px; border: none; margin-left: 5%" src="http://www.nosoftwarepatents.com/banners/90x40_3.jpg" alt=""></a>
394 <a href="http://validator.w3.org/check?uri=referer"><img style="width: 88px; height: 31px; border: none; margin-left: 5%" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
395 </p>
396 </div>
397 </div>
398 </body>
399</html>
Note: See TracBrowser for help on using the repository browser.