diff --git a/installer/lib/launch4j/LICENSE.txt b/installer/lib/launch4j/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3912109b5cd65a68039d473c11c9f7ac2303e06d
--- /dev/null
+++ b/installer/lib/launch4j/LICENSE.txt
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/installer/lib/launch4j/bin/COPYING b/installer/lib/launch4j/bin/COPYING
new file mode 100644
index 0000000000000000000000000000000000000000..60549be514af76c5db0c17ce6bbe01b2f81e2d9e
--- /dev/null
+++ b/installer/lib/launch4j/bin/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/installer/lib/launch4j/bin/ld b/installer/lib/launch4j/bin/ld
new file mode 100644
index 0000000000000000000000000000000000000000..1d3f4091d4ac22d02ed8e49377aaa787e6394abb
Binary files /dev/null and b/installer/lib/launch4j/bin/ld differ
diff --git a/installer/lib/launch4j/bin/windres b/installer/lib/launch4j/bin/windres
new file mode 100644
index 0000000000000000000000000000000000000000..a67a74be4b63e3018a21eb17e1b4790476bba567
Binary files /dev/null and b/installer/lib/launch4j/bin/windres differ
diff --git a/installer/lib/launch4j/build.xml b/installer/lib/launch4j/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..42c77a225f04a9365f2eaba3d5e71851083f5bc0
--- /dev/null
+++ b/installer/lib/launch4j/build.xml
@@ -0,0 +1,99 @@
+<project name="launch4j" default="compile" basedir=".">
+	<property name="versionNumber" value="2.0.0.0" />
+	<property name="version" value="2.0.RC3" />
+	<property name="src" location="src" />
+	<property name="lib" location="lib" />
+	<property name="build" location="build" />
+	<property name="dist" location="${user.home}/dist/${ant.project.name}" />
+	<property name="jar" location="./${ant.project.name}.jar" />
+	<property name="launch4j.dir" location="." />
+
+	<path id="dist.classpath">
+		<pathelement path="${build}" />
+		<fileset dir="${lib}">
+			<include name="**/*.jar" />
+		</fileset>
+	</path>
+
+	<target name="init">
+		<tstamp />
+		<mkdir dir="${build}" />
+		<mkdir dir="${dist}" />
+	</target>
+
+	<target name="compile" depends="init" description="compile the source">
+		<javac srcdir="${src}" destdir="${build}" classpathref="dist.classpath" source="1.4" debug="on" />
+		<copy todir="${build}/images">
+			<fileset dir="${src}/images">
+				<include name="**/*" />
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="jar" depends="compile" description="create jar">
+		<fileset dir="${lib}" id="lib.dist.fileset">
+			<include name="**/*.jar" />
+		</fileset>
+		<pathconvert pathsep=" " property="dist.classpath" refid="lib.dist.fileset">
+			<map from="${lib}" to="./lib" />
+		</pathconvert>
+		<!-- Put everything in ${build} into a jar file -->
+		<jar jarfile="${jar}">
+			<fileset dir="${build}" includes="**/*" />
+			<manifest>
+				<attribute name="Main-Class" value="net.sf.launch4j.Main" />
+				<attribute name="Class-Path" value=". ${dist.classpath}" />
+			</manifest>
+		</jar>
+		<jar jarfile="./launcher.jar">
+			<fileset dir="${build}" includes="net/sf/launch4j/Launcher.class" />
+			<manifest>
+				<attribute name="Main-Class" value="net.sf.launch4j.Launcher" />
+				<attribute name="Class-Path" value=". ./${ant.project.name}.jar ${dist.classpath}" />
+			</manifest>
+		</jar>
+	</target>
+
+	<target name="demo" depends="jar" description="build the demos">
+		<ant dir="./demo/ConsoleApp" inheritAll="false" />
+		<ant dir="./demo/SimpleApp" inheritAll="false" />
+	</target>
+
+	<target name="dist.linux" depends="jar" description="generate the Linux distribution">
+		<!-- changes executables to default mode!
+				<tar tarfile="${dist}/${ant.project.name}-${version}-linux.tgz" basedir="."
+				compression="gzip" excludes="**/build/** **/CVS/** **/*.exe"/> -->
+		<exec executable="tar" failonerror="true">
+			<arg line="-czC .. --exclude build --exclude CVS --exclude *.bat --exclude *.exe --exclude launch4j/l4j --exclude launch4j/launcher.jar -f ${dist}/${ant.project.name}-${version}-linux.tgz ./launch4j" />
+		</exec>
+	</target>
+
+	<target name="dist.win32" depends="jar" description="generate the Windows distribution">
+		<taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask" classpath="${build}:./lib/xstream.jar" />
+		<launch4j configFile="./l4j/launch4j.xml"
+			fileVersion="${versionNumber}" txtFileVersion="${version}"
+			productVersion="${versionNumber}" txtProductVersion="${version}" />
+		<launch4j configFile="./l4j/launch4jc.xml"
+			fileVersion="${versionNumber}" txtFileVersion="${version}"
+			productVersion="${versionNumber}" txtProductVersion="${version}" />
+		<zip destfile="${dist}/${ant.project.name}-${version}-win32.zip">
+			<zipfileset dir="." prefix="launch4j" excludes="**/build/** **/CVS/** bin/ld bin/windres l4j/** launch4j launcher.jar" />
+		</zip>
+	</target>
+
+	<target name="dist" depends="demo, dist.linux, dist.win32, clean" description="generate all distributions" />
+
+	<target name="clean" description="clean up">
+		<delete file="${jar}" />
+		<delete file="./launcher.jar" />
+		<delete>
+			<fileset dir="." includes="*.exe"/>
+		</delete>
+		<ant dir="./demo/ConsoleApp" target="clean" inheritAll="false" />
+		<ant dir="./demo/SimpleApp" target="clean" inheritAll="false" />
+	</target>
+
+	<target name="clean.all" depends="clean" description="clean up">
+		<delete dir="${build}" />
+	</target>
+</project>
diff --git a/installer/lib/launch4j/demo/ConsoleApp/.cvsignore b/installer/lib/launch4j/demo/ConsoleApp/.cvsignore
new file mode 100644
index 0000000000000000000000000000000000000000..378eac25d311703f3f2cd456d8036da525cd0366
--- /dev/null
+++ b/installer/lib/launch4j/demo/ConsoleApp/.cvsignore
@@ -0,0 +1 @@
+build
diff --git a/installer/lib/launch4j/demo/ConsoleApp/ConsoleApp.jar b/installer/lib/launch4j/demo/ConsoleApp/ConsoleApp.jar
new file mode 100644
index 0000000000000000000000000000000000000000..59b3e8b7e8c5caf8061dfdbed26320285af26d53
Binary files /dev/null and b/installer/lib/launch4j/demo/ConsoleApp/ConsoleApp.jar differ
diff --git a/installer/lib/launch4j/demo/ConsoleApp/build.xml b/installer/lib/launch4j/demo/ConsoleApp/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b06bb133ae088928094d0942280519939019e183
--- /dev/null
+++ b/installer/lib/launch4j/demo/ConsoleApp/build.xml
@@ -0,0 +1,59 @@
+<project name="ConsoleApp" default="exe" basedir=".">
+	<property name="src" location="src"/>
+	<property name="lib"  location="lib"/>
+	<property name="build" location="build"/>
+	<property name="launch4j.dir" location="../.." />
+
+	<path id="dist.classpath">
+	       	<pathelement path="${build}"/>
+		<fileset dir="${lib}">
+		       	<include name="**/*.jar"/>
+	      	</fileset>
+	</path>
+
+	<target name="init">
+		<tstamp/>
+		<mkdir dir="${build}"/>
+	</target>
+
+	<target name="compile" depends="init" description="compile the source">
+		<javac srcdir="${src}"  destdir="${build}"  classpathref="dist.classpath"  debug="on"/>
+	</target>
+
+	<target name="jar" depends="compile" description="create the jar">
+		<fileset dir="${lib}" id="lib.dist.fileset">
+			<include name="**/*.jar"/>
+		</fileset>
+		<pathconvert pathsep=" " property="dist.classpath" refid="lib.dist.fileset">
+			<map from="${lib}" to=".\lib"/>
+		</pathconvert>
+		<!-- Put everything in ${build} into a jar file -->
+		<jar jarfile="${ant.project.name}.jar">
+    			<fileset dir="${build}" includes="**/*"/>
+			<manifest>
+				<!-- SET YOUR MAIN CLASS HERE -->
+        	        	<attribute name="Main-Class" value="net.sf.launch4j.example.ConsoleApp"/>
+	        	        <attribute name="Class-Path" value=". ${dist.classpath}"/>
+			</manifest>
+		</jar>
+	</target>
+
+	<target name="exe" depends="jar">
+		<taskdef name="launch4j"
+		  classname="net.sf.launch4j.ant.Launch4jTask"
+		  classpath="${launch4j.dir}/launch4j.jar
+		    :${launch4j.dir}/lib/xstream.jar" />
+		<launch4j>
+		  <config headerType="1" jar="ConsoleApp.jar" outfile="ConsoleApp.exe"
+		  	  errTitle="ConsoleApp" chdir="." customProcName="true" icon="l4j/ConsoleApp.ico">
+		    <jre minVersion="1.4.0" />
+		  </config>
+		</launch4j>
+	</target>
+
+	<target name="clean" description="clean up" >
+		<delete dir="${build}"/>
+		<delete file="${ant.project.name}.jar"/>
+		<delete file="${ant.project.name}.exe"/>
+	</target>
+</project>
diff --git a/installer/lib/launch4j/demo/ConsoleApp/l4j/ConsoleApp.ico b/installer/lib/launch4j/demo/ConsoleApp/l4j/ConsoleApp.ico
new file mode 100644
index 0000000000000000000000000000000000000000..cc4c540e2d1b1556444bfddf1ce9f32aa1f5e94c
Binary files /dev/null and b/installer/lib/launch4j/demo/ConsoleApp/l4j/ConsoleApp.ico differ
diff --git a/installer/lib/launch4j/demo/ConsoleApp/lib/readme.txt b/installer/lib/launch4j/demo/ConsoleApp/lib/readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ef44ded3a1a894a305c6078aa094af0cdff04f59
--- /dev/null
+++ b/installer/lib/launch4j/demo/ConsoleApp/lib/readme.txt
@@ -0,0 +1,8 @@
+Put your jar libs here and the build script will include them
+in the classpath stored inside the jar manifest.
+In order to run your application move the output exe file from
+the dist directory to the same level as lib. 
+
+SimpleApp.exe
+lib/
+lib/xml.jar
diff --git a/installer/lib/launch4j/demo/ConsoleApp/readme.txt b/installer/lib/launch4j/demo/ConsoleApp/readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fa38dc8bd2f390f6d821902fc4d0dbd8b99e1306
--- /dev/null
+++ b/installer/lib/launch4j/demo/ConsoleApp/readme.txt
@@ -0,0 +1 @@
+To build the example application set JAVA_HOME and ANT_HOME environment variables.
diff --git a/installer/lib/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java b/installer/lib/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java
new file mode 100644
index 0000000000000000000000000000000000000000..94fc33dd61acc00d500e8e9aae8cfeff1ba62e9d
--- /dev/null
+++ b/installer/lib/launch4j/demo/ConsoleApp/src/net/sf/launch4j/example/ConsoleApp.java
@@ -0,0 +1,57 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+package net.sf.launch4j.example;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConsoleApp {
+    public static void main(String[] args) {
+		StringBuffer sb = new StringBuffer("Hello World!\n\nJava version: ");
+		sb.append(System.getProperty("java.version"));
+		sb.append("\nJava home: ");
+		sb.append(System.getProperty("java.home"));
+		sb.append("\nCurrent dir: ");
+		sb.append(System.getProperty("user.dir"));
+		if (args.length > 0) {
+			sb.append("\nArgs: ");
+			for (int i = 0; i < args.length; i++) {
+				sb.append(args[i]);
+				sb.append(' ');
+			}
+		}
+		sb.append("\n\nEnter a line of text, Ctrl-C to stop.\n\n>");
+		System.out.print(sb.toString());
+		try {
+			BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
+			String line;
+			while ((line = is.readLine()) != null) {
+				System.out.print("You wrote: " + line + "\n\n>");
+			}
+			is.close();
+		} catch (IOException e) {
+			System.err.print(e);
+		}
+    }
+}
diff --git a/installer/lib/launch4j/demo/LICENSE.txt b/installer/lib/launch4j/demo/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3912109b5cd65a68039d473c11c9f7ac2303e06d
--- /dev/null
+++ b/installer/lib/launch4j/demo/LICENSE.txt
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/installer/lib/launch4j/demo/readme.txt b/installer/lib/launch4j/demo/readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f5917821449a151fe3cf72ac21c4c9007d44349c
--- /dev/null
+++ b/installer/lib/launch4j/demo/readme.txt
@@ -0,0 +1,3 @@
+JRE/SDK 1.4.0 or higher must be installed on your system to run this demo.
+
+try running it with some command line arguments...
diff --git a/installer/lib/launch4j/head/LICENSE.txt b/installer/lib/launch4j/head/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b1e3f5a2638797271cbc9b91b856c05ed6942c8f
--- /dev/null
+++ b/installer/lib/launch4j/head/LICENSE.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/installer/lib/launch4j/head/consolehead.o b/installer/lib/launch4j/head/consolehead.o
new file mode 100644
index 0000000000000000000000000000000000000000..89706ccc720eef29cd90186e0ac297f0d4382411
Binary files /dev/null and b/installer/lib/launch4j/head/consolehead.o differ
diff --git a/installer/lib/launch4j/head/guihead.o b/installer/lib/launch4j/head/guihead.o
new file mode 100644
index 0000000000000000000000000000000000000000..ddd2be1baa704ec05c64fc77a59afed728c0e51f
Binary files /dev/null and b/installer/lib/launch4j/head/guihead.o differ
diff --git a/installer/lib/launch4j/head/head.o b/installer/lib/launch4j/head/head.o
new file mode 100644
index 0000000000000000000000000000000000000000..1cdcd670b1177807d14aac0a05f64de1edd5c664
Binary files /dev/null and b/installer/lib/launch4j/head/head.o differ
diff --git a/installer/lib/launch4j/head_src/LICENSE.txt b/installer/lib/launch4j/head_src/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b1e3f5a2638797271cbc9b91b856c05ed6942c8f
--- /dev/null
+++ b/installer/lib/launch4j/head_src/LICENSE.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/installer/lib/launch4j/head_src/consolehead/Makefile.win b/installer/lib/launch4j/head_src/consolehead/Makefile.win
new file mode 100644
index 0000000000000000000000000000000000000000..55366347b8dca0425fd01e0aa9fdd4da9a6282cd
--- /dev/null
+++ b/installer/lib/launch4j/head_src/consolehead/Makefile.win
@@ -0,0 +1,33 @@
+# Project: consolehead
+# Makefile created by Dev-C++ 4.9.9.2
+
+CPP  = g++.exe
+CC   = gcc.exe
+WINDRES = windres.exe
+RES  = 
+OBJ  = consolehead.o ../head.o $(RES)
+LINKOBJ  = consolehead.o ../head.o $(RES)
+LIBS =  -L"lib"  -s 
+INCS =  -I"include" 
+CXXINCS =  -I"lib/gcc/mingw32/3.4.2/include"  -I"include/c++/3.4.2/backward"  -I"include/c++/3.4.2/mingw32"  -I"include/c++/3.4.2"  -I"include" 
+BIN  = consolehead.exe
+CXXFLAGS = $(CXXINCS)   -fexpensive-optimizations -O3
+CFLAGS = $(INCS)   -fexpensive-optimizations -O3
+RM = rm -f
+
+.PHONY: all all-before all-after clean clean-custom
+
+all: all-before consolehead.exe all-after
+
+
+clean: clean-custom
+	${RM} $(OBJ) $(BIN)
+
+$(BIN): $(OBJ)
+	$(CC) $(LINKOBJ) -o "consolehead.exe" $(LIBS)
+
+consolehead.o: consolehead.c
+	$(CC) -c consolehead.c -o consolehead.o $(CFLAGS)
+
+../head.o: ../head.c
+	$(CC) -c ../head.c -o ../head.o $(CFLAGS)
diff --git a/installer/lib/launch4j/head_src/consolehead/consolehead.c b/installer/lib/launch4j/head_src/consolehead/consolehead.c
new file mode 100644
index 0000000000000000000000000000000000000000..cc0d85d7623065b8ca767ddc0fe9f2b02d9d16af
--- /dev/null
+++ b/installer/lib/launch4j/head_src/consolehead/consolehead.c
@@ -0,0 +1,56 @@
+/*
+
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+	Copyright (C) 2004-2005 Grzegorz Kowal
+
+	Compiled with Mingw port of GCC, Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2.1 of the License, or (at your option) any later version.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+#include "../resource.h"
+#include "../head.h"
+
+int main(int argc, char* argv[])
+{
+    setConsoleFlag();
+	HMODULE hLibrary = NULL;
+	char cmdLine[BIG_STR] = "";
+    int i; // causes error: 'for' loop initial declaration used outside C99 mode.
+	for (i = 1; i < argc; i++) {
+		strcat(cmdLine, argv[i]);
+		if (i < argc - 1) {
+			strcat(cmdLine, " ");
+		}
+	}
+	if (!prepare(hLibrary, cmdLine)) {
+		if (hLibrary != NULL) {
+			FreeLibrary(hLibrary);
+		}
+		return 1;
+	}
+	FreeLibrary(hLibrary);
+
+	int result = (int) execute(TRUE);
+	if (result == -1) {
+		char errMsg[BIG_STR] = "could not start the application: ";
+		strcat(errMsg, strerror(errno));
+		msgBox(errMsg);
+		return 1;
+	} else {
+		return result;
+	}
+}
diff --git a/installer/lib/launch4j/head_src/consolehead/consolehead.dev b/installer/lib/launch4j/head_src/consolehead/consolehead.dev
new file mode 100644
index 0000000000000000000000000000000000000000..4f55c0cefe1b0183f8b6f542eb9be223685277fe
--- /dev/null
+++ b/installer/lib/launch4j/head_src/consolehead/consolehead.dev
@@ -0,0 +1,108 @@
+[Project]
+FileName=consolehead.dev
+Name=consolehead
+UnitCount=4
+Type=1
+Ver=1
+ObjFiles=
+Includes=
+Libs=
+PrivateResource=consolehead_private.rc
+ResourceIncludes=
+MakeIncludes=
+Compiler=
+CppCompiler=
+Linker=
+IsCpp=0
+Icon=
+ExeOutput=
+ObjectOutput=
+OverrideOutput=0
+OverrideOutputName=consolehead.exe
+HostApplication=
+Folders=
+CommandLine=
+UseCustomMakefile=0
+CustomMakefile=
+IncludeVersionInfo=0
+SupportXPThemes=0
+CompilerSet=0
+CompilerSettings=0000000001001000000100
+
+[Unit1]
+FileName=consolehead.c
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[VersionInfo]
+Major=0
+Minor=1
+Release=1
+Build=1
+LanguageID=1033
+CharsetID=1252
+CompanyName=
+FileVersion=
+FileDescription=Developed using the Dev-C++ IDE
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=
+AutoIncBuildNr=0
+
+[Unit2]
+FileName=..\resource.h
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit3]
+FileName=..\head.c
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit4]
+FileName=..\head.h
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit5]
+FileName=..\head.rc
+Folder=consolehead
+Compile=1
+Link=0
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit6]
+FileName=..\resid.h
+CompileCpp=0
+Folder=consolehead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
diff --git a/installer/lib/launch4j/head_src/guihead/Makefile.win b/installer/lib/launch4j/head_src/guihead/Makefile.win
new file mode 100644
index 0000000000000000000000000000000000000000..2e3f746800ee6450d0f345467703cf2ca9769800
--- /dev/null
+++ b/installer/lib/launch4j/head_src/guihead/Makefile.win
@@ -0,0 +1,33 @@
+# Project: guihead
+# Makefile created by Dev-C++ 4.9.9.2
+
+CPP  = g++.exe
+CC   = gcc.exe
+WINDRES = windres.exe
+RES  = 
+OBJ  = guihead.o ../head.o $(RES)
+LINKOBJ  = guihead.o ../head.o $(RES)
+LIBS =  -L"lib" -mwindows   
+INCS =  -I"include" 
+CXXINCS =  -I"lib/gcc/mingw32/3.4.2/include"  -I"include/c++/3.4.2/backward"  -I"include/c++/3.4.2/mingw32"  -I"include/c++/3.4.2"  -I"include" 
+BIN  = guihead.exe
+CXXFLAGS = $(CXXINCS)   -fexpensive-optimizations -O3
+CFLAGS = $(INCS)   -fexpensive-optimizations -O3
+RM = rm -f
+
+.PHONY: all all-before all-after clean clean-custom
+
+all: all-before guihead.exe all-after
+
+
+clean: clean-custom
+	${RM} $(OBJ) $(BIN)
+
+$(BIN): $(OBJ)
+	$(CC) $(LINKOBJ) -o "guihead.exe" $(LIBS)
+
+guihead.o: guihead.c
+	$(CC) -c guihead.c -o guihead.o $(CFLAGS)
+
+../head.o: ../head.c
+	$(CC) -c ../head.c -o ../head.o $(CFLAGS)
diff --git a/installer/lib/launch4j/head_src/guihead/guihead.c b/installer/lib/launch4j/head_src/guihead/guihead.c
new file mode 100644
index 0000000000000000000000000000000000000000..cbc1c76167ef89dbba0622e85db6ced68c3c2c7d
--- /dev/null
+++ b/installer/lib/launch4j/head_src/guihead/guihead.c
@@ -0,0 +1,155 @@
+/*
+
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+	Copyright (C) 2004-2005 Grzegorz Kowal
+
+	Compiled with Mingw port of GCC, Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2.1 of the License, or (at your option) any later version.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+#include "../resource.h"
+#include "../head.h"
+#include "guihead.h"
+
+extern PROCESS_INFORMATION pi;
+
+HWND hWnd;
+DWORD dwExitCode = 0;
+BOOL stayAlive = FALSE;
+BOOL splash = FALSE;
+BOOL splashTimeoutErr;
+BOOL waitForWindow;
+int splashTimeout;		// tick count (s)
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+                     HINSTANCE hPrevInstance,
+                     LPSTR     lpCmdLine,
+                     int       nCmdShow) {
+	HMODULE hLibrary = NULL;
+	if (!prepare(hLibrary, lpCmdLine)) {
+		if (hLibrary != NULL) {
+			FreeLibrary(hLibrary);
+		}
+		return 1;
+	}
+
+	splash = loadBoolString(hLibrary, SHOW_SPLASH);
+	stayAlive = loadBoolString(hLibrary, GUI_HEADER_STAYS_ALIVE);
+	if (splash || stayAlive) {
+		hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, "STATIC", "",
+				WS_POPUP | SS_BITMAP,
+				0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
+		if (splash) {
+			char timeout[10] = "";
+			if (!loadString(hLibrary, SPLASH_TIMEOUT, timeout)) {
+				msgBox("Cannot load splash timeout property.");
+				return 1;
+			}
+			splashTimeout = atoi(timeout);
+			if (splashTimeout <= 0 || splashTimeout > 60 * 15 /* 15 minutes */) {
+				msgBox("Invalid splash timeout property.");
+				return 1;
+			}
+			splashTimeoutErr = loadBoolString(hLibrary, SPLASH_TIMEOUT_ERR);
+			waitForWindow = loadBoolString(hLibrary, SPLASH_WAITS_FOR_WINDOW);
+			HANDLE hImage = LoadImage(hInstance,	// handle of the instance containing the image
+					MAKEINTRESOURCE(SPLASH_BITMAP),	// name or identifier of image
+					IMAGE_BITMAP,					// type of image
+					0,								// desired width
+					0,								// desired height
+					LR_DEFAULTSIZE);
+			if (hImage == NULL) {
+				msgBox("Cannot load splash screen.");
+				return 1;
+			}
+			SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hImage);
+			RECT rect;
+			GetWindowRect(hWnd, &rect);
+			int x = (GetSystemMetrics(SM_CXSCREEN) - (rect.right - rect.left)) / 2;
+			int y = (GetSystemMetrics(SM_CYSCREEN) - (rect.bottom - rect.top)) / 2;
+			SetWindowPos(hWnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE);
+			ShowWindow(hWnd, nCmdShow);
+			UpdateWindow (hWnd);
+		}
+		if (!SetTimer (hWnd, ID_TIMER, 1000 /* 1s */, TimerProc)) {
+			return 1;
+		}
+	}
+	FreeLibrary(hLibrary);
+	if (execute(FALSE) == -1) {
+		char errMsg[BIG_STR] = "Error occured while starting the application...\n";
+		strcat(errMsg, strerror(errno));
+		msgBox(errMsg);
+		return 1;
+	}
+	if (!(splash || stayAlive)) {
+		closeHandles();
+		return 0;
+	}
+	MSG msg;
+	while (GetMessage(&msg, NULL, 0, 0)) {
+		TranslateMessage(&msg);
+		DispatchMessage(&msg);
+	}
+	closeHandles();
+	return dwExitCode;
+}
+
+BOOL CALLBACK enumwndfn(HWND hwnd, LPARAM lParam) {
+	DWORD processId;
+	GetWindowThreadProcessId(hwnd, &processId);
+	if (pi.dwProcessId == processId) {
+		LONG styles = GetWindowLong(hwnd, GWL_STYLE);
+		if ((styles & WS_VISIBLE) != 0) {
+			splash = FALSE;
+			ShowWindow(hWnd, SW_HIDE);
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
+
+VOID CALLBACK TimerProc(
+	HWND hwnd,			// handle of window for timer messages
+	UINT uMsg,			// WM_TIMER message
+	UINT idEvent,		// timer identifier
+	DWORD dwTime) {		// current system time
+	
+	if (splash) {
+		if (splashTimeout == 0) {
+			splash = FALSE;
+			ShowWindow(hWnd, SW_HIDE);
+			if (waitForWindow && splashTimeoutErr) {
+				KillTimer(hwnd, ID_TIMER);
+				msgBox("Could not start the application, operation timed out.");
+				PostQuitMessage(0);
+			}
+		} else {
+			splashTimeout--;
+			if (waitForWindow) {
+				EnumWindows(enumwndfn, 0);
+			}
+		}
+	}
+	GetExitCodeProcess(pi.hProcess, &dwExitCode);
+	if (dwExitCode != STILL_ACTIVE
+			|| !(splash || stayAlive)) {
+		KillTimer(hWnd, ID_TIMER);
+		PostQuitMessage(0);	
+		return;
+	}
+}
diff --git a/installer/lib/launch4j/head_src/guihead/guihead.dev b/installer/lib/launch4j/head_src/guihead/guihead.dev
new file mode 100644
index 0000000000000000000000000000000000000000..ec0403d27e50c2879f6b1b280f46948f9d7033cc
--- /dev/null
+++ b/installer/lib/launch4j/head_src/guihead/guihead.dev
@@ -0,0 +1,119 @@
+[Project]
+FileName=guihead.dev
+Name=guihead
+UnitCount=5
+Type=0
+Ver=1
+ObjFiles=
+Includes=
+Libs=
+PrivateResource=
+ResourceIncludes=
+MakeIncludes=
+Compiler=
+CppCompiler=
+Linker=_@@_
+IsCpp=0
+Icon=
+ExeOutput=
+ObjectOutput=
+OverrideOutput=0
+OverrideOutputName=guihead.exe
+HostApplication=
+Folders=
+CommandLine=
+UseCustomMakefile=0
+CustomMakefile=
+IncludeVersionInfo=0
+SupportXPThemes=0
+CompilerSet=0
+CompilerSettings=0000000001001000000000
+
+[Unit1]
+FileName=guihead.c
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit2]
+FileName=guihead.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[VersionInfo]
+Major=0
+Minor=1
+Release=1
+Build=1
+LanguageID=1033
+CharsetID=1252
+CompanyName=
+FileVersion=
+FileDescription=Developed using the Dev-C++ IDE
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=
+AutoIncBuildNr=0
+
+[Unit4]
+FileName=..\head.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit6]
+FileName=..\resource.h
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+CompileCpp=0
+
+[Unit7]
+FileName=..\resid.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit3]
+FileName=..\head.c
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit5]
+FileName=..\resource.h
+CompileCpp=0
+Folder=guihead
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
diff --git a/installer/lib/launch4j/head_src/guihead/guihead.h b/installer/lib/launch4j/head_src/guihead/guihead.h
new file mode 100644
index 0000000000000000000000000000000000000000..26b51e0c6464593c10eaa5725d8ac55cf9de3196
--- /dev/null
+++ b/installer/lib/launch4j/head_src/guihead/guihead.h
@@ -0,0 +1,31 @@
+/*
+
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+	Copyright (C) 2004-2005 Grzegorz Kowal
+
+	Compiled with Mingw port of GCC, Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2.1 of the License, or (at your option) any later version.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+#define ID_TIMER 1
+
+VOID CALLBACK TimerProc(
+  HWND hwnd,     // handle of window for timer messages
+  UINT uMsg,     // WM_TIMER message
+  UINT idEvent,  // timer identifier
+  DWORD dwTime   // current system time
+);
diff --git a/installer/lib/launch4j/head_src/head.c b/installer/lib/launch4j/head_src/head.c
new file mode 100644
index 0000000000000000000000000000000000000000..b1ce585526b6ca3d3edc47793f7d94916e9e6e86
--- /dev/null
+++ b/installer/lib/launch4j/head_src/head.c
@@ -0,0 +1,358 @@
+/*
+
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+	Copyright (C) 2004-2005 Grzegorz Kowal
+
+	Compiled with Mingw port of GCC, Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2.1 of the License, or (at your option) any later version.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+#include "resource.h"
+#include "head.h"
+
+BOOL console = FALSE;
+int foundJava = NO_JAVA_FOUND;
+
+struct _stat statBuf;
+PROCESS_INFORMATION pi;
+
+char errTitle[STR] = "launch4j";
+char javaMinVer[STR] = "";
+char javaMaxVer[STR] = "";
+char foundJavaVer[STR] = "";
+
+char workingDir[_MAX_PATH] = "";
+char cmd[_MAX_PATH] = "";
+char args[BIG_STR * 2] = "";
+
+void setConsoleFlag() {
+     console = TRUE;
+}
+
+void msgBox(const char* text) {
+    if (console) {
+        printf("%s: %s\n", errTitle, text);
+    } else {
+    	MessageBox(NULL, text, errTitle, MB_OK);
+    }
+}
+
+void showJavaWebPage() {
+	ShellExecute(NULL, "open", "http://java.com", NULL, NULL, SW_SHOWNORMAL);
+}
+
+BOOL loadString(HMODULE hLibrary, int resID, char* buffer) {
+	HRSRC hResource;
+	HGLOBAL hResourceLoaded;
+	LPBYTE lpBuffer;
+
+	hResource = FindResourceEx(hLibrary, RT_RCDATA, MAKEINTRESOURCE(resID),
+			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT));
+	if (NULL != hResource) {
+		hResourceLoaded = LoadResource(hLibrary, hResource);
+		if (NULL != hResourceLoaded) {
+			lpBuffer = (LPBYTE) LockResource(hResourceLoaded);            
+			if (NULL != lpBuffer) {     
+				int x = 0;
+				do {
+					buffer[x] = (char) lpBuffer[x];
+				} while (buffer[x++] != 0);
+				return TRUE;
+			}
+		}    
+	}
+	return FALSE;
+}
+
+BOOL loadBoolString(HMODULE hLibrary, int resID) {
+	char boolStr[10] = "";
+	loadString(hLibrary, resID, boolStr);
+	return strcmp(boolStr, TRUE_STR) == 0;
+}
+
+void regSearch(HKEY hKey, char* keyName, int searchType) {
+	DWORD x = 0;
+	unsigned long size = BIG_STR;
+	FILETIME time;
+	char buffer[BIG_STR] = "";
+	while (RegEnumKeyEx(
+				hKey,			// handle to key to enumerate
+				x++,			// index of subkey to enumerate
+				buffer,			// address of buffer for subkey name
+				&size,			// address for size of subkey buffer
+				NULL,			// reserved
+				NULL,			// address of buffer for class string
+				NULL,			// address for size of class buffer
+				&time) == ERROR_SUCCESS) {
+		if (strcmp(buffer, javaMinVer) >= 0
+				&& (javaMaxVer[0] == 0 || strcmp(buffer, javaMaxVer) <= 0)
+				&& strcmp(buffer, foundJavaVer) > 0) {
+			strcpy(foundJavaVer, buffer);
+			foundJava = searchType;
+		}
+		size = BIG_STR;
+	}
+}
+
+BOOL findJavaHome(char* path) {
+	HKEY hKey;
+	char jre[] = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
+	char sdk[] = "SOFTWARE\\JavaSoft\\Java Development Kit";
+	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+			TEXT(jre),
+			0,
+            KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
+			&hKey) == ERROR_SUCCESS) {
+		regSearch(hKey, jre, FOUND_JRE);
+		RegCloseKey(hKey);
+	}
+	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+			TEXT(sdk),
+			0,
+            KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
+			&hKey) == ERROR_SUCCESS) {
+		regSearch(hKey, sdk, FOUND_SDK);
+		RegCloseKey(hKey);
+	}
+	if (foundJava != NO_JAVA_FOUND) {
+		char keyBuffer[BIG_STR];
+		unsigned long datatype;
+		unsigned long bufferlength = BIG_STR;
+		if (foundJava == FOUND_JRE)	{
+			strcpy(keyBuffer, jre);
+		} else {
+			strcpy(keyBuffer, sdk);
+		}
+		strcat(keyBuffer, "\\");
+		strcat(keyBuffer, foundJavaVer);
+		if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+			TEXT(keyBuffer),
+			0,
+            KEY_QUERY_VALUE,
+			&hKey) == ERROR_SUCCESS) {
+			unsigned char buffer[BIG_STR];
+			if (RegQueryValueEx(hKey, "JavaHome", NULL, &datatype, buffer, &bufferlength)
+					== ERROR_SUCCESS) {
+				int i = 0;
+				do {
+					path[i] = buffer[i];
+				} while (path[i++] != 0);
+				if (foundJava == FOUND_SDK) {
+					strcat(path, "\\jre");
+				}
+				RegCloseKey(hKey);
+				return TRUE;
+			}
+			RegCloseKey(hKey);
+		}
+	}
+	return FALSE;
+}
+
+/*
+ * extract the executable name, returns path length.
+ */
+int getExePath(char* exePath) {
+	HMODULE hModule = GetModuleHandle(NULL);
+    if (hModule == 0
+			|| GetModuleFileName(hModule, exePath, _MAX_PATH) == 0) {
+        return -1;
+    }
+	return strrchr(exePath, '\\') - exePath;
+}
+
+void appendJavaw(char* jrePath) {
+    if (console) {
+	    strcat(jrePath, "\\bin\\java.exe");
+    } else {
+        strcat(jrePath, "\\bin\\javaw.exe");
+    }
+}
+
+void appendLauncher(BOOL setProcName, char* exePath, int pathLen, char* cmd) {
+	if (setProcName) {
+		char tmpspec[_MAX_PATH] = "";
+		char tmpfile[_MAX_PATH] = "";
+		strcpy(tmpspec, cmd);
+		strcat(tmpspec, LAUNCH4J_TMP_DIR);
+		tmpspec[strlen(tmpspec) - 1] = 0;
+		if (_stat(tmpspec, &statBuf) == 0) {
+			// remove temp launchers
+			struct _finddata_t c_file;
+			long hFile;
+			strcat(tmpspec, "\\*.exe");
+			strcpy(tmpfile, cmd);
+			strcat(tmpfile, LAUNCH4J_TMP_DIR);
+			char* filename = tmpfile + strlen(tmpfile);
+			if ((hFile = _findfirst(tmpspec, &c_file)) != -1L) {
+				do {
+					strcpy(filename, c_file.name);
+					_unlink(tmpfile);
+				} while (_findnext(hFile, &c_file) == 0);
+			}
+			_findclose(hFile);
+		} else {
+			if (_mkdir(tmpspec) != 0) {
+				appendJavaw(cmd);
+				return;
+			}
+		}
+		char javaw[_MAX_PATH] = "";
+		strcpy(javaw, cmd);
+		appendJavaw(javaw);
+		strcpy(tmpfile, cmd);
+		strcat(tmpfile, LAUNCH4J_TMP_DIR);
+		char* exeFilePart = exePath + pathLen + 1;
+		strcat(tmpfile, exeFilePart);
+		if (CopyFile(javaw, tmpfile, FALSE)) {
+			strcpy(cmd, tmpfile);
+			return;
+		} else {
+			long fs = statBuf.st_size;
+			if (_stat(tmpfile, &statBuf) == 0 && fs == statBuf.st_size) {
+				strcpy(cmd, tmpfile);
+				return;
+			}
+		}
+	}
+	appendJavaw(cmd);
+}
+
+BOOL isJrePathOk(char* path) {
+	if (!*path) {
+		return FALSE;
+	}
+	char javaw[_MAX_PATH];
+	strcpy(javaw, path);
+	appendJavaw(javaw);
+	return _stat(javaw, &statBuf) == 0;
+}
+
+BOOL prepare(HMODULE hLibrary, char *lpCmdLine) {
+	// open executable
+	char exePath[_MAX_PATH] = "";
+	int pathLen = getExePath(exePath);
+	if (pathLen == -1) {
+		msgBox("Cannot determinate exe file name.");
+		return FALSE;
+	}
+	hLibrary = LoadLibrary(exePath);
+	if (hLibrary == NULL) {
+		char msg[BIG_STR] = "Cannot find file: ";
+		strcat(msg, exePath);
+		msgBox(msg);
+		return FALSE;
+	}
+
+	// error message box title
+	loadString(hLibrary, ERR_TITLE, errTitle);
+
+	// working dir
+	char tmp_path[_MAX_PATH] = "";
+	if (loadString(hLibrary, CHDIR, tmp_path)) {
+		strncpy(workingDir, exePath, pathLen);
+		strcat(workingDir, "/");
+		strcat(workingDir, tmp_path);
+		_chdir(workingDir);
+	}
+
+	// custom process name
+	const BOOL setProcName = loadBoolString(hLibrary, SET_PROC_NAME);
+
+	// use bundled jre or find java
+	if (loadString(hLibrary, JRE_PATH, tmp_path)) {
+		strncpy(cmd, exePath, pathLen);
+		strcat(cmd, "/");
+		strcat(cmd, tmp_path);		
+    }
+	if (!isJrePathOk(cmd)) {
+		if (!loadString(hLibrary, JAVA_MIN_VER, javaMinVer)) {
+			msgBox("Cannot find bundled JRE or javaw.exe is missing.");
+			return FALSE;
+		}
+		loadString(hLibrary, JAVA_MAX_VER, javaMaxVer);
+		if (!findJavaHome(cmd)) {
+			char txt[BIG_STR] = "Cannot find Java ";
+			strcat(txt, javaMinVer);
+			if (*javaMaxVer) {
+				strcat(txt, " - ");
+				strcat(txt, javaMaxVer);
+			}
+			msgBox(txt);
+			showJavaWebPage();
+			return FALSE;
+		}
+		if (!isJrePathOk(cmd)) {
+			msgBox("Java found, but javaw.exe seems to be missing.");
+			return FALSE;
+		}
+	}
+
+	appendLauncher(setProcName, exePath, pathLen, cmd);
+
+	char jarArgs[BIG_STR] = "";
+	loadString(hLibrary, JAR_ARGS, jarArgs);
+	loadString(hLibrary, JVM_ARGS, args);
+	if (*args) {
+		strcat(args, " ");
+	}
+	strcat(args, "-jar \"");
+	strcat(args, exePath);
+	strcat(args, "\"");
+	if (*jarArgs) {
+		strcat(args, " ");
+		strcat(args, jarArgs);
+	}
+	if (*lpCmdLine) {
+		strcat(args, " ");
+		strcat(args, lpCmdLine);
+	}
+
+	// msgBox(cmd);
+	// msgBox(args);
+	// msgBox(workingDir);
+	return TRUE;
+}
+
+void closeHandles() {
+	CloseHandle(pi.hThread);
+	CloseHandle(pi.hProcess);
+}
+
+DWORD execute(BOOL wait) {
+	STARTUPINFO si;
+    memset(&pi, 0, sizeof(pi));
+    memset(&si, 0, sizeof(si));
+    si.cb = sizeof(si);
+
+	DWORD dwExitCode = -1;
+	char cmdline[_MAX_PATH + BIG_STR] = "\"";
+	strcat(cmdline, cmd);
+	strcat(cmdline, "\" ");
+	strcat(cmdline, args);
+	if (CreateProcess(NULL, cmdline, NULL, NULL,
+			FALSE, 0, NULL, NULL, &si, &pi)) {
+		if (wait) {
+			WaitForSingleObject(pi.hProcess, INFINITE);
+			GetExitCodeProcess(pi.hProcess, &dwExitCode);
+			closeHandles();
+		} else {
+			dwExitCode = 0;
+		}
+	}
+	return dwExitCode;
+}
diff --git a/installer/lib/launch4j/head_src/head.h b/installer/lib/launch4j/head_src/head.h
new file mode 100644
index 0000000000000000000000000000000000000000..412092ff962c63caaf91e190da7ff87dfa892ca2
--- /dev/null
+++ b/installer/lib/launch4j/head_src/head.h
@@ -0,0 +1,69 @@
+/*
+
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+	Copyright (C) 2004-2005 Grzegorz Kowal
+
+	Compiled with Mingw port of GCC, Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2.1 of the License, or (at your option) any later version.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+#ifndef _LAUNCH4J_HEAD__INCLUDED_
+#define _LAUNCH4J_HEAD__INCLUDED_
+
+#define WIN32_LEAN_AND_MEAN		// VC - Exclude rarely-used stuff from Windows headers
+
+// Windows Header Files:
+#include <windows.h>
+
+// C RunTime Header Files
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+#include <shellapi.h>
+#include <direct.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <io.h>
+#include <process.h>
+
+#define NO_JAVA_FOUND 0
+#define FOUND_JRE 1
+#define FOUND_SDK 2
+
+#define LAUNCH4J_TMP_DIR "\\launch4j-tmp\\"
+
+#define STR 128
+#define BIG_STR 1024
+
+#define TRUE_STR "true"
+#define FALSE_STR "false"
+
+void msgBox(const char* text);
+void showJavaWebPage();
+BOOL loadString(HMODULE hLibrary, int resID, char* buffer);
+BOOL loadBoolString(HMODULE hLibrary, int resID);
+void regSearch(HKEY hKey, char* keyName, int searchType);
+BOOL findJavaHome(char* path);
+int getExePath(char* exePath);
+void catJavaw(char* jrePath);
+BOOL isJrePathOk(char* path);
+BOOL prepare(HMODULE hLibrary, char *lpCmdLine);
+void closeHandles();
+DWORD execute(BOOL wait);
+
+#endif // _LAUNCH4J_HEAD__INCLUDED_
diff --git a/installer/lib/launch4j/head_src/resource.h b/installer/lib/launch4j/head_src/resource.h
new file mode 100644
index 0000000000000000000000000000000000000000..d5bec63812698db91b40fa57828a3f806adb265c
--- /dev/null
+++ b/installer/lib/launch4j/head_src/resource.h
@@ -0,0 +1,43 @@
+/*
+
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+	Copyright (C) 2004-2005 Grzegorz Kowal
+
+	Compiled with Mingw port of GCC, Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2.1 of the License, or (at your option) any later version.
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// ICON
+#define APP_ICON 1
+
+// BITMAP
+#define SPLASH_BITMAP 1
+
+// RCDATA
+#define JRE_PATH 1
+#define JAVA_MIN_VER 2
+#define JAVA_MAX_VER 3
+#define SHOW_SPLASH 4
+#define SPLASH_WAITS_FOR_WINDOW 5
+#define SPLASH_TIMEOUT 6
+#define SPLASH_TIMEOUT_ERR 7
+#define CHDIR 8
+#define SET_PROC_NAME 9
+#define ERR_TITLE 10
+#define GUI_HEADER_STAYS_ALIVE 11
+#define JVM_ARGS 12
+#define JAR_ARGS 13
diff --git a/installer/lib/launch4j/launch4j b/installer/lib/launch4j/launch4j
new file mode 100644
index 0000000000000000000000000000000000000000..f839f21b13a0d545f1bfc45618300bd8544374e8
--- /dev/null
+++ b/installer/lib/launch4j/launch4j
@@ -0,0 +1,8 @@
+#!/bin/sh
+cd `dirname $0`
+if [ -n "$JAVA_HOME" ]; then
+  $JAVA_HOME/bin/java -jar ./launch4j.jar $*
+else
+  java -jar ./launch4j.jar $*
+fi
+cd $OLDPWD
diff --git a/installer/lib/launch4j/launch4j.jar b/installer/lib/launch4j/launch4j.jar
new file mode 100644
index 0000000000000000000000000000000000000000..9e59abfb87b7667c2beefc4c3e36528977cfb830
Binary files /dev/null and b/installer/lib/launch4j/launch4j.jar differ
diff --git a/installer/lib/launch4j/launch4j.jfpr b/installer/lib/launch4j/launch4j.jfpr
new file mode 100644
index 0000000000000000000000000000000000000000..a2e63ebc52079828ded48f8c80a29a4684b56902
Binary files /dev/null and b/installer/lib/launch4j/launch4j.jfpr differ
diff --git a/installer/lib/launch4j/lib/JGoodies.Forms.LICENSE.txt b/installer/lib/launch4j/lib/JGoodies.Forms.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9ba2419e7fdbb6200d4889228f37b8d5071c89fd
--- /dev/null
+++ b/installer/lib/launch4j/lib/JGoodies.Forms.LICENSE.txt
@@ -0,0 +1,31 @@
+
+              The BSD License for the JGoodies Forms
+              ======================================
+
+Copyright (c) 2002-2004 JGoodies Karsten Lentzsch. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+ o Redistributions of source code must retain the above copyright notice, 
+   this list of conditions and the following disclaimer. 
+    
+ o Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation 
+   and/or other materials provided with the distribution. 
+    
+ o Neither the name of JGoodies Karsten Lentzsch nor the names of 
+   its contributors may be used to endorse or promote products derived 
+   from this software without specific prior written permission. 
+    
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/installer/lib/launch4j/lib/JGoodies.Looks.LICENSE.txt b/installer/lib/launch4j/lib/JGoodies.Looks.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ea98a5b3b441465090913cc7bd7381ab761b6e0
--- /dev/null
+++ b/installer/lib/launch4j/lib/JGoodies.Looks.LICENSE.txt
@@ -0,0 +1,30 @@
+           The BSD License for the JGoodies Looks
+           ======================================
+
+Copyright (c) 2003 JGoodies Karsten Lentzsch. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+ o Redistributions of source code must retain the above copyright notice, 
+   this list of conditions and the following disclaimer. 
+    
+ o Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation 
+   and/or other materials provided with the distribution. 
+    
+ o Neither the name of JGoodies Karsten Lentzsch nor the names of 
+   its contributors may be used to endorse or promote products derived 
+   from this software without specific prior written permission. 
+    
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/installer/lib/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt b/installer/lib/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b1e3f5a2638797271cbc9b91b856c05ed6942c8f
--- /dev/null
+++ b/installer/lib/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/installer/lib/launch4j/lib/XStream.LICENSE.txt b/installer/lib/launch4j/lib/XStream.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4848b3e4e5d1224bb00a8d379c208b27853186b3
--- /dev/null
+++ b/installer/lib/launch4j/lib/XStream.LICENSE.txt
@@ -0,0 +1,27 @@
+(BSD Style License)
+
+Copyright (c) 2003-2004, Joe Walnes
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/installer/lib/launch4j/lib/commons-beanutils.jar b/installer/lib/launch4j/lib/commons-beanutils.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b1b89c9c921f16af22a88db3ff28975a8e40d886
Binary files /dev/null and b/installer/lib/launch4j/lib/commons-beanutils.jar differ
diff --git a/installer/lib/launch4j/lib/commons-logging.jar b/installer/lib/launch4j/lib/commons-logging.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b73a80fab641131e6fbe3ae833549efb3c540d17
Binary files /dev/null and b/installer/lib/launch4j/lib/commons-logging.jar differ
diff --git a/installer/lib/launch4j/lib/commons.LICENSE.txt b/installer/lib/launch4j/lib/commons.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fdb6475220af83857099a5eb3cc630a442ce1cbf
--- /dev/null
+++ b/installer/lib/launch4j/lib/commons.LICENSE.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+ 
+ Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+ 
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+ 
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+ 
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+ 
+ 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
+    used to  endorse or promote  products derived from  this software without
+    prior written permission. For written permission, please contact
+    apache@apache.org.
+ 
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+ 
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation and was  originally created by
+ Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache 
+ Software Foundation, please see <http://www.apache.org/>.
+ 
+*/
diff --git a/installer/lib/launch4j/lib/formsrt.jar b/installer/lib/launch4j/lib/formsrt.jar
new file mode 100644
index 0000000000000000000000000000000000000000..a13f3f7cab254677afe958a73c3ca8bcc4c97739
Binary files /dev/null and b/installer/lib/launch4j/lib/formsrt.jar differ
diff --git a/installer/lib/launch4j/lib/foxtrot.LICENSE.txt b/installer/lib/launch4j/lib/foxtrot.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5fa4019d5bff32e5cedc023bb012af52a7f9d45f
--- /dev/null
+++ b/installer/lib/launch4j/lib/foxtrot.LICENSE.txt
@@ -0,0 +1,25 @@
+Copyright (c) 2002, Simone Bordet & Marco Cravero
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted 
+provided that the following conditions are met: 
+
+	- Redistributions of source code must retain the above copyright notice, 
+	  this list of conditions and the following disclaimer. 
+
+	- Redistributions in binary form must reproduce the above copyright notice, 
+	  this list of conditions and the following disclaimer in the documentation 
+	  and/or other materials provided with the distribution. 
+
+	- Neither the name of Foxtrot nor the names of the contributors may be used 
+	  to endorse or promote products derived from this software without specific prior 
+	  written permission.
+	  
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS 
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS 
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/installer/lib/launch4j/lib/foxtrot.jar b/installer/lib/launch4j/lib/foxtrot.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f39103a09090864fec56b5cf95d8bb74ae9229ac
Binary files /dev/null and b/installer/lib/launch4j/lib/foxtrot.jar differ
diff --git a/installer/lib/launch4j/lib/looks.jar b/installer/lib/launch4j/lib/looks.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b97ef7792873ed9ffc60bb5c0f60d8ee8dca014e
Binary files /dev/null and b/installer/lib/launch4j/lib/looks.jar differ
diff --git a/installer/lib/launch4j/lib/xstream.jar b/installer/lib/launch4j/lib/xstream.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0245e05732107ddc70b0dc7d66b2da700c1a32f3
Binary files /dev/null and b/installer/lib/launch4j/lib/xstream.jar differ
diff --git a/installer/lib/launch4j/readme.txt b/installer/lib/launch4j/readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c74ec42534a3a63759e46dc8e7efc074dd413b9c
--- /dev/null
+++ b/installer/lib/launch4j/readme.txt
@@ -0,0 +1,35 @@
+Launch4j  Cross-platform java application wrapper for creating windows native executables.
+Copyright (C) 2005 Grzegorz Kowal
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Head subproject (the code which is attached to the wrapped jars) is
+licensed under the GNU Lesser General Public License.
+
+Launch4j may be used for wrapping closed source, commercial applications.
+
+The following projects are used by Launch4j...
+	MinGW binutils (http://www.mingw.org/)
+	Commons BeanUtils (http://jakarta.apache.org/commons/beanutils/)
+	Commons Logging (http://jakarta.apache.org/commons/logging/)
+	XStream (http://xstream.codehaus.org/)
+	JGoodies Forms (http://www.jgoodies.com/freeware/forms/)
+	JGoodies Looks (http://www.jgoodies.com/freeware/looks/)
+	Foxtrot (http://foxtrot.sourceforge.net/)
+	Nuvola Icon Theme (http://www.icon-king.com)
+	Forms were created using Abeille Forms Designer (https://abeille.dev.java.net/)
+
+This product includes software developed by the Apache Software Foundation (http://www.apache.org/).
diff --git a/installer/lib/launch4j/src/images/build.png b/installer/lib/launch4j/src/images/build.png
new file mode 100644
index 0000000000000000000000000000000000000000..625285f0bb6d7bb8991258c0785bd5ec3128687c
Binary files /dev/null and b/installer/lib/launch4j/src/images/build.png differ
diff --git a/installer/lib/launch4j/src/images/info.png b/installer/lib/launch4j/src/images/info.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb37d9a08ca5fd4de38469d336d0ad9f62b4067a
Binary files /dev/null and b/installer/lib/launch4j/src/images/info.png differ
diff --git a/installer/lib/launch4j/src/images/new.png b/installer/lib/launch4j/src/images/new.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e2700ad915ecc84c5beb896b8138e831d6a41e1
Binary files /dev/null and b/installer/lib/launch4j/src/images/new.png differ
diff --git a/installer/lib/launch4j/src/images/open.png b/installer/lib/launch4j/src/images/open.png
new file mode 100644
index 0000000000000000000000000000000000000000..a801665fd57e06c74dfdc33a68c4f53af285fe36
Binary files /dev/null and b/installer/lib/launch4j/src/images/open.png differ
diff --git a/installer/lib/launch4j/src/images/open16.png b/installer/lib/launch4j/src/images/open16.png
new file mode 100644
index 0000000000000000000000000000000000000000..5321c17c63fc8cbc8b62eb600851b2eaaf9ddddc
Binary files /dev/null and b/installer/lib/launch4j/src/images/open16.png differ
diff --git a/installer/lib/launch4j/src/images/run.png b/installer/lib/launch4j/src/images/run.png
new file mode 100644
index 0000000000000000000000000000000000000000..b41fa2b975b37b4cf67f50a1c403480c2649313d
Binary files /dev/null and b/installer/lib/launch4j/src/images/run.png differ
diff --git a/installer/lib/launch4j/src/images/save.png b/installer/lib/launch4j/src/images/save.png
new file mode 100644
index 0000000000000000000000000000000000000000..74b37b0b5101b0b7136653b7cde0885b6dc7dc9b
Binary files /dev/null and b/installer/lib/launch4j/src/images/save.png differ
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/Builder.java b/installer/lib/launch4j/src/net/sf/launch4j/Builder.java
new file mode 100644
index 0000000000000000000000000000000000000000..6813ab26e30c61860e9f3f19ba1871f69991b698
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/Builder.java
@@ -0,0 +1,189 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import net.sf.launch4j.binding.InvariantViolationException;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Builder {
+	private final Log _log;
+
+	public Builder(Log log) {
+		_log = log;
+	}
+
+	/**
+	 * @return Output file path.
+	 */
+	public File build() throws BuilderException {
+		final Config c = ConfigPersister.getInstance().getConfig();
+		try {
+			c.validate();
+		} catch (InvariantViolationException e) {
+			throw new BuilderException(e.getMessage());
+		}
+		File rc = null;
+		File ro = null;
+		File outfile = null;
+		FileInputStream is = null;
+		FileOutputStream os = null;
+		final RcBuilder rcb = new RcBuilder();
+		try {
+			String basedir = Util.getJarBasedir();
+			if (basedir == null) {
+				basedir = ".";
+			}
+			rc = rcb.build(c);
+			ro = File.createTempFile("launch4j", "o");
+			outfile = ConfigPersister.getInstance().getOutputFile();
+
+			Cmd resCmd = new Cmd(basedir);
+			resCmd.addExe("/bin/windres")
+					.add(Util.WINDOWS_OS ? "--preprocessor=type" : "--preprocessor=cat")
+					.add("-J rc -O coff -F pe-i386")
+					.add(rc.getPath())
+					.add(ro.getPath());
+			_log.append("Compiling resources");
+			Util.exec(resCmd.toString(), _log);
+
+			Cmd ldCmd = new Cmd(basedir);
+			ldCmd.addExe("/bin/ld")
+					.add("-mi386pe")
+					.add("--oformat pei-i386")
+					.add((c.getHeaderType() == Config.GUI_HEADER)
+							? "--subsystem windows" : "--subsystem console")
+					.add("-s")		// strip symbols
+					.addFile("/w32api/crt2.o")
+					.addFile((c.getHeaderType() == Config.GUI_HEADER)
+							? "/head/guihead.o" : "/head/consolehead.o")
+					.addFile("/head/head.o")
+					.addAbsFile(ro.getPath())
+					.addFile("/w32api/libmingw32.a")
+					.addFile("/w32api/libgcc.a")
+					.addFile("/w32api/libmsvcrt.a")
+					.addFile("/w32api/libkernel32.a")
+					.addFile("/w32api/libuser32.a")
+					.addFile("/w32api/libadvapi32.a")
+					.addFile("/w32api/libshell32.a")
+					.add("-o")
+					.addAbsFile(outfile.getPath());
+			_log.append("Linking");
+			Util.exec(ldCmd.toString(), _log);
+
+			_log.append("Wrapping");
+			int len;
+			byte[] buffer = new byte[1024];
+			is = new FileInputStream(
+					Util.getAbsoluteFile(ConfigPersister.getInstance().getConfigPath(),	c.getJar()));
+			os = new FileOutputStream(outfile, true);
+			while ((len = is.read(buffer)) > 0) {
+				os.write(buffer, 0, len);
+			}
+			_log.append("Successfully created " + outfile.getPath());
+			return outfile;
+		} catch (IOException e) {
+			Util.delete(outfile);
+			_log.append(e.getMessage());
+			throw new BuilderException(e);
+		} catch (ExecException e) {
+			Util.delete(outfile);
+			String msg = e.getMessage(); 
+			if (msg != null && msg.indexOf("windres") != -1) {
+				_log.append("Generated resource file...\n");
+				_log.append(rcb.getContent());
+			}
+			throw new BuilderException(e);
+		} finally {
+			Util.close(is);
+			Util.close(os);
+			Util.delete(rc);
+			Util.delete(ro);
+		}
+	}
+}
+
+class Cmd {
+	private final StringBuffer _sb = new StringBuffer();
+	private final String _basedir;
+	private final boolean _quote;
+
+	public Cmd(String basedir) {
+		_basedir = basedir;
+		_quote = basedir.indexOf(' ') != -1;
+	}
+
+	public Cmd add(String s) {
+		space();
+		_sb.append(s);
+		return this;
+	}
+
+	public Cmd addAbsFile(String file) {
+		space();
+		boolean quote = file.indexOf(' ') != -1;
+		if (quote) {
+			_sb.append('"');
+		}
+		_sb.append(file);
+		if (quote) {
+			_sb.append('"');
+		}
+		return this;
+	}
+
+	public Cmd addFile(String file) {
+		space();
+		if (_quote) {
+			_sb.append('"');
+		}
+		_sb.append(_basedir);
+		_sb.append(file);
+		if (_quote) {
+			_sb.append('"');
+		}
+		return this;
+	}
+
+	public Cmd addExe(String file) {
+		return addFile(Util.WINDOWS_OS ? file + ".exe" : file);
+	}
+
+	private void space() {
+		if (_sb.length() > 0) {
+			_sb.append(' ');
+		}
+	}
+	
+	public String toString() {
+		return _sb.toString();
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/BuilderException.java b/installer/lib/launch4j/src/net/sf/launch4j/BuilderException.java
new file mode 100644
index 0000000000000000000000000000000000000000..2728dfb7a65013404cc99548c1539974c9020bac
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/BuilderException.java
@@ -0,0 +1,38 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 13, 2005
+ */
+package net.sf.launch4j;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class BuilderException extends Exception {
+	public BuilderException() {}
+
+	public BuilderException(Throwable t) {
+		super(t);
+	}
+	
+	public BuilderException(String msg) {
+		super(msg);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/ExecException.java b/installer/lib/launch4j/src/net/sf/launch4j/ExecException.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a46fe0604d4920f54384830bf43b875053ec2ff
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/ExecException.java
@@ -0,0 +1,38 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 14, 2005
+ */
+package net.sf.launch4j;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ExecException extends Exception {
+	public ExecException() {}
+
+	public ExecException(Throwable t) {
+		super(t);
+	}
+	
+	public ExecException(String msg) {
+		super(msg);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/FileChooserFilter.java b/installer/lib/launch4j/src/net/sf/launch4j/FileChooserFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..69d410f5e4deed2d83269a534a301fe455c13b1e
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/FileChooserFilter.java
@@ -0,0 +1,62 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2004-01-15
+ */
+package net.sf.launch4j;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * @author Copyright (C) 2004 Grzegorz Kowal
+ */
+public class FileChooserFilter extends FileFilter {
+	String _description;
+	String[] _extensions;
+
+	public FileChooserFilter(String description, String extension) {
+		_description = description;
+		_extensions = new String[] {extension};
+	}
+	
+	public FileChooserFilter(String description, String[] extensions) {
+		_description = description;
+		_extensions = extensions;
+	}
+
+	public boolean accept(File f) {
+		if (f.isDirectory()) {
+			return true;
+		}
+		String ext = Util.getExtension(f);
+		for (int i = 0; i < _extensions.length; i++) {
+			if (ext.toLowerCase().equals(_extensions[i].toLowerCase())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public String getDescription() {
+		return _description;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/Launcher.java b/installer/lib/launch4j/src/net/sf/launch4j/Launcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..587b340f57e1b53de06c15902675ab048fa98799
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/Launcher.java
@@ -0,0 +1,21 @@
+/*
+ * Created on Jun 4, 2005
+ */
+package net.sf.launch4j;
+
+/**
+ * This class allows launch4j to act as a launcher instead of a wrapper.
+ * It's useful on Windows because an application cannot be a GUI and console one
+ * at the same time. So there are two launchers that start launch4j.jar: launch4j.exe
+ * for GUI mode and launch4jc.exe for console operation.
+ * The Launcher class is packed into an executable jar that contains nothing else but
+ * the manifest with Class-Path attribute defined as in the application jar. The jar
+ * is wrapped with launch4j.
+ * 
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Launcher {
+	public static void main(String[] args) {
+		Main.main(args);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/Log.java b/installer/lib/launch4j/src/net/sf/launch4j/Log.java
new file mode 100644
index 0000000000000000000000000000000000000000..84eef2e1e22fcb4c9a51b3d08751d47d4eadcd65
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/Log.java
@@ -0,0 +1,91 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 12, 2005
+ */
+package net.sf.launch4j;
+
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public abstract class Log {
+	private static final Log _consoleLog = new ConsoleLog();
+	private static final Log _antLog = new AntLog();
+
+	public abstract void clear();
+	public abstract void append(String line);
+
+	public static Log getConsoleLog() {
+		return _consoleLog;
+	}
+	
+	public static Log getAntLog() {
+		return _antLog;
+	}
+
+	public static Log getSwingLog(JTextArea textArea) {
+		return new SwingLog(textArea);
+	}
+}
+
+class ConsoleLog extends Log {
+	public void clear() {
+		System.out.println("\n");
+	}
+
+	public void append(String line) {
+		System.out.println("launch4j: " + line);
+	}
+}
+
+class AntLog extends Log {
+	public void clear() {
+		System.out.println("\n");
+	}
+
+	public void append(String line) {
+		System.out.println(line);
+	}
+}
+
+class SwingLog extends Log {
+	private final JTextArea _textArea;
+
+	public SwingLog(JTextArea textArea) {
+		_textArea = textArea;
+	}
+
+	public void clear() {
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				_textArea.setText("");
+		}});
+	}
+
+	public void append(final String line) {
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				_textArea.append(line + "\n");
+		}});
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/Main.java b/installer/lib/launch4j/src/net/sf/launch4j/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..a49cb1ae96c4fe2ff412f387f44ada500b4d7bee
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/Main.java
@@ -0,0 +1,62 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j;
+
+import java.io.File;
+
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.ConfigPersisterException;
+import net.sf.launch4j.formimpl.MainFrame;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Main {
+
+	public static final String PROGRAM_NAME = "launch4j 2.0.RC3"; 
+	public static final String PROGRAM_DESCRIPTION = PROGRAM_NAME + 
+		" :: Cross-platform Java application wrapper for creating Windows native executables\n" +
+		"Copyright (C) 2005 Grzegorz Kowal\n" +
+		"launch4j comes with ABSOLUTELY NO WARRANTY\n" +
+	    "This is free software, licensed under the GNU General Public License.\n" +
+		"This product includes software developed by the Apache Software Foundation (http://www.apache.org/).\n\n";
+
+	public static void main(String[] args) {
+		try {
+			if (args.length == 0) {
+				ConfigPersister.getInstance().createBlank();
+				MainFrame.createInstance();
+			} else if (args.length == 1 && !args[0].startsWith("-")) {
+				ConfigPersister.getInstance().load(new File(args[0]));
+				Builder b = new Builder(Log.getConsoleLog());
+				b.build();
+			} else {
+				System.out.println(PROGRAM_DESCRIPTION + "usage: launch4j config.xml");
+			}
+		} catch (ConfigPersisterException e) {
+			Log.getConsoleLog().append(e.getMessage());
+		} catch (BuilderException e) {
+			Log.getConsoleLog().append(e.getMessage());
+		} 
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/OptionParser.java b/installer/lib/launch4j/src/net/sf/launch4j/OptionParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..7686c91b685a7b467be793338e08df91958c80f5
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/OptionParser.java
@@ -0,0 +1,57 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+//import net.sf.launch4j.config.Config;
+
+//import org.apache.commons.cli.CommandLine;
+//import org.apache.commons.cli.CommandLineParser;
+//import org.apache.commons.cli.HelpFormatter;
+//import org.apache.commons.cli.Options;
+//import org.apache.commons.cli.ParseException;
+//import org.apache.commons.cli.PosixParser;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class OptionParser {
+
+//	private final Options _options;
+//
+//	public OptionParser() {
+//		_options = new Options();
+//		_options.addOption("h", "header", true, "header");
+//	}
+//
+//	public Config parse(Config c, String[] args) throws ParseException {
+//		CommandLineParser parser = new PosixParser();
+//		CommandLine cl = parser.parse(_options, args);
+//		c.setJar(getFile(props, Config.JAR));
+//		c.setOutfile(getFile(props, Config.OUTFILE));
+//	}
+//
+//	public void printHelp() {
+//		HelpFormatter formatter = new HelpFormatter();
+//		formatter.printHelp("launch4j", _options);
+//	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/RcBuilder.java b/installer/lib/launch4j/src/net/sf/launch4j/RcBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..57c20cb66184750dc8e79afb538d0867ec091316
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/RcBuilder.java
@@ -0,0 +1,230 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.Jre;
+import net.sf.launch4j.config.Splash;
+import net.sf.launch4j.config.VersionInfo;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class RcBuilder {
+
+	// winnt.h
+	public static final int LANG_NEUTRAL = 0;
+	public static final int SUBLANG_NEUTRAL	= 0;
+	public static final int SUBLANG_DEFAULT	= 1;
+	public static final int SUBLANG_SYS_DEFAULT	= 2;
+
+	// ICON
+	public static final int APP_ICON = 1;
+
+	// BITMAP
+	public static final int SPLASH_BITMAP = 1;
+
+	// RCDATA
+	public static final int JRE_PATH = 1;
+	public static final int JAVA_MIN_VER = 2;
+	public static final int JAVA_MAX_VER = 3;
+	public static final int SHOW_SPLASH = 4;
+	public static final int SPLASH_WAITS_FOR_WINDOW = 5;
+	public static final int SPLASH_TIMEOUT = 6;
+	public static final int SPLASH_TIMEOUT_ERR = 7;
+	public static final int CHDIR = 8;
+	public static final int SET_PROC_NAME = 9;
+	public static final int ERR_TITLE = 10;
+	public static final int GUI_HEADER_STAYS_ALIVE = 11;
+	public static final int JVM_ARGS = 12;
+	public static final int JAR_ARGS = 13;
+
+	private final StringBuffer _sb = new StringBuffer();
+
+	public String getContent() {
+		return _sb.toString();
+	}
+
+	public File build(Config c) throws IOException {
+		_sb.append("LANGUAGE ");
+		_sb.append(LANG_NEUTRAL);
+		_sb.append(", ");
+		_sb.append(SUBLANG_DEFAULT);
+		_sb.append('\n');
+		addVersionInfo(c.getVersionInfo());
+		addJre(c.getJre());
+		addIcon(APP_ICON, c.getIcon());
+		addText(ERR_TITLE, c.getErrTitle());
+		addText(JAR_ARGS, c.getJarArgs());
+		addWindowsPath(CHDIR, c.getChdir());
+		addTrue(SET_PROC_NAME, c.isCustomProcName());
+		addTrue(GUI_HEADER_STAYS_ALIVE, c.isStayAlive());
+		addSplash(c.getSplash());
+		File f = File.createTempFile("launch4j", "rc");
+		BufferedWriter w = new BufferedWriter(new FileWriter(f));
+		w.write(_sb.toString());
+		w.close();
+		return f;
+	}
+
+	private void addVersionInfo(VersionInfo v) {
+		if (v == null) {
+			return;
+		}
+		_sb.append("1 VERSIONINFO\n");
+		_sb.append("FILEVERSION ");
+		_sb.append(v.getFileVersion().replaceAll("\\.", ", "));
+		_sb.append("\nPRODUCTVERSION ");
+		_sb.append(v.getProductVersion().replaceAll("\\.", ", "));
+		_sb.append("\nFILEFLAGSMASK 0\n" +
+				"FILEOS 0x40000\n" +
+				"FILETYPE 1\n" +
+				"{\n" + 
+				" BLOCK \"StringFileInfo\"\n" +
+				" {\n" +
+				"  BLOCK \"040904E4\"\n" +	// English
+				"  {\n");
+		addVerBlockValue("CompanyName", v.getCompanyName());
+		addVerBlockValue("FileDescription", v.getFileDescription());
+		addVerBlockValue("FileVersion", v.getTxtFileVersion());
+		addVerBlockValue("InternalName", v.getInternalName());
+		addVerBlockValue("LegalCopyright", v.getCopyright());
+		addVerBlockValue("OriginalFilename", v.getOriginalFilename());
+		addVerBlockValue("ProductName", v.getProductName());
+		addVerBlockValue("ProductVersion", v.getTxtProductVersion());
+		_sb.append("  }\n }\n}\n");
+	}
+	
+	private void addJre(Jre jre) {
+		addWindowsPath(JRE_PATH, jre.getPath());
+		addText(JAVA_MIN_VER, jre.getMinVersion());
+		addText(JAVA_MAX_VER, jre.getMaxVersion());
+		StringBuffer jvmArgs = new StringBuffer();
+		if (jre.getInitialHeapSize() > 0) {
+			jvmArgs.append("-Xms");
+			jvmArgs.append(jre.getInitialHeapSize());
+			jvmArgs.append('m');
+		}
+		if (jre.getMaxHeapSize() > 0) {
+			addSpace(jvmArgs);
+			jvmArgs.append("-Xmx");
+			jvmArgs.append(jre.getMaxHeapSize());
+			jvmArgs.append('m');
+		}
+		if (jre.getArgs() != null && jre.getArgs().length() > 0) {
+			addSpace(jvmArgs);
+			jvmArgs.append(jre.getArgs().replaceAll("\n", " "));
+		}
+		addText(JVM_ARGS, jvmArgs.toString());
+	}
+	
+	private void addSplash(Splash splash) {
+		if (splash == null) {
+			return;
+		}
+		addTrue(SHOW_SPLASH, true);
+		addTrue(SPLASH_WAITS_FOR_WINDOW, splash.getWaitForWindow());
+		addText(SPLASH_TIMEOUT, String.valueOf(splash.getTimeout()));
+		addTrue(SPLASH_TIMEOUT_ERR, splash.isTimeoutErr());
+		addBitmap(SPLASH_BITMAP, splash.getFile());
+	}
+
+	private void addText(int id, String text) {
+		if (text == null || text.length() == 0) {
+			return;
+		}
+		_sb.append(id);
+		_sb.append(" RCDATA BEGIN \"");
+		_sb.append(text);
+		_sb.append("\\0\" END\n");
+	}
+
+	/**
+	 * Stores path in Windows format with '\' separators. 
+	 */
+	private void addWindowsPath(int id, String path) {
+		if (path == null || path.equals("")) {
+			return;
+		}
+		_sb.append(id);
+		_sb.append(" RCDATA BEGIN \"");
+		_sb.append(path.replaceAll("\\\\", "\\\\\\\\")
+				.replaceAll("/", "\\\\\\\\"));
+		_sb.append("\\0\" END\n");
+	}
+
+	private void addTrue(int id, boolean value) {
+		if (value) {
+			addText(id, "true");
+		}
+	}
+
+	private void addIcon(int id, File icon) {
+		if (icon == null || icon.getPath().equals("")) {
+			return;
+		}
+		_sb.append(id);
+		_sb.append(" ICON DISCARDABLE \"");
+		_sb.append(getPath(Util.getAbsoluteFile(
+				ConfigPersister.getInstance().getConfigPath(), icon)));
+		_sb.append("\"\n");
+	}
+
+	private void addBitmap(int id, File bitmap) {
+		if (bitmap == null) {
+			return;
+		}
+		_sb.append(id);
+		_sb.append(" BITMAP \"");
+		_sb.append(getPath(Util.getAbsoluteFile(
+				ConfigPersister.getInstance().getConfigPath(), bitmap)));
+		_sb.append("\"\n");
+	}
+	
+	private String getPath(File f) {
+		return f.getPath().replaceAll("\\\\", "\\\\\\\\");
+	}
+	
+	private void addSpace(StringBuffer sb) {
+		int len = sb.length();
+		if (len-- > 0 && sb.charAt(len) != ' ') {
+			sb.append(' ');
+		}
+	}
+	
+	private void addVerBlockValue(String key, String value) {
+		_sb.append("   VALUE \"");
+		_sb.append(key);
+		_sb.append("\", \"");
+		if (value != null) {
+			_sb.append(value);
+		}
+		_sb.append("\"\n");
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/Util.java b/installer/lib/launch4j/src/net/sf/launch4j/Util.java
new file mode 100644
index 0000000000000000000000000000000000000000..c05dabfa67001b78921db0aea19df4dca4a50de9
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/Util.java
@@ -0,0 +1,152 @@
+/*
+ launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ Copyright (C) 2005 Grzegorz Kowal
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/*
+ * Created on 2005-04-24
+ */
+package net.sf.launch4j;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Util {
+	public static final boolean WINDOWS_OS = System.getProperty("os.name")
+			.toLowerCase().startsWith("windows");
+
+	private Util() {}
+
+	/**
+	 * Returns the base directory of a jar file or null if the class is a standalone file. 
+	 * @return System specific path
+	 * 
+	 * Based on a patch submitted by Josh Elsasser
+	 */
+	public static String getJarBasedir() {
+		String url = Util.class.getClassLoader()
+				.getResource(Util.class.getName().replace('.', '/') + ".class")
+				.getFile()
+				.replaceAll("%20", " ");
+		if (url.startsWith("file:")) {
+			String jar = url.substring(5, url.lastIndexOf('!'));
+			int x = jar.lastIndexOf('/');
+			if (x == -1) {
+				x = jar.lastIndexOf('\\');	
+			}
+			String basedir = jar.substring(0, x + 1);
+			return new File(basedir).getPath();
+		} else {
+			return null;
+		}
+	}
+
+	public static File getAbsoluteFile(File basepath, File f) {
+		return f.isAbsolute() ? f : new File(basepath, f.getPath());
+	}
+
+	public static String getExtension(File f) {
+		String name = f.getName();
+		int x = name.lastIndexOf('.');
+		if (x != -1) {
+			return name.substring(x);
+		} else {
+			return "";
+		}
+	}
+
+	public static void exec(String cmd, Log log) throws ExecException {
+		BufferedReader is = null;
+		try {
+			if (WINDOWS_OS) {
+				cmd = cmd.replaceAll("/", "\\\\");
+			}
+			Process p = Runtime.getRuntime().exec(cmd);
+			is = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+			String line;
+			while ((line = is.readLine()) != null) {
+				log.append(line);
+			}
+			is.close();
+			p.waitFor();
+			if (p.exitValue() != 0) {
+				String msg = "Exec failed (" + p.exitValue() + "): " + cmd;
+				log.append(msg);
+				throw new ExecException(msg);
+			}
+		} catch (IOException e) {
+			close(is);
+			throw new ExecException(e);
+		} catch (InterruptedException e) {
+			close(is);
+			throw new ExecException(e);
+		}
+	}
+
+	public static void close(final InputStream o) {
+		if (o != null) {
+			try {
+				o.close();
+			} catch (IOException e) {
+				System.err.println(e); // XXX log
+			}
+		}
+	}
+
+	public static void close(final OutputStream o) {
+		if (o != null) {
+			try {
+				o.close();
+			} catch (IOException e) {
+				System.err.println(e); // XXX log
+			}
+		}
+	}
+
+	public static void close(final Reader o) {
+		if (o != null) {
+			try {
+				o.close();
+			} catch (IOException e) {
+				System.err.println(e); // XXX log
+			}
+		}
+	}
+
+	public static void close(final Writer o) {
+		if (o != null) {
+			try {
+				o.close();
+			} catch (IOException e) {
+				System.err.println(e); // XXX log
+			}
+		}
+	}
+
+	public static boolean delete(File f) {
+		return (f != null) ? f.delete() : false;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/ant/AntConfig.java b/installer/lib/launch4j/src/net/sf/launch4j/ant/AntConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f637fe9a9fe4fe3f804af2d0382f0127a81f746
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/ant/AntConfig.java
@@ -0,0 +1,57 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 24, 2005
+ */
+package net.sf.launch4j.ant;
+
+import org.apache.tools.ant.BuildException;
+
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.Jre;
+import net.sf.launch4j.config.Splash;
+import net.sf.launch4j.config.VersionInfo;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class AntConfig extends Config {
+
+	public void addJre(Jre jre) {
+		checkNull(getJre(), "jre");
+		setJre(jre);
+	}
+
+	public void addSplash(Splash splash) {
+		checkNull(getSplash(), "splash");
+		setSplash(splash);
+	}
+
+	public void addVersionInfo(VersionInfo versionInfo) {
+		checkNull(getVersionInfo(), "versionInfo");
+		setVersionInfo(versionInfo);
+	}
+
+	private void checkNull(Object o, String name) {
+		if (o != null) {
+			throw new BuildException("Duplicate element: " + name);
+		}
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java b/installer/lib/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb7161f64273123a6544027f93c9a52dcfc00e05
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java
@@ -0,0 +1,122 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 24, 2005
+ */
+package net.sf.launch4j.ant;
+
+import java.io.File;
+
+import net.sf.launch4j.Builder;
+import net.sf.launch4j.BuilderException;
+import net.sf.launch4j.Log;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.ConfigPersisterException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Launch4jTask extends Task {
+	private File _configFile;
+	private AntConfig _config;
+
+	// Override configFile settings
+	private File jar;
+	private File outfile;
+	private String fileVersion;
+	private String txtFileVersion;
+	private String productVersion;
+	private String txtProductVersion;
+
+	public void execute() throws BuildException {
+		try {
+			if (_configFile != null && _config != null) {
+				throw new BuildException("Specify configFile or config");
+			} else if (_configFile != null) {
+				ConfigPersister.getInstance().load(_configFile);
+				Config c = ConfigPersister.getInstance().getConfig();
+				if (jar != null) {
+					c.setJar(jar);
+				}
+				if (outfile != null) {
+					c.setOutfile(outfile);
+				}
+				if (fileVersion != null) {
+					c.getVersionInfo().setFileVersion(fileVersion);
+				}
+				if (txtFileVersion != null) {
+					c.getVersionInfo().setTxtFileVersion(txtFileVersion);
+				}
+				if (productVersion != null) {
+					c.getVersionInfo().setProductVersion(productVersion);
+				}
+				if (txtProductVersion != null) {
+					c.getVersionInfo().setTxtProductVersion(txtProductVersion);
+				}
+			} else if (_config != null) {
+				ConfigPersister.getInstance().setAntConfig(_config,	getProject().getBaseDir());
+			} else {
+				throw new BuildException("Specify configFile or config");
+			}
+			final Builder b = new Builder(Log.getAntLog());
+			b.build();
+		} catch (ConfigPersisterException e) {
+			throw new BuildException(e);
+		} catch (BuilderException e) {
+			throw new BuildException(e);
+		}
+	}
+
+	public void setConfigFile(File configFile) {
+		_configFile = configFile;
+	}
+
+	public void addConfig(AntConfig config) {
+		_config = config;
+	}
+
+	public void setFileVersion(String fileVersion) {
+		this.fileVersion = fileVersion;
+	}
+
+	public void setJar(File jar) {
+		this.jar = jar;
+	}
+
+	public void setOutfile(File outfile) {
+		this.outfile = outfile;
+	}
+
+	public void setProductVersion(String productVersion) {
+		this.productVersion = productVersion;
+	}
+
+	public void setTxtFileVersion(String txtFileVersion) {
+		this.txtFileVersion = txtFileVersion;
+	}
+
+	public void setTxtProductVersion(String txtProductVersion) {
+		this.txtProductVersion = txtProductVersion;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/Binding.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/Binding.java
new file mode 100644
index 0000000000000000000000000000000000000000..72ec619233d737849a8df32b8de92cdc6844f947
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/Binding.java
@@ -0,0 +1,48 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public interface Binding {
+	/** Used to mark components with invalid data. */
+	public final static Color INVALID_COLOR = Color.PINK;
+
+	/** Java Bean property bound to a component */
+	public String getProperty();
+	/** Clear component, set it to the default value. */
+	public void clear();
+	/** Java Bean property -> Component */
+	public void put(IValidatable bean);
+	/** Component -> Java Bean property */
+	public void get(IValidatable bean);
+	/** Mark component as valid */
+	public void markValid();
+	/** Mark component as invalid */
+	public void markInvalid();
+	/** Enable or disable the component */
+	public void setEnabled(boolean enabled);
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/BindingException.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/BindingException.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a3b5b8292186a49104e546e7ee0cc84fd32e179
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/BindingException.java
@@ -0,0 +1,38 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+/**
+ * Signals a runtime error, a missing property in a Java Bean for example.
+ * 
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class BindingException extends RuntimeException {
+	public BindingException(Throwable t) {
+		super(t);
+	}
+	
+	public BindingException(String msg) {
+		super(msg);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/Bindings.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/Bindings.java
new file mode 100644
index 0000000000000000000000000000000000000000..48fd22bf15db62610e843a8745e5a27dd86ed81a
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/Bindings.java
@@ -0,0 +1,247 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.swing.JComponent;
+import javax.swing.JRadioButton;
+import javax.swing.JToggleButton;
+import javax.swing.text.JTextComponent;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * Creates and handles bindings.
+ * 
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Bindings implements PropertyChangeListener {
+	private final Map _bindings = new HashMap();
+	private final Map _optComponents = new HashMap();
+	private boolean _modified = false;
+
+	/**
+	 * Used to track component modifications.
+	 */
+	public void propertyChange(PropertyChangeEvent evt) {
+		if ("AccessibleValue".equals(evt.getPropertyName())
+				|| "AccessibleText".equals(evt.getPropertyName())) {
+			_modified = true;
+		}
+	}
+
+	/** 
+	 * Any of the components modified?
+	 */
+	public boolean isModified() {
+		return _modified;
+	}
+
+	public Binding getBinding(String property) {
+		return (Binding) _bindings.get(property);
+	}
+
+	private void registerPropertyChangeListener(JComponent c) {
+		c.getAccessibleContext().addPropertyChangeListener(this);
+	}
+
+	private void registerPropertyChangeListener(JComponent[] cs) {
+		for (int i = 0; i < cs.length; i++) {
+			cs[i].getAccessibleContext().addPropertyChangeListener(this);
+		}
+	}
+
+	private boolean isPropertyNull(IValidatable bean, Binding b) {
+		try {
+			for (Iterator iter = _optComponents.keySet().iterator(); iter.hasNext();) {
+				String property = (String) iter.next();
+				if (b.getProperty().startsWith(property)) {
+					return PropertyUtils.getProperty(bean, property) == null;
+				}
+			}
+			return false;
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	/**
+	 * Enables or disables all components bound to properties that begin with given prefix.
+	 */
+	public void setComponentsEnabled(String prefix, boolean enabled) {
+		for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+			Binding b = (Binding) iter.next();
+			if (b.getProperty().startsWith(prefix)) {
+				b.setEnabled(enabled);
+			}
+		}
+	}
+
+	/**
+	 * Clear all components, set them to their default values.
+	 * Clears the _modified flag.
+	 */
+	public void clear() {
+		for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
+			((Binding) iter.next()).clear();
+		}
+		for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+			((Binding) iter.next()).clear();
+		}
+		_modified = false;
+	}
+
+	/**
+	 * Copies data from the Java Bean to the UI components.
+	 * Clears the _modified flag.
+	 */
+	public void put(IValidatable bean) {
+		for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
+			((Binding) iter.next()).put(bean);
+		}
+		for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+			Binding b = (Binding) iter.next();
+			if (isPropertyNull(bean, b)) {
+				b.clear();
+			} else {
+				b.put(bean);
+			}
+		}
+		_modified = false;
+	}
+
+	/**
+	 * Copies data from UI components to the Java Bean and checks it's class invariants.
+	 * Clears the _modified flag.
+	 * @throws InvariantViolationException
+	 * @throws BindingException
+	 */
+	public void get(IValidatable bean) {
+		try {
+			for (Iterator iter = _optComponents.values().iterator(); iter.hasNext();) {
+				((Binding) iter.next()).get(bean);
+			}
+			for (Iterator iter = _bindings.values().iterator(); iter.hasNext();) {
+				Binding b = (Binding) iter.next();
+				if (!isPropertyNull(bean, b)) {
+					b.get(bean);
+				}
+			}
+			bean.checkInvariants();
+			for (Iterator iter = _optComponents.keySet().iterator(); iter.hasNext();) {
+				String property = (String) iter.next();
+				IValidatable component = (IValidatable) PropertyUtils.getProperty(bean, property);
+				if (component != null) {
+					component.checkInvariants();
+				}
+			}
+			_modified = false;	// XXX
+		} catch (InvariantViolationException e) {
+			e.setBinding(getBinding(e.getProperty()));
+			throw e;
+		} catch (Exception e) {
+			throw new BindingException(e);
+		} 
+	}
+
+	private Bindings add(Binding b) {
+		if (_bindings.containsKey(b.getProperty())) {
+			throw new BindingException("Duplicate binding");
+		}
+		_bindings.put(b.getProperty(), b);
+		return this;
+	}
+
+	/**
+	 * Add an optional (nullable) Java Bean component of type clazz.
+	 */
+	public Bindings addOptComponent(String property, Class clazz, JToggleButton c,
+			boolean enabledByDefault) {
+		Binding b = new OptComponentBinding(this, property, clazz, c, enabledByDefault);
+		if (_optComponents.containsKey(property)) {
+			throw new BindingException("Duplicate binding");
+		}
+		_optComponents.put(property, b);
+		return this;
+	}
+
+	/**
+	 * Add an optional (nullable) Java Bean component of type clazz.
+	 */
+	public Bindings addOptComponent(String property, Class clazz, JToggleButton c) {
+		return addOptComponent(property, clazz, c, false);
+	}
+
+	/**
+	 * Handles JEditorPane, JTextArea, JTextField
+	 */
+	public Bindings add(String property, JTextComponent c, String defaultValue) {
+		registerPropertyChangeListener(c);
+		return add(new JTextComponentBinding(property, c, defaultValue));
+	}
+
+	/**
+	 * Handles JEditorPane, JTextArea, JTextField
+	 */
+	public Bindings add(String property, JTextComponent c) {
+		registerPropertyChangeListener(c);
+		return add(new JTextComponentBinding(property, c, ""));
+	}
+
+	/**
+	 * Handles JToggleButton, JCheckBox 
+	 */
+	public Bindings add(String property, JToggleButton c, boolean defaultValue) {
+		registerPropertyChangeListener(c);
+		return add(new JToggleButtonBinding(property, c, defaultValue));
+	}
+
+	/**
+	 * Handles JToggleButton, JCheckBox
+	 */
+	public Bindings add(String property, JToggleButton c) {
+		registerPropertyChangeListener(c);
+		return add(new JToggleButtonBinding(property, c, false));
+	}
+
+	/**
+	 * Handles JRadioButton
+	 */
+	public Bindings add(String property, JRadioButton[] cs, int defaultValue) {
+		registerPropertyChangeListener(cs);
+		return add(new JRadioButtonBinding(property, cs, defaultValue));
+	}
+	
+	/**
+	 * Handles JRadioButton
+	 */
+	public Bindings add(String property, JRadioButton[] cs) {
+		registerPropertyChangeListener(cs);
+		return add(new JRadioButtonBinding(property, cs, 0));
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/IValidatable.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/IValidatable.java
new file mode 100644
index 0000000000000000000000000000000000000000..91b6fa514c27dd0bde9b6a55eec07ff1d994ba8c
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/IValidatable.java
@@ -0,0 +1,30 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2004-01-30
+ */
+package net.sf.launch4j.binding;
+
+/**
+ * @author Copyright (C) 2004 Grzegorz Kowal
+ */
+public interface IValidatable {
+	public void checkInvariants();
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java
new file mode 100644
index 0000000000000000000000000000000000000000..99eb569a8dc799f3aefabad82557d4076f93040f
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/InvariantViolationException.java
@@ -0,0 +1,53 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Jun 23, 2003
+ */
+package net.sf.launch4j.binding;
+
+/**
+ * @author Copyright (C) 2003 Grzegorz Kowal
+ */
+public class InvariantViolationException extends RuntimeException {
+	private final String _property;
+	private Binding _binding;
+
+	public InvariantViolationException(String msg) {
+		super(msg);
+		_property = null;
+	}
+
+	public InvariantViolationException(String property, String msg) {
+		super(msg);
+		_property = property;
+	}
+	
+	public String getProperty() {
+		return _property;
+	}
+	
+	public Binding getBinding() {
+		return _binding;
+	}
+
+	public void setBinding(Binding binding) {
+		_binding = binding;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java
new file mode 100644
index 0000000000000000000000000000000000000000..1298b529cef5cc85142892e929c6ad96f3d10248
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/JRadioButtonBinding.java
@@ -0,0 +1,127 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 10, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+import javax.swing.JRadioButton;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class JRadioButtonBinding implements Binding {
+	private final String _property;
+	private final JRadioButton[] _buttons;
+	private final int _defaultValue;
+	private final Color _validColor;
+
+	public JRadioButtonBinding(String property, JRadioButton[] buttons, int defaultValue) {
+		if (property == null || buttons == null) {
+			throw new NullPointerException();
+		}
+		for (int i = 0; i < buttons.length; i++) {
+			if (buttons[i] == null) {
+				throw new NullPointerException();
+			}
+		}
+		if (property.equals("")
+				|| buttons.length == 0
+				|| defaultValue < 0 || defaultValue >= buttons.length) {
+			throw new IllegalArgumentException();
+		}
+		_property = property;
+		_buttons = buttons;
+		_defaultValue = defaultValue;
+		_validColor = buttons[0].getBackground();
+	}
+
+	public String getProperty() {
+		return _property;
+	}
+
+	public void clear() {
+		select(_defaultValue);
+	}
+
+	public void put(IValidatable bean) {
+		try {
+			Integer i = (Integer) PropertyUtils.getProperty(bean, _property);
+			if (i == null) {
+				throw new BindingException("Property is null");
+			}
+			select(i.intValue());
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	public void get(IValidatable bean) {
+		try {
+			for (int i = 0; i < _buttons.length; i++) {
+				if (_buttons[i].isSelected()) {
+					PropertyUtils.setProperty(bean, _property, new Integer(i));
+					return;
+				}
+			}
+			throw new BindingException("Nothing selected");
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	private void select(int index) {
+		if (index < 0 || index >= _buttons.length) {
+			throw new BindingException("Button index out of bounds");
+		}
+		_buttons[index].setSelected(true);
+	}
+
+	public void markValid() {
+		for (int i = 0; i < _buttons.length; i++) {
+			if (_buttons[i].isSelected()) {
+				_buttons[i].setBackground(_validColor);
+				_buttons[i].requestFocusInWindow();
+				return;
+			}
+		}
+		throw new BindingException("Nothing selected");
+	}
+
+	public void markInvalid() {
+		for (int i = 0; i < _buttons.length; i++) {
+			if (_buttons[i].isSelected()) {
+				_buttons[i].setBackground(Binding.INVALID_COLOR);
+				return;
+			}
+		}
+		throw new BindingException("Nothing selected");
+	}
+	
+	public void setEnabled(boolean enabled) {
+		for (int i = 0; i < _buttons.length; i++) {
+			_buttons[i].setEnabled(enabled);
+		}
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java
new file mode 100644
index 0000000000000000000000000000000000000000..26ec4d665f4c382a2adeab180ac4c744d261a635
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/JTextComponentBinding.java
@@ -0,0 +1,92 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+import javax.swing.text.JTextComponent;
+
+import org.apache.commons.beanutils.BeanUtils;
+
+/**
+ * Handles JEditorPane, JTextArea, JTextField
+ * 
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class JTextComponentBinding implements Binding {
+	private final String _property;
+	private final JTextComponent _textComponent;
+	private final String _defaultValue;
+	private final Color _validColor;
+
+	public JTextComponentBinding(String property, JTextComponent textComponent, String defaultValue) {
+		if (property == null || textComponent == null || defaultValue == null) {
+			throw new NullPointerException();
+		}
+		if (property.equals("")) {
+			throw new IllegalArgumentException();
+		}
+		_property = property;
+		_textComponent = textComponent;
+		_defaultValue = defaultValue;
+		_validColor = _textComponent.getBackground();
+	}
+
+	public String getProperty() {
+		return _property;
+	}
+
+	public void clear() {
+		_textComponent.setText(_defaultValue);
+	}
+
+	public void put(IValidatable bean) {
+		try {
+			String s = BeanUtils.getProperty(bean, _property);
+			_textComponent.setText(s != null && !s.equals("0") ? s : "");	// XXX displays zeros as blank
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	public void get(IValidatable bean) {
+		try {
+			BeanUtils.setProperty(bean, _property, _textComponent.getText());
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+	
+	public void markValid() {
+		_textComponent.setBackground(_validColor);
+		_textComponent.requestFocusInWindow();
+	}
+
+	public void markInvalid() {
+		_textComponent.setBackground(Binding.INVALID_COLOR);
+	}
+	
+	public void setEnabled(boolean enabled) {
+		_textComponent.setEnabled(enabled);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java
new file mode 100644
index 0000000000000000000000000000000000000000..43fe11913a8dac9239de0667e928594da6c06c44
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/JToggleButtonBinding.java
@@ -0,0 +1,94 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 30, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.Color;
+
+import javax.swing.JToggleButton;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * Handles JToggleButton, JCheckBox 
+ *
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class JToggleButtonBinding implements Binding {
+	private final String _property;
+	private final JToggleButton _button;
+	private final boolean _defaultValue;
+	private final Color _validColor;
+
+	public JToggleButtonBinding(String property, JToggleButton button, boolean defaultValue) {
+		if (property == null || button == null) {
+			throw new NullPointerException();
+		}
+		if (property.equals("")) {
+			throw new IllegalArgumentException();
+		}
+		_property = property;
+		_button = button;
+		_defaultValue = defaultValue;
+		_validColor = _button.getBackground();
+	}
+
+	public String getProperty() {
+		return _property;
+	}
+
+	public void clear() {
+		_button.setSelected(_defaultValue);
+	}
+
+	public void put(IValidatable bean) {
+		try {
+			// String s = BeanUtils.getProperty(o, _property);
+			// _checkBox.setSelected("true".equals(s));
+			Boolean b = (Boolean) PropertyUtils.getProperty(bean, _property);
+			_button.setSelected(b != null && b.booleanValue());
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	public void get(IValidatable bean) {
+		try {
+			PropertyUtils.setProperty(bean, _property, Boolean.valueOf(_button.isSelected()));
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+	
+	public void markValid() {
+		_button.setBackground(_validColor);
+		_button.requestFocusInWindow();
+	}
+
+	public void markInvalid() {
+		_button.setBackground(Binding.INVALID_COLOR);
+	}
+	
+	public void setEnabled(boolean enabled) {
+		_button.setEnabled(enabled);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d514ad5a9d44bc1c0defd55b513c7c87d2732f1
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/OptComponentBinding.java
@@ -0,0 +1,104 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 11, 2005
+ */
+package net.sf.launch4j.binding;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Arrays;
+
+import javax.swing.JToggleButton;
+
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class OptComponentBinding implements Binding, ActionListener {
+	private final Bindings _bindings;
+	private final String _property;
+	private final Class _clazz;
+	private final JToggleButton _button;
+	private final boolean _enabledByDefault;
+
+	public OptComponentBinding(Bindings bindings, String property, Class clazz,
+								JToggleButton button, boolean enabledByDefault) {
+		if (property == null || clazz == null || button == null) {
+			throw new NullPointerException();
+		}
+		if (property.equals("")) {
+			throw new IllegalArgumentException();
+		}
+		if (!Arrays.asList(clazz.getInterfaces()).contains(IValidatable.class)) {
+			throw new IllegalArgumentException("Optional component must implement "
+					+ IValidatable.class);
+		}
+		_bindings = bindings;
+		_property = property;
+		_clazz = clazz;
+		_button = button;
+		_button.addActionListener(this);
+		_enabledByDefault = enabledByDefault;
+	}
+
+	public String getProperty() {
+		return _property;
+	}
+
+	public void clear() {
+		_button.setSelected(_enabledByDefault);
+		updateComponents();
+	}
+
+	public void put(IValidatable bean) {
+		try {
+			Object component = PropertyUtils.getProperty(bean, _property);
+			_button.setSelected(component != null);
+			updateComponents();
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	public void get(IValidatable bean) {
+		try {
+			PropertyUtils.setProperty(bean, _property, _button.isSelected()
+					? _clazz.newInstance() : null);
+		} catch (Exception e) {
+			throw new BindingException(e);
+		}
+	}
+
+	public void markValid() {}
+
+	public void markInvalid() {}
+
+	public void setEnabled(boolean enabled) {} // XXX implement?
+
+	public void actionPerformed(ActionEvent e) {
+		updateComponents();
+	}
+	
+	private void updateComponents() {
+		_bindings.setComponentsEnabled(_property, _button.isSelected());
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/binding/Validator.java b/installer/lib/launch4j/src/net/sf/launch4j/binding/Validator.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7f543adf79dc5d417a95ef81b18134d05d7926e
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/binding/Validator.java
@@ -0,0 +1,190 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2004-01-30
+ */
+package net.sf.launch4j.binding;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.HashSet;
+
+import net.sf.launch4j.Util;
+import net.sf.launch4j.config.ConfigPersister;
+
+/**
+ * @author Copyright (C) 2004 Grzegorz Kowal
+ */
+public class Validator {
+	public static final String ALPHANUMERIC_PATTERN = "[\\w]*?";
+	public static final String ALPHA_PATTERN = "[\\w&&\\D]*?";
+	public static final String NUMERIC_PATTERN = "[\\d]*?";
+	public static final String PATH_PATTERN = "[\\w|[ .,:\\-/\\\\]]*?";
+
+	private static final String EMPTY_FIELD = "Enter: ";
+	private static final String FIELD_ERROR = "Invalid data: ";
+	private static final String RANGE_ERROR = " must be in range [";
+	private static final String MINIMUM = " must be at least ";
+	private static final String DUPLICATE = " already exists.";
+
+	private Validator() {}
+
+	public static boolean isEmpty(String s) {
+		return s == null || s.equals("");
+	}
+
+	public static void checkNotNull(Object o, String property, String name) {
+		if (o == null) {
+			signalViolation(property, EMPTY_FIELD + name);
+		}
+	}
+
+	public static void checkString(String s, int maxLength, String property, String name) {
+		if (s == null || s.length() == 0) {
+			signalViolation(property, EMPTY_FIELD + name);
+		}
+		if (s.length() > maxLength) {
+			signalLengthViolation(property, name, maxLength);
+		}
+	}
+
+	public static void checkString(String s, int maxLength, String pattern,
+			String property, String name) {
+		checkString(s, maxLength, property, name);
+		if (!s.matches(pattern)) {
+			signalViolation(property, FIELD_ERROR + name);
+		}
+	}
+
+	public static void checkOptString(String s, int maxLength, String property, String name) {
+		if (s == null || s.length() == 0) {
+			return;
+		}
+		if (s.length() > maxLength) {
+			signalLengthViolation(property, name, maxLength);
+		}
+	}
+
+	public static void checkOptString(String s, int maxLength, String pattern,
+			String property, String name) {
+		if (s == null || s.length() == 0) {
+			return;
+		}
+		if (s.length() > maxLength) {
+			signalLengthViolation(property, name, maxLength);
+		}
+		if (!s.matches(pattern)) {
+			signalViolation(property, FIELD_ERROR + name);
+		}
+	}
+
+	public static void checkRange(int value, int min, int max,
+			String property, String name) {
+		if (value < min || value > max) {
+			StringBuffer sb = new StringBuffer(name);
+			sb.append(RANGE_ERROR);
+			sb.append(min);
+			sb.append('-');
+			sb.append(max);
+			sb.append(']');
+			signalViolation(property, sb.toString());			
+		}
+	}
+
+	public static void checkRange(char value, char min, char max,
+			String property, String name) {
+		if (value < min || value > max) {
+			StringBuffer sb = new StringBuffer(name);
+			sb.append(RANGE_ERROR);
+			sb.append(min);
+			sb.append('-');
+			sb.append(max);
+			sb.append(']');
+			signalViolation(property, sb.toString());			
+		}
+	}
+
+	public static void checkMin(int value, int min, String property, String name) {
+		if (value < min) {
+			StringBuffer sb = new StringBuffer(name);
+			sb.append(MINIMUM);
+			sb.append(min);
+			signalViolation(property, sb.toString());
+		}
+	}
+
+	public static void checkTrue(boolean condition, String property, String msg) {
+		if (!condition) {
+			signalViolation(property, msg);
+		}
+	}
+	
+	public static void checkFalse(boolean condition, String property, String msg) {
+		if (condition) {
+			signalViolation(property, msg);
+		}
+	}
+	
+	public static void checkElementsNotNullUnique(Collection c, String property, String msg) {
+		if (c.contains(null)
+				|| new HashSet(c).size() != c.size()) {
+			signalViolation(property, msg + DUPLICATE);
+		}
+	}
+
+	public static void checkElementsUnique(Collection c, String property, String msg) {
+		if (new HashSet(c).size() != c.size()) {
+			signalViolation(property, msg + DUPLICATE);
+		}
+	}
+
+	public static void checkFile(File f, String property, String fileDescription) {
+		File cfgPath = ConfigPersister.getInstance().getConfigPath();
+		if (f == null || (!f.exists() && !Util.getAbsoluteFile(cfgPath, f).exists())) {
+			signalViolation(property, fileDescription + " doesn't exist.");
+		}
+	}
+
+	public static void checkOptFile(File f, String property, String fileDescription) {
+		if (f != null && f.getPath().length() > 0) {
+			checkFile(f, property, fileDescription);
+		}
+	}
+
+	public static void checkRelativeWinPath(String path, String property, String msg) {
+		if (path.startsWith("/")
+				|| path.startsWith("\\")
+				|| path.indexOf(':') != -1) {
+			signalViolation(property, msg);
+		}
+	}
+
+	public static void signalLengthViolation(String property, String name, int maxLength)	{
+		final StringBuffer sb = new StringBuffer(name);
+		sb.append(" exceeds the maximum length of ");
+		sb.append(maxLength);
+		sb.append(" characters.");
+		throw new InvariantViolationException(property, sb.toString());
+	}
+
+	public static void signalViolation(String property, String msg)	{
+		throw new InvariantViolationException(property, msg);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/config/Config.java b/installer/lib/launch4j/src/net/sf/launch4j/config/Config.java
new file mode 100644
index 0000000000000000000000000000000000000000..2176d4d79c5d85e21ed910bc4b564d2dc1432e18
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/config/Config.java
@@ -0,0 +1,228 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.io.File;
+import java.util.List;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Config implements IValidatable {
+
+	public static final String HEADER = "header";
+	public static final String JAR = "jar";
+	public static final String OUTFILE = "outfile";
+	public static final String ERR_TITLE = "errTitle";
+	public static final String JAR_ARGS = "jarArgs";
+	public static final String CHDIR = "chdir";
+	public static final String CUSTOM_PROC_NAME = "customProcName";
+	public static final String STAY_ALIVE = "stayAlive";
+	public static final String ICON = "icon";
+
+	public static final int GUI_HEADER = 0;
+	public static final int CONSOLE_HEADER = 1;
+	public static final int CUSTOM_HEADER = 2;
+
+	private int headerType;
+	private List headerObjects;
+	private List libs;
+	private File jar;
+	private File outfile;
+
+	// runtime configuration
+	private String errTitle;
+	private String jarArgs;
+	private String chdir;
+	private boolean customProcName = false;
+	private boolean stayAlive = false;
+	private File icon;
+	private Jre jre;
+	private Splash splash;
+	private VersionInfo versionInfo;
+
+	public void checkInvariants() {
+		Validator.checkTrue(outfile != null && outfile.getPath().endsWith(".exe"),
+				"outfile", "Specify output file with .exe extension.");
+		Validator.checkFile(jar, "jar", "Application jar");
+		if (!Validator.isEmpty(chdir)) {
+			Validator.checkRelativeWinPath(chdir,
+					"chdir", "'chdir' must be a path relative to the executable.");
+			Validator.checkFalse(chdir.toLowerCase().equals("true")
+					|| chdir.toLowerCase().equals("false"),
+					"chdir", "'chdir' is now a path instead of a boolean, please check the docs.");
+		}
+		Validator.checkOptFile(icon, "icon", "Icon");
+		Validator.checkOptString(jarArgs, 128, "jarArgs", "Jar arguments");
+		Validator.checkOptString(errTitle, 128, "errTitle", "Error title");
+		Validator.checkRange(headerType, GUI_HEADER, CONSOLE_HEADER,
+				"headerType", "Invalid header type");	// TODO add custom header check
+		Validator.checkTrue(headerType != CONSOLE_HEADER || splash == null,
+				"headerType", "Splash screen is not implemented by console header.");
+		// TODO libs
+		jre.checkInvariants();
+	}
+	
+	public void validate() {
+		checkInvariants();
+		if (splash != null) {
+			splash.checkInvariants();
+		}
+		if (versionInfo != null) {
+			versionInfo.checkInvariants();
+		}
+	}
+
+	/** Change current directory to EXE location. */
+	public String getChdir() {
+		return chdir;
+	}
+
+	public void setChdir(String chdir) {
+		this.chdir = chdir;
+	}
+
+	/** Constant command line arguments passed to application jar. */
+	public String getJarArgs() {
+		return jarArgs;
+	}
+
+	public void setJarArgs(String jarArgs) {
+		this.jarArgs = jarArgs;
+	}
+
+	/** Optional, error message box title. */
+	public String getErrTitle() {
+		return errTitle;
+	}
+
+	public void setErrTitle(String errTitle) {
+		this.errTitle = errTitle;
+	}
+
+	/** launch4j header file. */
+	public int getHeaderType() {
+		return headerType;
+	}
+
+	public void setHeaderType(int headerType) {
+		this.headerType = headerType;
+	}
+	
+	public List getHeaderObjects() {
+//		switch (_headerType) {
+//		case GUI_HEADER:
+//			return
+//		case CONSOLE_HEADER:
+// FIXME	
+//		default:
+			return headerObjects;
+	}
+	
+	public void setHeaderObject(List headerObjects) {
+		this.headerObjects = headerObjects;
+	}
+	
+	public List getLibs() {
+		return libs;
+		// FIXME default libs if null or empty
+	}
+	
+	public void setLibs(List libs) {
+		this.libs = libs;
+	}
+
+	/** ICO file. */
+	public File getIcon() {
+		return icon;
+	}
+
+	public void setIcon(File icon) {
+		this.icon = icon;
+	}
+
+	/** Jar to wrap. */
+	public File getJar() {
+		return jar;
+	}
+
+	public void setJar(File jar) {
+		this.jar = jar;
+	}
+
+	/** JRE configuration */
+	public Jre getJre() {
+		return jre;
+	}
+
+	public void setJre(Jre jre) {
+		this.jre = jre;
+	}
+
+	/** Output EXE file. */
+	public File getOutfile() {
+		return outfile;
+	}
+
+	public void setOutfile(File outfile) {
+		this.outfile = outfile;
+	}
+
+	/** Custom process name as the output EXE file name. */
+	public boolean isCustomProcName() {
+		return customProcName;
+	}
+
+	public void setCustomProcName(boolean customProcName) {
+		this.customProcName = customProcName;
+	}
+
+	/** Splash screen configuration. */
+	public Splash getSplash() {
+		return splash;
+	}
+
+	public void setSplash(Splash splash) {
+		this.splash = splash;
+	}
+
+	/** Stay alive after launching the application. */
+	public boolean isStayAlive() {
+		return stayAlive;
+	}
+
+	public void setStayAlive(boolean stayAlive) {
+		this.stayAlive = stayAlive;
+	}
+	
+	public VersionInfo getVersionInfo() {
+		return versionInfo;
+	}
+
+	public void setVersionInfo(VersionInfo versionInfo) {
+		this.versionInfo = versionInfo;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/config/ConfigPersister.java b/installer/lib/launch4j/src/net/sf/launch4j/config/ConfigPersister.java
new file mode 100644
index 0000000000000000000000000000000000000000..b203df739503f0504e809d09ed92aed1e3e5ea09
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/config/ConfigPersister.java
@@ -0,0 +1,202 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 22, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Properties;
+
+import net.sf.launch4j.Util;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConfigPersister {
+
+	private static final ConfigPersister _instance = new ConfigPersister();
+
+	private final XStream _xstream;
+	private Config _config;
+	private File _configPath;
+
+	private ConfigPersister() {
+		_xstream = new XStream(new DomDriver());
+    	_xstream.alias("launch4jConfig", Config.class);
+    	_xstream.alias("jre", Jre.class);
+    	_xstream.alias("splash", Splash.class);
+    	_xstream.alias("versionInfo", VersionInfo.class);
+	}
+
+	public static ConfigPersister getInstance() {
+		return _instance;
+	}
+	
+	public Config getConfig() {
+		return _config;
+	}
+
+	public File getConfigPath() {
+		return _configPath;
+	}
+	
+	public File getOutputPath() throws IOException {
+		if (_config.getOutfile().isAbsolute()) {
+			return _config.getOutfile().getParentFile();
+		}
+		File parent = _config.getOutfile().getParentFile();
+		return (parent != null) ? new File(_configPath, parent.getPath()) : _configPath;
+	}
+	
+	public File getOutputFile() throws IOException {
+		return _config.getOutfile().isAbsolute()
+			? _config.getOutfile()
+			: new File(getOutputPath(), _config.getOutfile().getName());
+	}
+
+	public void createBlank() {
+		_config = new Config();
+		_config.setJre(new Jre());
+		_configPath = null;
+	}
+
+	public void setAntConfig(Config c, File basedir) {
+		_config = c;
+		_configPath = basedir;
+	}
+
+	public void load(File f) throws ConfigPersisterException {
+		try {
+			BufferedReader r = new BufferedReader(new FileReader(f));
+	    	_config = (Config) _xstream.fromXML(r);
+	    	r.close();
+	    	setConfigPath(f);
+		} catch (Exception e) {
+			throw new ConfigPersisterException(e);
+		}
+	}
+
+	/**
+	 * Imports launch4j 1.x.x config file.
+	 */
+	public void loadVersion1(File f) throws ConfigPersisterException {
+		try {
+			Props props = new Props(f);
+			_config = new Config();
+			String header = props.getProperty(Config.HEADER);
+			_config.setHeaderType(header == null
+					|| header.toLowerCase().equals("guihead.bin") ? 0 : 1);
+			_config.setJar(props.getFile(Config.JAR));
+			_config.setOutfile(props.getFile(Config.OUTFILE));
+			_config.setJre(new Jre());
+			_config.getJre().setPath(props.getProperty(Jre.PATH));
+			_config.getJre().setMinVersion(props.getProperty(Jre.MIN_VERSION));
+			_config.getJre().setMaxVersion(props.getProperty(Jre.MAX_VERSION));
+			_config.getJre().setArgs(props.getProperty(Jre.ARGS));
+			_config.setJarArgs(props.getProperty(Config.JAR_ARGS));
+			_config.setChdir("true".equals(props.getProperty(Config.CHDIR)) ? "." : null);
+			_config.setCustomProcName("true".equals(
+					props.getProperty("setProcName")));				// 1.x
+			_config.setStayAlive("true".equals(props.getProperty(Config.STAY_ALIVE)));
+			_config.setErrTitle(props.getProperty(Config.ERR_TITLE));
+			_config.setIcon(props.getFile(Config.ICON));
+			File splashFile = props.getFile(Splash.SPLASH_FILE);
+			if (splashFile != null) {
+				_config.setSplash(new Splash());
+				_config.getSplash().setFile(splashFile);
+				String waitfor = props.getProperty("waitfor");		// 1.x
+				_config.getSplash().setWaitForWindow(waitfor != null && !waitfor.equals(""));
+				String splashTimeout = props.getProperty(Splash.TIMEOUT);
+				if (splashTimeout != null) {
+					_config.getSplash().setTimeout(Integer.parseInt(splashTimeout));	
+				}
+				_config.getSplash().setTimeoutErr("true".equals(
+						props.getProperty(Splash.TIMEOUT_ERR)));
+			} else {
+				_config.setSplash(null);
+			}
+			setConfigPath(f);
+		} catch (IOException e) {
+			throw new ConfigPersisterException(e);
+		}
+	}
+
+	public void save(File f) throws ConfigPersisterException {
+		try {
+			BufferedWriter w = new BufferedWriter(new FileWriter(f));
+	    	_xstream.toXML(_config, w);
+	    	w.close();
+	    	setConfigPath(f);
+		} catch (Exception e) {
+			throw new ConfigPersisterException(e);
+		}
+	}
+
+	private void setConfigPath(File configFile) {
+		_configPath = configFile.getAbsoluteFile().getParentFile();
+	}
+
+	private class Props {
+		final Properties _properties = new Properties();
+
+		public Props(File f) throws IOException {
+			FileInputStream is = null;
+			try {
+				is = new FileInputStream(f);
+				_properties.load(is);
+			} finally {
+				Util.close(is);
+			}
+		}
+
+		/**
+		 * Get property and remove trailing # comments.
+		 */
+		public String getProperty(String key) {
+			String p = _properties.getProperty(key);
+			if (p == null) {
+				return null;
+			}
+			int x = p.indexOf('#');
+			if (x == -1) {
+				return p;
+			}
+			do {
+				x--;
+			} while (x > 0 && (p.charAt(x) == ' ' || p.charAt(x) == '\t'));
+			return (x == 0) ? "" : p.substring(0, x + 1);
+		}
+
+		public File getFile(String key) {
+			String value = getProperty(key);
+			return value != null ? new File(value) : null;
+		}
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java b/installer/lib/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ade4cc4508b8fc9c15aab01d67e4ff22e9f6ae3
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/config/ConfigPersisterException.java
@@ -0,0 +1,37 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 22, 2005
+ */
+package net.sf.launch4j.config;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConfigPersisterException extends Exception {
+
+	public ConfigPersisterException(String msg, Throwable t) {
+		super(msg, t);
+	}
+	
+	public ConfigPersisterException(Throwable t) {
+		super(t);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/config/Jre.java b/installer/lib/launch4j/src/net/sf/launch4j/config/Jre.java
new file mode 100644
index 0000000000000000000000000000000000000000..ef6c36fb7cc8410b1da693db17a44ce37945b20c
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/config/Jre.java
@@ -0,0 +1,125 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Jre implements IValidatable {
+	public static final String VERSION_PATTERN = "(\\d\\.){2}\\d(_\\d+)?";
+	public static final String PATH = "jrepath";
+	public static final String MIN_VERSION = "javamin";
+	public static final String MAX_VERSION = "javamax";
+	public static final String ARGS = "jvmArgs";
+
+	private String path;
+	private String minVersion;
+	private String maxVersion;
+	private int initialHeapSize;
+	private int maxHeapSize;
+	private String args;
+
+	public void checkInvariants() {
+		Validator.checkOptString(minVersion, 10, VERSION_PATTERN,
+				"jre.minVersion", "Minimum JRE version should be x.x.x[_xx]");
+		Validator.checkOptString(maxVersion, 10, VERSION_PATTERN,
+				"jre.maxVersion", "Maximum JRE version should be x.x.x[_xx]");
+		if (Validator.isEmpty(path)) {
+			Validator.checkFalse(Validator.isEmpty(minVersion),
+					"jre.path", "Specify embedded JRE path or/and minimum JRE version.");
+		} else {
+			Validator.checkRelativeWinPath(path,
+					"jre.path", "Embedded JRE path must be a path relative to the executable.");
+		}
+		if (!Validator.isEmpty(maxVersion)) {
+			Validator.checkFalse(Validator.isEmpty(minVersion),
+					"jre.minVersion", "Specify minimum JRE version.");
+			Validator.checkTrue(minVersion.compareTo(maxVersion) <= 0,
+					"jre.minVersion", "Minimum JRE version is greater than the maximum.");
+		}
+		Validator.checkTrue(initialHeapSize >= 0, "jre.initialHeapSize",
+				"Initial heap size cannot be negative," +
+				" specify 0 or leave the field blank to use the JVM default.");
+		Validator.checkTrue(maxHeapSize == 0 || initialHeapSize <= maxHeapSize,
+				"jre.maxHeapSize", "Maximum heap size cannot be less than the initial" +
+				" size, specify 0 or leave the field blank to use the JVM default.");
+		Validator.checkOptString(args, 512, "jre.args", "JVM arguments");
+	}
+
+	/** JVM arguments: XOptions, system properties. */
+	public String getArgs() {
+		return args;
+	}
+
+	public void setArgs(String args) {
+		this.args = args;
+	}
+
+	/** Max Java version (x.x.x) */
+	public String getMaxVersion() {
+		return maxVersion;
+	}
+
+	public void setMaxVersion(String maxVersion) {
+		this.maxVersion = maxVersion;
+	}
+
+	/** Min Java version (x.x.x) */
+	public String getMinVersion() {
+		return minVersion;
+	}
+
+	public void setMinVersion(String minVersion) {
+		this.minVersion = minVersion;
+	}
+
+	/** JRE path */
+	public String getPath() {
+		return path;
+	}
+
+	public void setPath(String path) {
+		this.path = path;
+	}
+
+	/** Initial heap size in MB */
+	public int getInitialHeapSize() {
+		return initialHeapSize;
+	}
+
+	public void setInitialHeapSize(int initialHeapSize) {
+		this.initialHeapSize = initialHeapSize;
+	}
+
+	/** Max heap size in MB */
+	public int getMaxHeapSize() {
+		return maxHeapSize;
+	}
+
+	public void setMaxHeapSize(int maxHeapSize) {
+		this.maxHeapSize = maxHeapSize;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/config/Splash.java b/installer/lib/launch4j/src/net/sf/launch4j/config/Splash.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7315a9d121f163666f8579886615de25339745f
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/config/Splash.java
@@ -0,0 +1,84 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on Apr 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import java.io.File;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class Splash implements IValidatable {
+	public static final String SPLASH_FILE = "splash";
+	public static final String WAIT_FOR_TITLE = "waitForTitle";
+	public static final String TIMEOUT = "splashTimeout";
+	public static final String TIMEOUT_ERR = "splashTimeoutErr";
+
+	private File file;
+	private boolean waitForWindow = true;
+	private int timeout = 60;
+	private boolean timeoutErr = true;
+
+	public void checkInvariants() {
+		Validator.checkFile(file, "splash.file", "Splash file");
+		Validator.checkRange(timeout, 1, 60 * 15, "splash.timeout", "Splash timeout");
+	}
+
+	/** Splash screen in BMP format. */
+	public File getFile() {
+		return file;
+	}
+
+	public void setFile(File file) {
+		this.file = file;
+	}
+
+	/** Splash timeout in seconds. */
+	public int getTimeout() {
+		return timeout;
+	}
+
+	public void setTimeout(int timeout) {
+		this.timeout = timeout;
+	}
+
+	/** Signal error on splash timeout. */
+	public boolean isTimeoutErr() {
+		return timeoutErr;
+	}
+
+	public void setTimeoutErr(boolean timeoutErr) {
+		this.timeoutErr = timeoutErr;
+	}
+
+	/** Hide splash screen when the child process displayes the first window. */
+	public boolean getWaitForWindow() {
+		return waitForWindow;
+	}
+
+	public void setWaitForWindow(boolean waitForWindow) {
+		this.waitForWindow = waitForWindow;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/config/VersionInfo.java b/installer/lib/launch4j/src/net/sf/launch4j/config/VersionInfo.java
new file mode 100644
index 0000000000000000000000000000000000000000..359af7e172e7ecb809cb2940d782f10abdcb3a47
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/config/VersionInfo.java
@@ -0,0 +1,135 @@
+/*
+ * Created on May 21, 2005
+ */
+package net.sf.launch4j.config;
+
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.binding.Validator;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class VersionInfo implements IValidatable {
+	public static final String VERSION_PATTERN = "(\\d+\\.){3}\\d+";
+	private static final int MAX_LEN = 150;
+
+	private String fileVersion;
+	private String txtFileVersion;
+	private String fileDescription;
+	private String copyright;
+	private String productVersion;
+	private String txtProductVersion;
+	private String productName;
+	private String companyName;
+	private String internalName;
+	private String originalFilename;
+
+	public void checkInvariants() {
+		Validator.checkString(fileVersion, 20, VERSION_PATTERN,
+				"versionInfo.fileVersion", "File version, should be 'x.x.x.x'");
+		Validator.checkString(txtFileVersion, 50,
+				"versionInfo.txtFileVersion", "Free form file version");
+		Validator.checkString(fileDescription, MAX_LEN,
+				"versionInfo.fileDescription", "File description");
+		Validator.checkString(copyright, MAX_LEN,
+				"versionInfo.copyright", "Copyright");
+		Validator.checkString(productVersion, 20, VERSION_PATTERN,
+				"versionInfo.productVersion", "Product version, should be 'x.x.x.x'");
+		Validator.checkString(txtProductVersion, 50,
+				"versionInfo.txtProductVersion", "Free from product version");
+		Validator.checkString(productName, MAX_LEN,
+				"versionInfo.productName", "Product name");
+		Validator.checkOptString(companyName, MAX_LEN,
+				"versionInfo.companyName", "Company name");
+		Validator.checkString(internalName, 50,
+				"versionInfo.internalName", "Internal name");
+		Validator.checkTrue(!internalName.endsWith(".exe"),
+				"versionInfo.internalName",
+				"Internal name shouldn't have the .exe extension.");
+		Validator.checkString(originalFilename, 50,
+				"versionInfo.originalFilename", "Original filename");
+		Validator.checkTrue(originalFilename.endsWith(".exe"),
+				"versionInfo.originalFilename",
+				"Original filename should end with the .exe extension.");
+	}
+
+	public String getCompanyName() {
+		return companyName;
+	}
+
+	public void setCompanyName(String companyName) {
+		this.companyName = companyName;
+	}
+
+	public String getCopyright() {
+		return copyright;
+	}
+
+	public void setCopyright(String copyright) {
+		this.copyright = copyright;
+	}
+
+	public String getFileDescription() {
+		return fileDescription;
+	}
+
+	public void setFileDescription(String fileDescription) {
+		this.fileDescription = fileDescription;
+	}
+
+	public String getFileVersion() {
+		return fileVersion;
+	}
+
+	public void setFileVersion(String fileVersion) {
+		this.fileVersion = fileVersion;
+	}
+
+	public String getInternalName() {
+		return internalName;
+	}
+
+	public void setInternalName(String internalName) {
+		this.internalName = internalName;
+	}
+
+	public String getOriginalFilename() {
+		return originalFilename;
+	}
+
+	public void setOriginalFilename(String originalFilename) {
+		this.originalFilename = originalFilename;
+	}
+
+	public String getProductName() {
+		return productName;
+	}
+
+	public void setProductName(String productName) {
+		this.productName = productName;
+	}
+
+	public String getProductVersion() {
+		return productVersion;
+	}
+
+	public void setProductVersion(String productVersion) {
+		this.productVersion = productVersion;
+	}
+
+	public String getTxtFileVersion() {
+		return txtFileVersion;
+	}
+
+	public void setTxtFileVersion(String txtFileVersion) {
+		this.txtFileVersion = txtFileVersion;
+	}
+
+	public String getTxtProductVersion() {
+		return txtProductVersion;
+	}
+
+	public void setTxtProductVersion(String txtProductVersion) {
+		this.txtProductVersion = txtProductVersion;
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/form/Config.jfrm b/installer/lib/launch4j/src/net/sf/launch4j/form/Config.jfrm
new file mode 100644
index 0000000000000000000000000000000000000000..0be002848db1c866e7c4cae90349264fdc0368dc
Binary files /dev/null and b/installer/lib/launch4j/src/net/sf/launch4j/form/Config.jfrm differ
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/form/ConfigForm.java b/installer/lib/launch4j/src/net/sf/launch4j/form/ConfigForm.java
new file mode 100644
index 0000000000000000000000000000000000000000..e41c832871ec1cbb81cd290752a775e66d6b8298
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/form/ConfigForm.java
@@ -0,0 +1,534 @@
+package net.sf.launch4j.form;
+
+import com.jeta.forms.components.separator.TitledSeparator;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+
+public abstract class ConfigForm extends JPanel
+{
+   protected final JTabbedPane _tab = new JTabbedPane();
+   protected final JButton _outfileButton = new JButton();
+   protected final JTextField _outfileField = new JTextField();
+   protected final JTextField _errorTitleField = new JTextField();
+   protected final JCheckBox _customProcNameCheck = new JCheckBox();
+   protected final JCheckBox _stayAliveCheck = new JCheckBox();
+   protected final JTextField _iconField = new JTextField();
+   protected final JTextField _jarField = new JTextField();
+   protected final JButton _jarButton = new JButton();
+   protected final JButton _iconButton = new JButton();
+   protected final JTextField _jarArgsField = new JTextField();
+   protected final JTextField _chdirField = new JTextField();
+   protected final JRadioButton _guiHeaderRadio = new JRadioButton();
+   protected final ButtonGroup _headerButtonGroup = new ButtonGroup();
+   protected final JRadioButton _consoleHeaderRadio = new JRadioButton();
+   protected final JList _objectFileList = new JList();
+   protected final JList _w32apiList = new JList();
+   protected final JTextField _jrePathField = new JTextField();
+   protected final JTextField _jreMinField = new JTextField();
+   protected final JTextField _jreMaxField = new JTextField();
+   protected final JTextArea _jvmArgsTextArea = new JTextArea();
+   protected final JTextField _initialHeapSizeField = new JTextField();
+   protected final JTextField _maxHeapSizeField = new JTextField();
+   protected final JCheckBox _timeoutErrCheck = new JCheckBox();
+   protected final JTextField _splashFileField = new JTextField();
+   protected final JTextField _timeoutField = new JTextField();
+   protected final JButton _splashFileButton = new JButton();
+   protected final JCheckBox _splashCheck = new JCheckBox();
+   protected final JCheckBox _waitForWindowCheck = new JCheckBox();
+   protected final JCheckBox _versionInfoCheck = new JCheckBox();
+   protected final JTextField _fileVersionField = new JTextField();
+   protected final JTextField _productVersionField = new JTextField();
+   protected final JTextField _fileDescriptionField = new JTextField();
+   protected final JTextField _copyrightField = new JTextField();
+   protected final JTextField _txtFileVersionField = new JTextField();
+   protected final JTextField _txtProductVersionField = new JTextField();
+   protected final JTextField _productNameField = new JTextField();
+   protected final JTextField _originalFilenameField = new JTextField();
+   protected final JTextField _internalNameField = new JTextField();
+   protected final JTextField _companyNameField = new JTextField();
+   protected final JTextArea _logTextArea = new JTextArea();
+
+   /**
+    * Default constructor
+    */
+   public ConfigForm()
+   {
+      initializePanel();
+   }
+
+   /**
+    * Adds fill components to empty cells in the first row and first column of the grid.
+    * This ensures that the grid spacing will be the same as shown in the designer.
+    * @param cols an array of column indices in the first row where fill components should be added.
+    * @param rows an array of row indices in the first column where fill components should be added.
+    */
+   void addFillComponents( Container panel, int[] cols, int[] rows )
+   {
+      Dimension filler = new Dimension(10,10);
+
+      boolean filled_cell_11 = false;
+      CellConstraints cc = new CellConstraints();
+      if ( cols.length > 0 && rows.length > 0 )
+      {
+         if ( cols[0] == 1 && rows[0] == 1 )
+         {
+            /** add a rigid area  */
+            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+            filled_cell_11 = true;
+         }
+      }
+
+      for( int index = 0; index < cols.length; index++ )
+      {
+         if ( cols[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+      }
+
+      for( int index = 0; index < rows.length; index++ )
+      {
+         if ( rows[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+      }
+
+   }
+
+   /**
+    * Helper method to load an image file from the CLASSPATH
+    * @param imageName the package and name of the file to load relative to the CLASSPATH
+    * @return an ImageIcon instance with the specified image file
+    * @throws IllegalArgumentException if the image resource cannot be loaded.
+    */
+   public ImageIcon loadImage( String imageName )
+   {
+      try
+      {
+         ClassLoader classloader = getClass().getClassLoader();
+         java.net.URL url = classloader.getResource( imageName );
+         if ( url != null )
+         {
+            ImageIcon icon = new ImageIcon( url );
+            return icon;
+         }
+      }
+      catch( Exception e )
+      {
+         e.printStackTrace();
+      }
+      throw new IllegalArgumentException( "Unable to load image: " + imageName );
+   }
+
+   public JPanel createPanel()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE","CENTER:3DLU:NONE,FILL:DEFAULT:NONE,CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:3DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      _tab.setName("tab");
+      _tab.addTab("Basic",null,createPanel1());
+      _tab.addTab("Header",null,createPanel2());
+      _tab.addTab("JRE",null,createPanel3());
+      _tab.addTab("Splash",null,createPanel4());
+      _tab.addTab("Version Info",null,createPanel5());
+      jpanel1.add(_tab,cc.xy(2,2));
+
+      _logTextArea.setName("logTextArea");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(_logTextArea);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xy(2,6));
+
+      TitledSeparator titledseparator1 = new TitledSeparator();
+      titledseparator1.setText("Log");
+      jpanel1.add(titledseparator1,cc.xy(2,4));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4,5,6,7 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel1()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(55DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:26PX:NONE,FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      _outfileButton.setIcon(loadImage("images/open16.png"));
+      _outfileButton.setName("outfileButton");
+      jpanel1.add(_outfileButton,cc.xy(6,2));
+
+      JLabel jlabel1 = new JLabel();
+      jlabel1.setText("<html><b>Output file</b></html>");
+      jpanel1.add(jlabel1,cc.xy(2,2));
+
+      JLabel jlabel2 = new JLabel();
+      jlabel2.setText("Error title");
+      jpanel1.add(jlabel2,cc.xy(2,12));
+
+      _outfileField.setName("outfileField");
+      _outfileField.setToolTipText("Output executable file.");
+      jpanel1.add(_outfileField,cc.xy(4,2));
+
+      _errorTitleField.setName("errorTitleField");
+      _errorTitleField.setToolTipText("Launch4j signals errors using a message box, you can set it's title to the application's name.");
+      jpanel1.add(_errorTitleField,cc.xy(4,12));
+
+      _customProcNameCheck.setActionCommand("Custom process name");
+      _customProcNameCheck.setName("customProcNameCheck");
+      _customProcNameCheck.setText("Custom process name");
+      jpanel1.add(_customProcNameCheck,cc.xy(4,14));
+
+      _stayAliveCheck.setActionCommand("Stay alive after launching a GUI application");
+      _stayAliveCheck.setName("stayAliveCheck");
+      _stayAliveCheck.setText("Stay alive after launching a GUI application");
+      jpanel1.add(_stayAliveCheck,cc.xy(4,16));
+
+      JLabel jlabel3 = new JLabel();
+      jlabel3.setText("Icon");
+      jpanel1.add(jlabel3,cc.xy(2,6));
+
+      _iconField.setName("iconField");
+      _iconField.setToolTipText("Application icon.");
+      jpanel1.add(_iconField,cc.xy(4,6));
+
+      _jarField.setName("jarField");
+      _jarField.setToolTipText("Application jar.");
+      jpanel1.add(_jarField,cc.xy(4,4));
+
+      JLabel jlabel4 = new JLabel();
+      jlabel4.setText("<html><b>Jar</b></html>");
+      jpanel1.add(jlabel4,cc.xy(2,4));
+
+      _jarButton.setIcon(loadImage("images/open16.png"));
+      _jarButton.setName("jarButton");
+      jpanel1.add(_jarButton,cc.xy(6,4));
+
+      _iconButton.setIcon(loadImage("images/open16.png"));
+      _iconButton.setName("iconButton");
+      jpanel1.add(_iconButton,cc.xy(6,6));
+
+      JLabel jlabel5 = new JLabel();
+      jlabel5.setText("Jar arguments");
+      jpanel1.add(jlabel5,cc.xy(2,10));
+
+      _jarArgsField.setName("jarArgsField");
+      _jarArgsField.setToolTipText("Constant command line arguments passed to the application.");
+      jpanel1.add(_jarArgsField,cc.xy(4,10));
+
+      JLabel jlabel6 = new JLabel();
+      jlabel6.setText("Options");
+      jpanel1.add(jlabel6,cc.xy(2,14));
+
+      JLabel jlabel7 = new JLabel();
+      jlabel7.setText("Change dir");
+      jpanel1.add(jlabel7,cc.xy(2,8));
+
+      _chdirField.setName("chdirField");
+      _chdirField.setToolTipText("Change current directory to a location relative to the executable. Empty field has no effect, . - changes directory to the exe location.");
+      jpanel1.add(_chdirField,cc.xy(4,8));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel2()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(55DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:7DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(0.2),CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      JLabel jlabel1 = new JLabel();
+      jlabel1.setText("Header type");
+      jpanel1.add(jlabel1,cc.xy(2,2));
+
+      _guiHeaderRadio.setActionCommand("GUI");
+      _guiHeaderRadio.setName("guiHeaderRadio");
+      _guiHeaderRadio.setText("GUI");
+      _headerButtonGroup.add(_guiHeaderRadio);
+      jpanel1.add(_guiHeaderRadio,cc.xy(4,2));
+
+      _consoleHeaderRadio.setActionCommand("Console");
+      _consoleHeaderRadio.setName("consoleHeaderRadio");
+      _consoleHeaderRadio.setText("Console");
+      _headerButtonGroup.add(_consoleHeaderRadio);
+      jpanel1.add(_consoleHeaderRadio,cc.xy(6,2));
+
+      JLabel jlabel2 = new JLabel();
+      jlabel2.setText("Object files");
+      jpanel1.add(jlabel2,new CellConstraints(2,4,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+      _objectFileList.setName("objectFileList");
+      _objectFileList.setToolTipText("Compiled header files.");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(_objectFileList);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xywh(4,4,4,1));
+
+      JLabel jlabel3 = new JLabel();
+      jlabel3.setText("w32api");
+      jpanel1.add(jlabel3,new CellConstraints(2,6,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+      _w32apiList.setName("w32apiList");
+      _w32apiList.setToolTipText("DLLs required by header.");
+      JScrollPane jscrollpane2 = new JScrollPane();
+      jscrollpane2.setViewportView(_w32apiList);
+      jscrollpane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane2,cc.xywh(4,6,4,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel3()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(55DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:9DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      JLabel jlabel1 = new JLabel();
+      jlabel1.setText("<html><b>Emb. JRE path</b></html>");
+      jpanel1.add(jlabel1,cc.xy(2,2));
+
+      JLabel jlabel2 = new JLabel();
+      jlabel2.setText("<html><b>Min JRE version</b></html>");
+      jpanel1.add(jlabel2,cc.xy(2,4));
+
+      JLabel jlabel3 = new JLabel();
+      jlabel3.setText("Max JRE version");
+      jpanel1.add(jlabel3,cc.xy(2,6));
+
+      JLabel jlabel4 = new JLabel();
+      jlabel4.setText("JVM arguments");
+      jpanel1.add(jlabel4,new CellConstraints(2,12,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+      _jrePathField.setName("jrePathField");
+      _jrePathField.setToolTipText("Embedded JRE path relative to the executable.");
+      jpanel1.add(_jrePathField,cc.xywh(4,2,4,1));
+
+      _jreMinField.setName("jreMinField");
+      jpanel1.add(_jreMinField,cc.xy(4,4));
+
+      _jreMaxField.setName("jreMaxField");
+      jpanel1.add(_jreMaxField,cc.xy(4,6));
+
+      _jvmArgsTextArea.setName("jvmArgsTextArea");
+      _jvmArgsTextArea.setToolTipText("Accepts everything you would normally pass to java/javaw launcher: assertion options, system properties and X options.");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(_jvmArgsTextArea);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xywh(4,12,4,1));
+
+      JLabel jlabel5 = new JLabel();
+      jlabel5.setText("Initial heap size");
+      jpanel1.add(jlabel5,cc.xy(2,8));
+
+      JLabel jlabel6 = new JLabel();
+      jlabel6.setText("Max heap size");
+      jpanel1.add(jlabel6,cc.xy(2,10));
+
+      JLabel jlabel7 = new JLabel();
+      jlabel7.setText("MB");
+      jpanel1.add(jlabel7,cc.xy(6,8));
+
+      JLabel jlabel8 = new JLabel();
+      jlabel8.setText("MB");
+      jpanel1.add(jlabel8,cc.xy(6,10));
+
+      _initialHeapSizeField.setName("initialHeapSizeField");
+      jpanel1.add(_initialHeapSizeField,cc.xy(4,8));
+
+      _maxHeapSizeField.setName("maxHeapSizeField");
+      jpanel1.add(_maxHeapSizeField,cc.xy(4,10));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel4()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(55DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:26PX:NONE,FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      JLabel jlabel1 = new JLabel();
+      jlabel1.setText("Splash file");
+      jpanel1.add(jlabel1,cc.xy(2,4));
+
+      JLabel jlabel2 = new JLabel();
+      jlabel2.setText("Wait for window");
+      jpanel1.add(jlabel2,cc.xy(2,6));
+
+      JLabel jlabel3 = new JLabel();
+      jlabel3.setText("Timeout [s]");
+      jpanel1.add(jlabel3,cc.xy(2,8));
+
+      _timeoutErrCheck.setActionCommand("Signal error on timeout");
+      _timeoutErrCheck.setName("timeoutErrCheck");
+      _timeoutErrCheck.setText("Signal error on timeout");
+      _timeoutErrCheck.setToolTipText("True signals an error on splash timeout, false closes the splash screen quietly.");
+      jpanel1.add(_timeoutErrCheck,cc.xywh(4,10,2,1));
+
+      _splashFileField.setName("splashFileField");
+      _splashFileField.setToolTipText("Splash screen file in BMP format.");
+      jpanel1.add(_splashFileField,cc.xywh(4,4,2,1));
+
+      _timeoutField.setName("timeoutField");
+      _timeoutField.setToolTipText("Number of seconds after which the splash screen must close. Splash timeout may cause an error depending on splashTimeoutErr property.");
+      jpanel1.add(_timeoutField,cc.xy(4,8));
+
+      _splashFileButton.setIcon(loadImage("images/open16.png"));
+      _splashFileButton.setName("splashFileButton");
+      jpanel1.add(_splashFileButton,cc.xy(7,4));
+
+      _splashCheck.setActionCommand("Enable splash screen");
+      _splashCheck.setName("splashCheck");
+      _splashCheck.setText("Enable splash screen");
+      jpanel1.add(_splashCheck,cc.xywh(4,2,2,1));
+
+      _waitForWindowCheck.setActionCommand("Close splash screen when an application window appears");
+      _waitForWindowCheck.setName("waitForWindowCheck");
+      _waitForWindowCheck.setText("Close splash screen when an application window appears");
+      jpanel1.add(_waitForWindowCheck,cc.xywh(4,6,2,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel5()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(55DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:7DLU:NONE,RIGHT:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      _versionInfoCheck.setActionCommand("Add version information");
+      _versionInfoCheck.setName("versionInfoCheck");
+      _versionInfoCheck.setText("Add version information");
+      jpanel1.add(_versionInfoCheck,cc.xywh(4,2,5,1));
+
+      JLabel jlabel1 = new JLabel();
+      jlabel1.setText("File version");
+      jpanel1.add(jlabel1,cc.xy(2,4));
+
+      _fileVersionField.setName("fileVersionField");
+      _fileVersionField.setToolTipText("Version number 'x.x.x.x'");
+      jpanel1.add(_fileVersionField,cc.xy(4,4));
+
+      TitledSeparator titledseparator1 = new TitledSeparator();
+      titledseparator1.setText("Additional information");
+      jpanel1.add(titledseparator1,cc.xywh(2,10,7,1));
+
+      JLabel jlabel2 = new JLabel();
+      jlabel2.setText("Product version");
+      jpanel1.add(jlabel2,cc.xy(2,12));
+
+      _productVersionField.setName("productVersionField");
+      _productVersionField.setToolTipText("Version number 'x.x.x.x'");
+      jpanel1.add(_productVersionField,cc.xy(4,12));
+
+      JLabel jlabel3 = new JLabel();
+      jlabel3.setText("File description");
+      jpanel1.add(jlabel3,cc.xy(2,6));
+
+      _fileDescriptionField.setName("fileDescriptionField");
+      _fileDescriptionField.setToolTipText("File description presented to the user.");
+      jpanel1.add(_fileDescriptionField,cc.xywh(4,6,5,1));
+
+      JLabel jlabel4 = new JLabel();
+      jlabel4.setText("Copyright");
+      jpanel1.add(jlabel4,cc.xy(2,8));
+
+      _copyrightField.setName("copyrightField");
+      jpanel1.add(_copyrightField,cc.xywh(4,8,5,1));
+
+      JLabel jlabel5 = new JLabel();
+      jlabel5.setText("Free form");
+      jpanel1.add(jlabel5,cc.xy(6,4));
+
+      _txtFileVersionField.setName("txtFileVersionField");
+      _txtFileVersionField.setToolTipText("Free form file version, for example '1.20.RC1'.");
+      jpanel1.add(_txtFileVersionField,cc.xy(8,4));
+
+      JLabel jlabel6 = new JLabel();
+      jlabel6.setText("Free form");
+      jpanel1.add(jlabel6,cc.xy(6,12));
+
+      _txtProductVersionField.setName("txtProductVersionField");
+      _txtProductVersionField.setToolTipText("Free form product version, for example '1.20.RC1'.");
+      jpanel1.add(_txtProductVersionField,cc.xy(8,12));
+
+      JLabel jlabel7 = new JLabel();
+      jlabel7.setText("Product name");
+      jpanel1.add(jlabel7,cc.xy(2,14));
+
+      _productNameField.setName("productNameField");
+      jpanel1.add(_productNameField,cc.xywh(4,14,5,1));
+
+      JLabel jlabel8 = new JLabel();
+      jlabel8.setText("Original filename");
+      jpanel1.add(jlabel8,cc.xy(2,20));
+
+      _originalFilenameField.setName("originalFilenameField");
+      _originalFilenameField.setToolTipText("Original name of the file without the path. Allows to determine whether a file has been renamed by a user.");
+      jpanel1.add(_originalFilenameField,cc.xywh(4,20,5,1));
+
+      JLabel jlabel9 = new JLabel();
+      jlabel9.setText("Internal name");
+      jpanel1.add(jlabel9,cc.xy(2,18));
+
+      _internalNameField.setName("internalNameField");
+      _internalNameField.setToolTipText("Internal name without extension, original filename or module name for example.");
+      jpanel1.add(_internalNameField,cc.xywh(4,18,5,1));
+
+      JLabel jlabel10 = new JLabel();
+      jlabel10.setText("Company name");
+      jpanel1.add(jlabel10,cc.xy(2,16));
+
+      _companyNameField.setName("companyNameField");
+      jpanel1.add(_companyNameField,cc.xywh(4,16,5,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8,9 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 });
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java b/installer/lib/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf87719ad2404d552e1db27fffc32ec4a290f067
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/formimpl/ConfigFormImpl.java
@@ -0,0 +1,141 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on May 10, 2005
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.JRadioButton;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import net.sf.launch4j.FileChooserFilter;
+import net.sf.launch4j.binding.Binding;
+import net.sf.launch4j.binding.Bindings;
+import net.sf.launch4j.binding.IValidatable;
+import net.sf.launch4j.config.Splash;
+import net.sf.launch4j.config.VersionInfo;
+import net.sf.launch4j.form.ConfigForm;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class ConfigFormImpl extends ConfigForm {
+	private final JFileChooser _fileChooser = new JFileChooser();
+	private final Bindings _bindings = new Bindings();
+
+	public ConfigFormImpl() {
+		_outfileButton.addActionListener(new BrowseActionListener(
+				_outfileField, new FileChooserFilter("Windows executables (.exe)", ".exe")));
+		_jarButton.addActionListener(new BrowseActionListener(
+				_jarField, new FileChooserFilter("Jar files", ".jar")));
+		_iconButton.addActionListener(new BrowseActionListener(
+				_iconField, new FileChooserFilter("Icon files (.ico)", ".ico")));
+		_splashFileButton.addActionListener(new BrowseActionListener(
+				_splashFileField, new FileChooserFilter("Bitmap files (.bmp)", ".bmp")));
+
+		_bindings.add("outfile", _outfileField)
+				.add("jar", _jarField)
+				.add("icon", _iconField)
+				.add("jarArgs", _jarArgsField)
+				.add("errTitle", _errorTitleField)
+				.add("chdir", _chdirField)
+				.add("customProcName", _customProcNameCheck)
+				.add("stayAlive", _stayAliveCheck)
+				.add("headerType", new JRadioButton[] {_guiHeaderRadio, _consoleHeaderRadio})
+				// TODO header object files
+				// TODO w32api
+				.add("jre.path", _jrePathField)
+				.add("jre.minVersion", _jreMinField)
+				.add("jre.maxVersion", _jreMaxField)
+				.add("jre.initialHeapSize", _initialHeapSizeField)
+				.add("jre.maxHeapSize", _maxHeapSizeField)
+				.add("jre.args", _jvmArgsTextArea)
+				.addOptComponent("splash", Splash.class, _splashCheck)
+				.add("splash.file", _splashFileField)
+				.add("splash.waitForWindow", _waitForWindowCheck, true)
+				.add("splash.timeout", _timeoutField, "60")
+				.add("splash.timeoutErr", _timeoutErrCheck, true)
+				.addOptComponent("versionInfo", VersionInfo.class, _versionInfoCheck)
+				.add("versionInfo.fileVersion", _fileVersionField)
+				.add("versionInfo.productVersion", _productVersionField)
+				.add("versionInfo.fileDescription", _fileDescriptionField)
+				.add("versionInfo.internalName", _internalNameField)
+				.add("versionInfo.originalFilename", _originalFilenameField)
+				.add("versionInfo.productName", _productNameField)
+				.add("versionInfo.txtFileVersion", _txtFileVersionField)
+				.add("versionInfo.txtProductVersion", _txtProductVersionField)
+				.add("versionInfo.companyName", _companyNameField)
+				.add("versionInfo.copyright", _copyrightField);
+	}
+
+	private class BrowseActionListener implements ActionListener {
+		private final JTextField _field;
+		private final FileChooserFilter _filter;
+
+		public BrowseActionListener(JTextField field, FileChooserFilter filter) {
+			_field = field;
+			_filter = filter;
+		}
+
+		public void actionPerformed(ActionEvent e) {
+			if (!_field.isEnabled()) {
+				return;
+			}
+			_fileChooser.setFileFilter(_filter);
+			_fileChooser.setSelectedFile(new File(""));
+			int result = _field.equals(_outfileField)
+					? _fileChooser.showSaveDialog(MainFrame.getInstance())
+					: _fileChooser.showOpenDialog(MainFrame.getInstance());
+			if (result == JFileChooser.APPROVE_OPTION) {
+				_field.setText(_fileChooser.getSelectedFile().getPath());
+			}
+		}
+	}
+	
+	public void clear() {
+		_bindings.clear();
+	}
+
+	public void put(IValidatable bean) {
+		_bindings.put(bean);
+	}
+
+	public void get(IValidatable bean) {
+		_bindings.get(bean);
+	}
+	
+	public boolean isModified() {
+		return _bindings.isModified();
+	}
+	
+	public JTextArea getLogTextArea() {
+		return _logTextArea;
+	}
+	
+	public Binding getBinding(String property) {
+		return _bindings.getBinding(property);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java b/installer/lib/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1b1d8dd4f0571eadd81759551be4dedcd62f25e
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/formimpl/GlassPane.java
@@ -0,0 +1,67 @@
+package net.sf.launch4j.formimpl;
+
+import java.awt.AWTEvent;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Toolkit;
+import java.awt.Window;
+import java.awt.event.AWTEventListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+
+import javax.swing.JComponent;
+import javax.swing.SwingUtilities;
+
+/**
+ * This is the glass pane class that intercepts screen interactions during
+ * system busy states.
+ * 
+ * Based on JavaWorld article by Yexin Chen.
+ */
+public class GlassPane extends JComponent implements AWTEventListener {
+	private final Window _window;
+
+	public GlassPane(Window w) {
+		_window = w;
+		addMouseListener(new MouseAdapter() {});
+		addKeyListener(new KeyAdapter() {});
+		setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+	}
+
+	/**
+	 * Receives all key events in the AWT and processes the ones that originated
+	 * from the current window with the glass pane.
+	 * 
+	 * @param event
+	 *            the AWTEvent that was fired
+	 */
+	public void eventDispatched(AWTEvent event) {
+		Object source = event.getSource();
+		if (event instanceof KeyEvent
+				&& source instanceof Component) {
+			/*
+			 * If the event originated from the window w/glass pane,
+			 * consume the event.
+			 */
+			if ((SwingUtilities.windowForComponent((Component) source) == _window)) {
+				((KeyEvent) event).consume();
+			}
+		}
+	}
+
+	/**
+	 * Sets the glass pane as visible or invisible. The mouse cursor will be set
+	 * accordingly.
+	 */
+	public void setVisible(boolean visible) {
+		if (visible) {
+			// Start receiving all events and consume them if necessary
+			Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
+		} else {
+			// Stop receiving all events
+			Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+		}
+		super.setVisible(visible);
+	}
+}
diff --git a/installer/lib/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java b/installer/lib/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java
new file mode 100644
index 0000000000000000000000000000000000000000..a402e7c22a827e83c5b7aac566e7e5c2c1294ddf
--- /dev/null
+++ b/installer/lib/launch4j/src/net/sf/launch4j/formimpl/MainFrame.java
@@ -0,0 +1,319 @@
+/*
+ 	launch4j :: Cross-platform Java application wrapper for creating Windows native executables
+ 	Copyright (C) 2005 Grzegorz Kowal
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+ * Created on 2005-05-09
+ */
+package net.sf.launch4j.formimpl;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JToolBar;
+import javax.swing.UIManager;
+
+import com.jgoodies.plaf.Options;
+import com.jgoodies.plaf.plastic.PlasticXPLookAndFeel;
+
+import foxtrot.Task;
+import foxtrot.Worker;
+
+import net.sf.launch4j.Builder;
+import net.sf.launch4j.BuilderException;
+import net.sf.launch4j.ExecException;
+import net.sf.launch4j.FileChooserFilter;
+import net.sf.launch4j.Log;
+import net.sf.launch4j.Main;
+import net.sf.launch4j.Util;
+import net.sf.launch4j.binding.BindingException;
+import net.sf.launch4j.binding.InvariantViolationException;
+import net.sf.launch4j.config.Config;
+import net.sf.launch4j.config.ConfigPersister;
+import net.sf.launch4j.config.ConfigPersisterException;
+
+/**
+ * @author Copyright (C) 2005 Grzegorz Kowal
+ */
+public class MainFrame extends JFrame {
+	private static MainFrame _instance;
+
+	private final JToolBar _toolBar;
+	private final JButton _runButton;
+	private final ConfigFormImpl _configForm;
+	private final JFileChooser _fileChooser = new JFileChooser();
+	private File _outfile;
+	private boolean _saved = false;
+
+	public static void createInstance() {
+		try {
+			Toolkit.getDefaultToolkit().setDynamicLayout(true);
+			System.setProperty("sun.awt.noerasebackground","true");
+	
+			// JGoodies
+			Options.setDefaultIconSize(new Dimension(16, 16));		// menu icons
+			Options.setUseNarrowButtons(false);
+			Options.setPopupDropShadowEnabled(true);
+
+			UIManager.setLookAndFeel(new PlasticXPLookAndFeel());
+			_instance = new MainFrame();
+		} catch (Exception e) {
+			System.err.println(e);
+		}
+	}
+
+	public static MainFrame getInstance() {
+		return _instance;
+	}
+
+	public MainFrame() {
+		showConfigName(null);
+		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+		addWindowListener(new ExitWindowListener());
+		setGlassPane(new GlassPane(this));
+		_fileChooser.setFileFilter(new FileChooserFilter("launch4j config files (.xml, .cfg)",
+				new String[] {".xml", ".cfg"}));
+
+		_toolBar = new JToolBar();
+		_toolBar.setFloatable(false);
+		_toolBar.setRollover(true);
+		addButton("images/new.png", "New configuration", new NewActionListener());
+		addButton("images/open.png", "Open configuration or import 1.x", new OpenActionListener());
+		addButton("images/save.png", "Save configuration",  new SaveActionListener());
+		_toolBar.addSeparator();
+		addButton("images/build.png", "Build wrapper", new BuildActionListener());
+		_runButton = addButton("images/run.png", "Test wrapper", new RunActionListener());
+		setRunEnabled(false);
+		_toolBar.addSeparator();
+		addButton("images/info.png", "About launch4j", new AboutActionListener());
+
+		_configForm = new ConfigFormImpl();
+		getContentPane().setLayout(new BorderLayout());
+		getContentPane().add(_toolBar, BorderLayout.NORTH);
+		getContentPane().add(_configForm, BorderLayout.CENTER);
+		_configForm.clear();
+		pack();
+		Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
+		Dimension fr = getSize();
+		fr.height += 100;
+		setBounds((scr.width - fr.width) / 2, (scr.height - fr.height) / 2, fr.width, fr.height);
+		setVisible(true);
+	}
+
+	private JButton addButton(String iconPath, String tooltip, ActionListener l) {
+		ImageIcon icon = new ImageIcon(MainFrame.class.getClassLoader().getResource(iconPath));
+		JButton b = new JButton(icon);
+		b.setToolTipText(tooltip);
+		b.addActionListener(l);
+		_toolBar.add(b);
+		return b;
+	}
+	
+	public void info(String text) {
+		JOptionPane.showMessageDialog(this, 
+									text,
+									Main.PROGRAM_NAME,
+									JOptionPane.INFORMATION_MESSAGE);
+	}
+
+	public void warn(String text) {
+		JOptionPane.showMessageDialog(this, 
+									text,
+									Main.PROGRAM_NAME,
+									JOptionPane.WARNING_MESSAGE);
+	}
+
+	public void warn(InvariantViolationException e) {
+		e.getBinding().markInvalid();
+		warn(e.getMessage());
+		e.getBinding().markValid();
+	}
+
+	private boolean isModified() {
+		return (!_configForm.isModified())
+				|| JOptionPane.showConfirmDialog(MainFrame.this,
+						"Discard changes?",
+						"Confirm",
+						JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
+	}
+	
+	private boolean save() {
+		// XXX
+		try {
+			_configForm.get(ConfigPersister.getInstance().getConfig());
+			if (_fileChooser.showSaveDialog(MainFrame.this) == JOptionPane.YES_OPTION) {
+				File f = _fileChooser.getSelectedFile();
+				if (!f.getPath().endsWith(".xml")) {
+					f = new File(f.getPath() + ".xml");
+				}
+				ConfigPersister.getInstance().save(f);
+				_saved = true;
+				showConfigName(f);
+				return true;
+			}
+			return false;
+		} catch (InvariantViolationException ex) {
+			warn(ex);
+			return false;
+		} catch (BindingException ex) {
+			warn(ex.getMessage());
+			return false;
+		} catch (ConfigPersisterException ex) {
+			warn(ex.getMessage());
+			return false;
+		}
+	}
+
+	private void showConfigName(File config) {
+		setTitle(Main.PROGRAM_NAME + " - " + (config != null ? config.getName() : "untitled"));
+	}
+
+	private void setRunEnabled(boolean enabled) {
+		if (!enabled) {
+			_outfile = null;
+		}
+		_runButton.setEnabled(enabled);
+	}
+
+	private class ExitWindowListener extends WindowAdapter {
+		public void windowClosing(WindowEvent e) {
+			if (isModified()) {
+				System.exit(0);
+			}
+		}
+	}
+
+	private class NewActionListener implements ActionListener {
+		public void actionPerformed(ActionEvent e) {
+			if (isModified()) {
+				ConfigPersister.getInstance().createBlank();
+				_configForm.put(ConfigPersister.getInstance().getConfig());
+			}
+			_saved = false;
+			showConfigName(null);
+			setRunEnabled(false);
+		}
+	}
+
+	private class OpenActionListener implements ActionListener {
+		public void actionPerformed(ActionEvent e) {
+			try {
+				if (isModified()
+						&& _fileChooser.showOpenDialog(MainFrame.this) == JOptionPane.YES_OPTION) {
+					final File f = _fileChooser.getSelectedFile(); 
+					if (f.getPath().endsWith(".xml")) {
+						ConfigPersister.getInstance().load(f);	
+						_saved = true;
+					} else {
+						ConfigPersister.getInstance().loadVersion1(f);
+						_saved = false;
+					}
+					_configForm.put(ConfigPersister.getInstance().getConfig());
+					showConfigName(f);
+					setRunEnabled(false);
+				}
+			} catch (ConfigPersisterException ex) {
+				warn(ex.getMessage());
+			}
+		}
+	}
+	
+	private class SaveActionListener implements ActionListener {
+		public void actionPerformed(ActionEvent e) {
+			save();
+		}
+	}
+	
+	private class BuildActionListener implements ActionListener {
+		public void actionPerformed(ActionEvent e) {
+			final Log log = Log.getSwingLog(_configForm.getLogTextArea());
+			try {
+				if ((!_saved || _configForm.isModified())
+						&& !save()) {
+					return;
+				}
+				log.clear();
+				ConfigPersister.getInstance().getConfig().checkInvariants();
+				Builder b = new Builder(log);
+				_outfile = b.build();
+				setRunEnabled(ConfigPersister.getInstance().getConfig().getHeaderType()
+						== Config.GUI_HEADER);	// TODO fix console app test 
+			} catch (InvariantViolationException ex) {
+				setRunEnabled(false);
+				ex.setBinding(_configForm.getBinding(ex.getProperty()));	// XXX
+				warn(ex);
+			} catch (BuilderException ex) {
+				setRunEnabled(false);
+				log.append(ex.getMessage());
+			}
+		}
+	}
+	
+	private class RunActionListener implements ActionListener {
+		public void actionPerformed(ActionEvent e) {
+			try {
+				getGlassPane().setVisible(true);
+				Worker.post(new Task() {
+					public Object run() throws ExecException {
+						Log log = Log.getSwingLog(_configForm.getLogTextArea());
+						log.clear();
+						String path = _outfile.getPath();
+						if (Util.WINDOWS_OS) {
+							log.append("Executing: " + path);
+							Util.exec(path, log);
+						} else {
+							log.append("Jar integrity test, executing: " + path);
+							Util.exec("java -jar " + path, log);
+						}
+						return null;
+					}
+				});
+			} catch (Exception ex) {
+				// XXX errors logged by exec
+			} finally {
+				getGlassPane().setVisible(false);
+			}
+		};
+	}
+
+	private class AboutActionListener implements ActionListener {
+		public void actionPerformed(ActionEvent e) {
+			info(Main.PROGRAM_DESCRIPTION
+					+ "The following projects are used by launch4j...\n\n"
+					+ "MinGW binutils (http://www.mingw.org/)\n"
+					+ "Commons BeanUtils (http://jakarta.apache.org/commons/beanutils/)\n"
+					+ "Commons Logging (http://jakarta.apache.org/commons/logging/)\n"
+					+ "XStream (http://xstream.codehaus.org/)\n"
+					+ "JGoodies Forms (http://www.jgoodies.com/freeware/forms/)\n"
+					+ "JGoodies Looks (http://www.jgoodies.com/freeware/looks/)\n"
+					+ "Foxtrot (http://foxtrot.sourceforge.net/)\n"
+					+ "Nuvola Icon Theme (http://www.icon-king.com)");
+		}
+	}
+}
diff --git a/installer/lib/launch4j/w32api/MinGW.LICENSE.txt b/installer/lib/launch4j/w32api/MinGW.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..aea85bd8dcdca1c79355d9f81a5c17437934df10
--- /dev/null
+++ b/installer/lib/launch4j/w32api/MinGW.LICENSE.txt
@@ -0,0 +1,25 @@
+MinGW - Licensing Terms
+
+Various pieces distributed with MinGW come with its own copyright and license:
+
+Basic MinGW runtime
+    MinGW base runtime package is uncopyrighted and placed in the public domain.
+    This basically means that you can do what you want with the code.
+
+w32api
+    You are free to use, modify and copy this package.
+    No restrictions are imposed on programs or object files compiled with this library.
+    You may not restrict the the usage of this library.
+    You may distribute this library as part of another package or as a modified package
+    if and only if you do not restrict the usage of the portions consisting
+    of this (optionally modified) library.
+    If distributed as a modified package then this file must be included.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty
+    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+MinGW profiling code
+    MinGW profiling code is distributed under the GNU General Public License. 
+
+The development tools such as GCC, GDB, GNU Make, etc all covered by GNU General Public License.
diff --git a/installer/lib/launch4j/w32api/crt2.o b/installer/lib/launch4j/w32api/crt2.o
new file mode 100644
index 0000000000000000000000000000000000000000..462667056e82e18f461494e459ce085aa92969e3
Binary files /dev/null and b/installer/lib/launch4j/w32api/crt2.o differ
diff --git a/installer/lib/launch4j/w32api/libadvapi32.a b/installer/lib/launch4j/w32api/libadvapi32.a
new file mode 100644
index 0000000000000000000000000000000000000000..801c6606c0f7e878083b6ed7ec6f782b61dede22
Binary files /dev/null and b/installer/lib/launch4j/w32api/libadvapi32.a differ
diff --git a/installer/lib/launch4j/w32api/libgcc.a b/installer/lib/launch4j/w32api/libgcc.a
new file mode 100644
index 0000000000000000000000000000000000000000..d3f89479ee9608c634c996cc7548aabd0943631f
Binary files /dev/null and b/installer/lib/launch4j/w32api/libgcc.a differ
diff --git a/installer/lib/launch4j/w32api/libkernel32.a b/installer/lib/launch4j/w32api/libkernel32.a
new file mode 100644
index 0000000000000000000000000000000000000000..c45e991a7f447f019d994865ae9329f633802500
Binary files /dev/null and b/installer/lib/launch4j/w32api/libkernel32.a differ
diff --git a/installer/lib/launch4j/w32api/libmingw32.a b/installer/lib/launch4j/w32api/libmingw32.a
new file mode 100644
index 0000000000000000000000000000000000000000..f342ffaf97a75239e0e0b0858bfff5b0c5564614
Binary files /dev/null and b/installer/lib/launch4j/w32api/libmingw32.a differ
diff --git a/installer/lib/launch4j/w32api/libmsvcrt.a b/installer/lib/launch4j/w32api/libmsvcrt.a
new file mode 100644
index 0000000000000000000000000000000000000000..89662e8fb79a1058597e6554f13f9986df25dc90
Binary files /dev/null and b/installer/lib/launch4j/w32api/libmsvcrt.a differ
diff --git a/installer/lib/launch4j/w32api/libshell32.a b/installer/lib/launch4j/w32api/libshell32.a
new file mode 100644
index 0000000000000000000000000000000000000000..ba79d6c6b8e161257afd2939e4321504f6ce81ec
Binary files /dev/null and b/installer/lib/launch4j/w32api/libshell32.a differ
diff --git a/installer/lib/launch4j/w32api/libuser32.a b/installer/lib/launch4j/w32api/libuser32.a
new file mode 100644
index 0000000000000000000000000000000000000000..3cd52eb7ffa993f7b47fc3d6c16a647a7c754acf
Binary files /dev/null and b/installer/lib/launch4j/w32api/libuser32.a differ
diff --git a/installer/lib/launch4j/web/changelog.html b/installer/lib/launch4j/web/changelog.html
new file mode 100644
index 0000000000000000000000000000000000000000..7c1a519d756c5a6bf7bd9250d54016ac63e21cbc
--- /dev/null
+++ b/installer/lib/launch4j/web/changelog.html
@@ -0,0 +1,202 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  
+  <title>Launch4j :: Cross-platform java application wrapper for creating Windows native executables</title><meta content="Grzegorz Kowal" name="author">
+  <meta content="Cross-platform java application wrapper for creating Windows native executables.
+Features native splash screen, application icon, small stub." name="description">
+  <meta name="Keywords" content="Java, java, exe, native, windows, Windows, jar, wrap, wrapper, launch,
+run, execute, executable, splash, icon, ico, ant, build, script, deploy, free, freeware, open source,
+gpl, GPL, lgpl, LGPL, sourceforge, c++, C++, W2K, WXP, W98, linux, Linux">
+  <link rel="stylesheet" type="text/css" href="layout.css">
+  <link rel="stylesheet" type="text/css" href="style.css"></head>
+
+<body>
+<div id="container">
+<div id="top"><img style="width: 249px; height: 58px;" alt="" src="launch4j.gif"><span style="color: rgb(48, 127, 225);"> <small><span style="font-weight: bold; font-family: Helvetica,Arial,sans-serif;">1.4.2,&nbsp;
+2.0.RC3</span></small></span>
+</div>
+<div id="leftnav">
+<ul id="navlist">
+  <li><a href="index.html"><span style="font-weight: bold;"></span>Home</a></li>
+  <li><a href="docs1.html"><span style="font-weight: bold;"></span>1.x
+docs</a></li>
+  <li><a href="docs2.html"><span style="font-weight: bold;"></span>2.x
+docs</a></li>
+  <li><a href="changelog.html"><span style="font-weight: bold;"></span>Changelog</a></li>
+  <li><a href="http://sourceforge.net/project/screenshots.php?group_id=95944"><span style="font-weight: bold;"></span>Screenshots</a></li>
+  <li><a href="http://sourceforge.net/project/showfiles.php?group_id=95944"><span style="font-weight: bold;"></span>Download</a></li>
+  <li><a href="http://sourceforge.net/forum/?group_id=95944"><span style="font-weight: bold;"></span>Support</a></li>
+  <li><a href="http://sourceforge.net/projects/launch4j"><span style="font-weight: bold;"></span>Project
+summary</a></li>
+  <li><a href="http://sourceforge.net/tracker/?atid=613100&amp;group_id=95944"><span style="font-weight: bold;"></span>Bug
+tracker</a></li>
+  <li><a href="links.html"><span style="font-weight: bold;"></span>Links</a></li>
+</ul>
+</div>
+<div id="content">
+<h2>Changelog</h2>
+<strong>Changes in version 2.0 RC3 (13-08-2005) -&nbsp;final RC<br></strong><ul><li>Correct handling of pathnames with spaces.</li><li>Fixed the '%20' pathname bug.</li><li>Fixed basedir bug&nbsp;(Richard Xing).</li><li>Splash screen can be closed when the application window becomes visible with out specifying it's title (Martin Busik),&nbsp;update your config file: <font color="#ff0000">&lt;waitForTitle&gt;title&lt;/waitForTitle&gt;</font>
+is now <font color="#ff0000">&lt;waitForWindow&gt;true&lt;/waitForWindow&gt;</font>.</li><li>Fixed build.bat files in demo directories.</li></ul><strong>Changes in version 2.0 RC2 (21-06-2005)<br>
+</strong>
+<ul>
+  <li>chdir allows to change the current directory to arbitrary paths
+relative to the executable (FR #1144907). It's incompatible with
+previous versions, update your config file: <font color="#ff0000">&lt;chdir&gt;true&lt;/chdir&gt;</font>
+is now <font color="#ff0000">&lt;chdir&gt;.&lt;/chdir&gt;</font>.<br>
+  </li>
+  <li>Embedded JRE path no longer depends on chdir function.<br>
+  </li>
+  <li>Fixed Ant task bug, build files outside launch4j's directory
+wouldn't work. (Josh Elsasser submitted a patch that works without
+setting launch4j's home dir in the build file. Thanks!).</li>
+  <li>Removed static edge from splash screen (Serge Baranov).</li>
+  <li>Program checks that the output file path doesn't contain spaces.</li>
+  <li>Fixed a NPE bug caused by a missing maxVersion property (found by
+Morgan Schweers).</li>
+  <li>Fixed relative JRE path bug (found by Nili_).</li>
+  <li>Cleaned up the Builder class.</li>
+  <li>Fixed Ant task NPE where the config was entirely defined in the
+build file (Josh Elsasser).</li>
+</ul>
+<strong>Changes in version 2.0
+RC (07-06-2005)</strong><br>
+<ul>
+  <li>Added an Ant task for better build integration.</li>
+  <li>Added 2.x documentation.</li>
+  <li>Updated the demo configuration files.</li>
+  <li>Fixed issues with relative paths in the configuration.</li>
+  <li>Removed the '-1' option in console mode.<br>
+  </li>
+  <li>Minor fixes.<br>
+  </li>
+</ul>
+<strong>Changes in version 2.0
+beta2 (23-05-2005)<br>
+</strong>
+<ul>
+  <li># comments are recognized when importing 1.x cfg files.</li>
+  <li>Added version information.</li>
+  <li>Resource file is displayed when a resource error occurs.</li>
+  <li>Fixed a bug found by Max, options on the first tab were always
+enabled.<br>
+  </li>
+</ul>
+<p><strong>Changes in version 2.0
+beta1 (13-05-2005)<br>
+</strong> </p>
+<ul>
+  <li>Completely new, cross-platform wrapper - create windows
+executables on Linux.<br>
+  </li>
+  <li>New .xml configuration file.</li>
+  <li>Application icon with multiple resolutions and color depths.</li>
+  <li>Swing GUI interface.</li>
+  <li>Header compiled with MinGW port of gcc instead of VC++.<br>
+  </li>
+</ul>
+<strong></strong><strong>Changes in version
+1.4.2 (12-03-2005)</strong><span style="font-weight: bold;"><br>
+</span>
+<ul>
+  <li>Fixed bug #1158143<span style="font-weight: bold;">, </span>stayAlive
+without a splash screen caused an infinite loop (found by Gregory
+Kotsaftis).<br>
+  </li>
+</ul>
+<span style="font-weight: bold;"></span><strong>Changes in
+version 1.4.1 (04-03-2005)</strong><br>
+<ul>
+  <li>Fixed bug #1119040, buffer for reading config properties
+was too short (found by Tom Jensen and Neil).</li>
+  <li>Added configurable splash timeout (FR #1102951).</li>
+  <li>Added option to disable the error message on splash timeout
+(FR #1109159).</li>
+  <li>Option to keep the gui launcher 'alive' after starting an
+application (FR #1124653).</li>
+  <li>Removed version info.</li>
+  <li>'waitfor' property is now optional.</li>
+</ul>
+<span style="font-weight: bold;"></span><strong>Changes in
+version
+1.4.0
+(26-01-2005)</strong><b><br>
+</b>
+<ul>
+  <li>Removed .lch4j suffix from process name, now it has the
+form of the executable filename. The temporary launchers are stored in
+launch4j-tmp directory (suggested by Emmanuel).</li>
+  <li>Added support for console apps (FR #1050053).</li>
+</ul>
+<br>
+<span style="font-weight: bold;"></span><strong>Changes in
+version
+1.3.1
+(05-11-2004)</strong><b><br>
+</b>
+<ul>
+  <li>Fixed a bug where explorer window was opened instead of
+launching the application when setProcName was set to false (found by
+Rob Jones).</li>
+  <li>Fixed temporary launcher deletion bug.</li>
+</ul>
+<br>
+<strong>Changes in version 1.3.0 (01-11-2004)</strong><b><br>
+</b>
+<ul>
+  <li>Now you can configure launch4j to:<br>
+    <ul>
+      <li>Use a bundled JRE.</li>
+      <li>Search for java, show an error message if the
+right version cannot be found and open the java download page.</li>
+      <li>And a feature you asked for: use bundled JRE, if
+that fails search for java and bring up the java download page on error.</li>
+    </ul>
+  </li>
+  <li>Enhanced code that sets the custom process name. In
+case launch4j can't refresh the temporary launcher, bundled JRE on a
+read only file system for example, it will use one created previously,
+if it's present and has the correct size. If not, launching will still
+continue, but with javaw.exe process name.Temporary launchers are
+now created in the jre directory instead of jre/bin.<br>
+  </li>
+  <li>errTitle property allows to set the title of the error
+message box.</li>
+</ul>
+<b><br>
+</b><strong>Changes in version 1.2.1 (25-09-2004)</strong><b><br>
+</b>
+<ul>
+  <li>Bugfix that allows launching from command line using short
+name (#1026514 / found by Zach Del)</li>
+</ul>
+<b><br>
+</b><strong>Changes in version 1.2.0 (10-09-2004)</strong><br>
+<ul>
+  <li><strong>Custom process name</strong> (<i>myapp.lch4j.exe</i>)</li>
+  <li><strong>9 KB stub!</strong></li>
+  <li>Jar arguments<br>
+  </li>
+  <li>Bugfix that allows launching from command line.</li>
+  <li>Hide splash on javaw error.<br>
+  </li>
+  <li>Easier configuration with case insensitive parameters +
+show
+unrecognized parameter.</li>
+  <li>12 KB demo application, 34 KB with splash screen.</li>
+  <li><font color="#ff0000">Configuration parameter 'args' <strong>changed
+to</strong> 'jvmArgs'</font></li>
+</ul>
+</div>
+<div id="footer">
+Copyright
+&copy; 2005 Grzegorz Kowal
+<br>
+<br>
+<p><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=95944&amp;type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://www.nosoftwarepatents.com"><img alt="" src="http://www.nosoftwarepatents.com/banners/90x40_3.jpg" style="border: 0px solid ; width: 90px; height: 40px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" border="0" height="31" width="88"></a>
+</p>
+</div>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/installer/lib/launch4j/web/docs1.html b/installer/lib/launch4j/web/docs1.html
new file mode 100644
index 0000000000000000000000000000000000000000..69a7fcf49f9ca2edeefba0fe92fbdb727871a474
--- /dev/null
+++ b/installer/lib/launch4j/web/docs1.html
@@ -0,0 +1,345 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+  <title>Launch4j :: Cross-platform java application wrapper for
+creating Windows native executables</title>
+  <meta content="Grzegorz Kowal" name="author">
+  <meta
+ content="Cross-platform java application wrapper for creating Windows native executables.
+Features native splash screen, application icon, small stub."
+ name="description">
+  <meta name="Keywords"
+ content="Java, java, exe, native, windows, Windows, jar, wrap, wrapper, launch,
+run, execute, executable, splash, icon, ico, ant, build, script, deploy, free, freeware, open source,
+gpl, GPL, lgpl, LGPL, sourceforge, c++, C++, W2K, WXP, W98, linux, Linux">
+  <link rel="stylesheet" type="text/css" href="layout.css">
+  <link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div id="container">
+<div id="top"><img style="width: 249px; height: 58px;" alt=""
+ src="launch4j.gif"><span style="color: rgb(48, 127, 225);"> <small><span
+ style="font-weight: bold; font-family: Helvetica,Arial,sans-serif;">1.4.2,&nbsp;
+2.0.RC3</span></small></span>
+</div>
+<div id="leftnav">
+<ul id="navlist">
+  <li><a href="index.html"><span style="font-weight: bold;"></span>Home</a></li>
+  <li><a href="docs1.html"><span style="font-weight: bold;"></span>1.x
+docs</a></li>
+  <li><a href="docs2.html"><span style="font-weight: bold;"></span>2.x
+docs</a></li>
+  <li><a href="changelog.html"><span style="font-weight: bold;"></span>Changelog</a></li>
+  <li><a
+ href="http://sourceforge.net/project/screenshots.php?group_id=95944"><span
+ style="font-weight: bold;"></span>Screenshots</a></li>
+  <li><a
+ href="http://sourceforge.net/project/showfiles.php?group_id=95944"><span
+ style="font-weight: bold;"></span>Download</a></li>
+  <li><a href="http://sourceforge.net/forum/?group_id=95944"><span
+ style="font-weight: bold;"></span>Support</a></li>
+  <li><a href="http://sourceforge.net/projects/launch4j"><span
+ style="font-weight: bold;"></span>Project
+summary</a></li>
+  <li><a
+ href="http://sourceforge.net/tracker/?atid=613100&amp;group_id=95944"><span
+ style="font-weight: bold;"></span>Bug
+tracker</a></li>
+  <li><a href="links.html"><span style="font-weight: bold;"></span>Links</a></li>
+</ul>
+</div>
+<div id="content">
+<h2>How to wrap your
+application<br>
+</h2>
+<span style="font-weight: bold;"></span>Launch4j wraps only
+executable jars, which<em> </em>aren't
+very
+difficult
+to create. Package your application in a jar file and include a
+manifest with
+the <em>Main-Class</em>
+attribute
+defined. In order to use external jars, you must also define the <em>Class-Path</em>
+attribute. Create a
+configuration file and run launch4j (launch4j
+my_application.cfg). It's a good idea to run it inside a console
+window to see the output. If the configuration file is invalid,
+launch4j will provide useful information that will help you fix the
+problem. If everything goes fine, the output exe will be created and
+ready to run. All information provided in the config file is stored in
+the executable, so you don't need it to run the application.<br>
+<br>
+<h2><span style="font-weight: bold;">Faster way...<span
+ style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span></h2>
+<span style="font-weight: bold;"><span style="font-weight: bold;"><span
+ style="font-weight: bold;"> </span></span></span>Create
+the
+configuration file and let Ant do
+the
+rest (SimpleApp/build.xml).<br>
+<br>
+<h2><span style="font-weight: bold;">Configuration file (1.x) </span></h2>
+<strong class="codeword">Bold</strong>
+elements are
+required.<br>
+<pre><span style="font-weight: bold;"></span><span class="codeword">header</span> headfile.bin<br><strong><span
+ class="codeword">jar</span></strong> application.jar<br><strong><span
+ class="codeword">outfile</span></strong> application.exe<br
+ style="font-family: monospace;"><strong><span class="codeword">jrepath</span></strong> ../jre<br> and/or<br><strong><span
+ class="codeword">javamin</span></strong> version<br><span
+ class="codeword">javamax</span> version&nbsp;&nbsp;&nbsp; // optional, use only in combination with <strong><span
+ class="codeword">javamin</span></strong>.<br><span class="codeword">jvmArgs</span> args<br><span
+ class="codeword">jarArgs</span> args<br><span class="codeword">chdir</span> true|<span
+ style="text-decoration: underline;">false</span><br><span
+ class="codeword">setProcName</span> true|<span
+ style="text-decoration: underline;">false</span><br><span
+ class="codeword">errTitle</span> application_name<br
+ style="font-family: monospace;"><span class="codeword">icon</span> icon.ico<br
+ style="font-family: monospace;"><span class="codeword">splash</span> splash.bmp<br
+ style="font-family: monospace;"><span class="codeword">waitfor</span> beginning_of_application_title<br
+ style="font-family: monospace;"><span class="codeword">splashTimeout</span> seconds<br
+ style="font-family: monospace;"><span class="codeword">splashTimeoutErr</span> <span
+ style="text-decoration: underline;">true</span>|false<br
+ style="font-family: monospace;"><span class="codeword">stayAlive</span> true|false</pre>
+<br>
+<h2>Configuration details<span style="font-weight: bold;"></span></h2>
+<span style="font-weight: bold;"> </span>
+<dl>
+  <dt>header</dt>
+  <dd>Optional, defaults to <em>guihead.bin</em>.
+Standard headers are: <em>guihead.bin</em>
+and <em>consolehead.bin</em>,
+you can
+also specify your own.</dd>
+</dl>
+<table style="text-align: left;" border="1" cellpadding="4"
+ cellspacing="0">
+  <tbody>
+    <tr>
+      <td style="text-align: center;"><span style="font-weight: bold;">Header</span><br>
+      </td>
+      <td
+ style="white-space: nowrap; text-align: center; font-weight: bold;">App&nbsp;
+type<br>
+      </td>
+      <td style="text-align: center;"><span style="font-weight: bold;">Launcher</span><br>
+      </td>
+      <td
+ style="white-space: nowrap; text-align: center; font-weight: bold;">Splash
+screen</td>
+      <td
+ style="text-align: center; font-weight: bold; white-space: nowrap;">Wait
+for the application to
+close </td>
+    </tr>
+    <tr>
+      <td style="text-align: center;">guihead.bin<br>
+      </td>
+      <td style="text-align: center;">GUI<br>
+      </td>
+      <td style="text-align: center;">javaw<br>
+      </td>
+      <td style="text-align: center;">yes<br>
+      </td>
+      <td>wrapper
+waits only if <span class="codeword">stayAlive</span>
+is set to true, otherwise it terminates immediately or after closing
+the splash screen.<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="text-align: center;">consolehead.bin<br>
+      </td>
+      <td style="text-align: center;">console<br>
+      </td>
+      <td style="text-align: center;">java<br>
+      </td>
+      <td style="text-align: center;">no<br>
+      </td>
+      <td>always waits and
+returns application's exit code.<br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<dl>
+  <dt>jrepath,
+javamin/javamax</dt>
+  <dd>The <span class="codeword">jrepath</span>
+property is used
+to specify the path (usually relative) of a JRE, note that this path is
+not checked until the actual application execution. If you'd like the
+wrapper to search for a JRE (public or SDK
+private) use the <span class="codeword">javamin</span>
+property, you may also specify the <span class="codeword">javamax</span>
+to prevent it from using higher Java versions. Launch4j will always use
+the highest version available (in the min/max range of course). You can
+also combine these properties to change the startup process...</dd>
+</dl>
+<div style="margin-left: 40px;">
+<dl>
+  <dt class="codeword">jrepath</dt>
+  <dd>Run if bundled JRE and
+javaw.exe
+are present, otherwise stop with error.</dd>
+  <dt class="codeword">jrepath
++ javamin [+ javamax]</dt>
+  <dd>Use bundled JRE first,
+if it
+cannot be located search for Java, if that fails display error message
+and open the Java download page.</dd>
+  <dt class="codeword">javamin
+[+ javamax]</dt>
+  <dd>Search for Java, if an
+appropriate version cannot be found display error message and open the
+Java download page.</dd>
+</dl>
+</div>
+<dl>
+  <dt>jvmArgs</dt>
+  <dd>Optional, accepts
+everything you would normally pass to
+java/javaw
+launcher: assertion options, system properties and X options.</dd>
+</dl>
+<dl>
+  <dt>jarArgs</dt>
+  <dd>Optional, constant
+command line arguments.</dd>
+</dl>
+<dl>
+  <dt>chdir</dt>
+  <dd>Optional, defaults to
+false.
+Change current directory to exe location. Set this property to true, if
+you have resources outside the jar or want to use a bundled JRE which
+location is relative to the executable.</dd>
+</dl>
+<dl>
+  <dt><span style="font-weight: bold;"></span>setProcName</dt>
+  <dd>Optional, defaults to
+false.
+Set the process name as the executable filename. Creates a temporary
+file in launch4j-tmp directory inside the used JRE. These files are
+deleted by
+any launch4j wrapped application, which sets the process name and uses
+the same JRE. The removal takes place when the application <strong>starts</strong>,
+so at least one copy of this file will always be present.</dd>
+</dl>
+<dl>
+  <dt>errTitle</dt>
+  <dd>Optional,
+sets the title of the error message box that's displayed if Java cannot
+be found for instance. This usually should contain the name of your
+application. The console header prefixes error messages with this
+property (myapp: error...)</dd>
+</dl>
+<span style="font-weight: bold;"> </span>
+<dl>
+  <dt>icon</dt>
+  <dd>Accepted file format:
+ICO</dd>
+  <dd>The first icon is used
+and rescaled when needed. </dd>
+</dl>
+<dl>
+  <dt>splash</dt>
+  <dd>Accepted file format:
+BMP<br>
+Ignored by <em>consolehead.bin</em></dd>
+</dl>
+<dl>
+  <dt>waitfor</dt>
+  <dd>Optional. Specifies
+the beginning of the application title,
+used to
+determine when the splash screen is to be closed. Don't include version
+numbers or other information (<strong>My
+Application</strong><span style="color: rgb(0, 0, 0);"> v1.20, </span><strong>My
+App</strong>
+- Program setup...). If omitted, the splash screen
+will
+close on timeout.<br>
+Ignored by <em>consolehead.bin</em></dd>
+</dl>
+<span style="font-style: italic;"></span>
+<dl>
+  <dt>splashTimeout</dt>
+  <dd>Optional, defaults to
+60.
+Number of seconds after which the splash screen must close. Splash
+timeout may cause an error depending on <span class="codeword">splashTimeoutErr</span>
+property.<span style="font-weight: bold;"> </span>Ignored by <em>consolehead.bin</em><span
+ style="font-style: italic;"></span></dd>
+</dl>
+<span style="font-weight: bold;"> </span><span
+ style="font-style: italic;"></span>
+<dl>
+  <dt>splashTimeoutErr</dt>
+  <dd>Optional, defaults to
+true.
+True signals
+an error on splash timeout, false
+closes the splash screen quietly.<br>
+    <span style="font-weight: bold;"></span>Ignored
+by <em>consolehead.bin</em></dd>
+</dl>
+<span style="font-style: italic;"></span>
+<dl>
+  <dt>stayAlive</dt>
+  <dd>Optional, defaults to
+false
+in <em>guihead.bin</em>
+/ always true<span style="font-weight: bold;"> </span>in <em>consolehead.bin</em>.
+When enabled the
+launcher waits for the Java application to finish and returns it's exit
+code.</dd>
+</dl>
+<h2>Example configurations</h2>
+<pre><span
+ style="font-weight: bold; font-family: monospace; color: rgb(51, 51, 255);"><span
+ style="font-weight: bold;"><span style="font-weight: bold;"><span
+ style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span></span><span
+ style="font-weight: bold;"><span style="font-weight: bold;"><span
+ style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span></span><span
+ style="font-weight: bold;"><span style="font-weight: bold;"><span
+ style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span></span></span><span
+ class="codeword">jar</span> paint2\paint2.jar<br><span class="codeword">outfile</span> paint2\paint2.exe<br><span
+ class="codeword">javamin</span> 1.4.0<br><span class="codeword">javamax</span> 1.4.2<br><span
+ class="codeword">icon</span> paint2\paint2.ico<br><span
+ class="codeword">errTitle</span> Paint2 Error<br><span class="codeword">splash</span> paint2\paint2.bmp<br><span
+ class="codeword">waitfor</span> Paint2<br><span class="codeword">splashTimeout</span> 45<br><span
+ class="codeword">chdir</span> true<br><span class="codeword">setProcName</span> true</pre>
+<span style="font-family: monospace;"><span
+ style="color: rgb(51, 51, 255);"> </span></span>
+<pre><span class="codeword">header</span> consolehead.bin<br><span
+ class="codeword">jar</span> dist\ConsoleApp.jar<br><span
+ class="codeword">outfile</span> dist\ConsoleApp.exe<br><span
+ class="codeword">jrepath</span> ..\jre<br><span class="codeword">javamin</span> 1.4.2<br><span
+ class="codeword">icon</span> l4j\ConsoleApp.ico<br><span
+ class="codeword">chdir</span> true<br><span class="codeword">setProcName</span> true<br><span
+ class="codeword">errTitle</span> ConsoleApp<br><span class="codeword">jvmArgs</span> -Xloggc:gclog.txt</pre>
+</div>
+<div id="footer">
+Copyright
+&copy; 2005 Grzegorz Kowal
+<br>
+<br>
+<p><a href="http://sourceforge.net"><img
+ src="http://sourceforge.net/sflogo.php?group_id=95944&amp;type=4"
+ alt="SourceForge.net Logo" border="0" height="37" width="125"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://www.nosoftwarepatents.com"><img alt=""
+ src="http://www.nosoftwarepatents.com/banners/90x40_3.jpg"
+ style="border: 0px solid ; width: 90px; height: 40px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"
+ border="0" height="31" width="88"></a>
+</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/installer/lib/launch4j/web/docs2.html b/installer/lib/launch4j/web/docs2.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d539c89dff7889d448e199b12dea825025f012d
--- /dev/null
+++ b/installer/lib/launch4j/web/docs2.html
@@ -0,0 +1,394 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  
+  <title>Launch4j :: Cross-platform java application wrapper for creating Windows native executables</title><meta content="Grzegorz Kowal" name="author">
+  <meta content="Cross-platform java application wrapper for creating Windows native executables.
+Features native splash screen, application icon, small stub." name="description">
+  <meta name="Keywords" content="Java, java, exe, native, windows, Windows, jar, wrap, wrapper, launch,
+run, execute, executable, splash, icon, ico, ant, build, script, deploy, free, freeware, open source,
+gpl, GPL, lgpl, LGPL, sourceforge, c++, C++, W2K, WXP, W98, linux, Linux">
+  <link rel="stylesheet" type="text/css" href="layout.css">
+  <link rel="stylesheet" type="text/css" href="style.css"></head>
+
+<body>
+<div id="container">
+<div id="top"><img style="width: 249px; height: 58px;" alt="" src="launch4j.gif"><span style="color: rgb(48, 127, 225);"> <small><span style="font-weight: bold; font-family: Helvetica,Arial,sans-serif;">1.4.2,&nbsp;
+2.0.RC3</span></small></span>
+</div>
+<div id="leftnav">
+<ul id="navlist">
+  <li><a href="index.html"><span style="font-weight: bold;"></span>Home</a></li>
+  <li><a href="docs1.html"><span style="font-weight: bold;"></span>1.x
+docs</a></li>
+  <li><a href="docs2.html"><span style="font-weight: bold;"></span>2.x
+docs</a></li>
+  <li><a href="changelog.html"><span style="font-weight: bold;"></span>Changelog</a></li>
+  <li><a href="http://sourceforge.net/project/screenshots.php?group_id=95944"><span style="font-weight: bold;"></span>Screenshots</a></li>
+  <li><a href="http://sourceforge.net/project/showfiles.php?group_id=95944"><span style="font-weight: bold;"></span>Download</a></li>
+  <li><a href="http://sourceforge.net/forum/?group_id=95944"><span style="font-weight: bold;"></span>Support</a></li>
+  <li><a href="http://sourceforge.net/projects/launch4j"><span style="font-weight: bold;"></span>Project
+summary</a></li>
+  <li><a href="http://sourceforge.net/tracker/?atid=613100&amp;group_id=95944"><span style="font-weight: bold;"></span>Bug
+tracker</a></li>
+  <li><a href="links.html"><span style="font-weight: bold;"></span>Links</a></li>
+</ul>
+</div>
+<div id="content">
+<a href="#Running_launch4j">Running
+launch4j</a><br>
+<a href="#Configuration_file">Configuration
+file</a><br>
+<a href="#Importing_1.x_configuration">Importing
+1.x configuration</a><br>
+<a href="#Ant_task">Ant Task</a><br>
+<br>
+<br>
+<h2><a name="Running_launch4j"></a>Running
+launch4j<br>
+</h2>
+Run <em>launch4j.exe</em>
+or <em>launch4j</em>
+script without command
+line arguments to enter the GUI mode.<br>
+<pre>launch4j.exe<br></pre>
+To wrap a jar in console mode use <em>launch4jc.exe</em>&nbsp;<em></em>and
+specify the configuration file using an absolute path.<br>
+<pre>launch4jc.exe c:\src\demo\l4j\config.xml<br></pre>
+On linux use the <em>launch4j</em>
+script.<br>
+<pre>launch4j ~/src/demo/l4j/config.xml<br></pre>
+<br>
+<h2><a name="Configuration_file"></a>Configuration
+file</h2>
+Launch4j requires an xml configuration file for each output executable.
+You can create and edit it conveniently using the graphic user
+interface or your favorite editor. Alternatively it's possible to pass
+all of the configuration parameters through the Ant task. All files
+except for <em>&lt;jre&gt;&lt;path&gt;</em>
+may be absolute paths or
+relative to the configuration file path.<br>
+<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>&nbsp; <strong>&lt;jar&gt;</strong><span class="codeword">file</span><span class="codeword"></span><strong>&lt;/jar&gt;<br></strong>  <strong>&lt;outfile&gt;</strong><span class="codeword">file.exe</span><strong><span class="codeword"></span>&lt;/outfile&gt;</strong><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>  <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>
+<dl>
+  <dt>&lt;headerType&gt;</dt>
+  <dd>Type of the header used to
+wrap the application.</dd>
+</dl>
+<table style="text-align: left;" border="1" cellpadding="4" cellspacing="0">
+  <tbody>
+    <tr>
+      <td style="text-align: center;"><span style="font-weight: bold;">Header&nbsp;</span><span style="font-weight: bold;">type</span><br>
+      </td>
+      <td style="white-space: nowrap; text-align: center; font-weight: bold;">App
+type<br>
+      </td>
+      <td style="text-align: center;"><span style="font-weight: bold;">Launcher</span><br>
+      </td>
+      <td style="white-space: nowrap; text-align: center; font-weight: bold;">Splash
+screen</td>
+      <td style="text-align: center; font-weight: bold; white-space: nowrap;">Wait
+for the application to
+close </td>
+    </tr>
+    <tr>
+      <td style="text-align: center;">0<br>
+      </td>
+      <td style="text-align: center;">GUI<br>
+      </td>
+      <td style="text-align: center;">javaw<br>
+      </td>
+      <td style="text-align: center;">yes<br>
+      </td>
+      <td>wrapper
+waits only if <em>stayAlive</em>
+is set to true, otherwise it terminates immediately or after closing
+the splash screen.<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="text-align: center;">1<br>
+      </td>
+      <td style="text-align: center;">console<br>
+      </td>
+      <td style="text-align: center;">java<br>
+      </td>
+      <td style="text-align: center;">no<br>
+      </td>
+      <td>always waits and
+returns application's exit code.<br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<dl>
+  <dt>&lt;jar&gt;</dt>
+  <dd>Executable jar to wrap.</dd>
+</dl>
+<dl>
+  <dt>&lt;outfile&gt;</dt>
+  <dd>Output executable file.<strong></strong></dd>
+</dl>
+<dl>
+  <dt>&lt;errTitle&gt;</dt>
+  <dd>Optional,
+sets the title of the error message box that's displayed if Java cannot
+be found for instance. This usually should contain the name of your
+application. The console header prefixes error messages with this
+property (myapp: error...)</dd>
+</dl>
+<dl>
+  <dt>&lt;jarArgs&gt;</dt>
+  <dd>Optional, constant
+command line arguments.</dd>
+</dl>
+<dl>
+  <dt>&lt;chdir&gt;</dt>
+  <dd>Optional. Change current
+directory to an arbitrary path relative to the executable. <br>
+If you omit this property
+or leave it blank it will have no effect. Setting it to <em>.</em>
+will change the current dir to the same directory as the executable. <em>..</em>
+will change it to the parent directory, and so on.</dd>
+  <dd>
+    <pre>&lt;chdir&gt;.&lt;/chdir&gt;</pre>
+  </dd>
+  <dd>
+    <pre>&lt;chdir&gt;../somedir&lt;/chdir&gt;</pre>
+  </dd>
+</dl>
+<dl>
+  <dt>&lt;customProcName&gt;</dt>
+  <dd>Optional, defaults to
+false.
+Set the process name as the executable filename. Creates a temporary
+file in launch4j-tmp directory inside the used JRE. These files are
+deleted by
+any launch4j wrapped application, which sets the process name and uses
+the same JRE. The removal takes place when the application <strong>starts</strong>,
+so at least one copy of this file will always be present.</dd>
+</dl>
+<dl>
+  <dt>&lt;stayAlive&gt;</dt>
+  <dd>Optional, defaults to
+false
+in GUI header, <em></em>
+always true<span style="font-weight: bold;"> </span>in console header.
+When enabled the
+launcher waits for the Java application to finish and returns it's exit
+code.</dd>
+</dl>
+<dl>
+  <dt>&lt;icon&gt;</dt>
+  <dd>Application icon in ICO
+format. May contain multiple color depths/resolutions.<br>
+  </dd>
+</dl>
+<dl>
+  <dt>&lt;jre&gt;</dt>
+  <dd>Required element that groups
+JRE settings.</dd>
+</dl>
+<blockquote>
+  <dl>
+    <dt>&lt;path&gt;,
+&lt;minVersion&gt;, &lt;maxVersion&gt;<br>
+    </dt>
+    <dd>The <em>&lt;path&gt;</em>
+property
+is used
+to specify the relative path (to the executable) of an embedded JRE, it
+does not rely on the current directory or <em>&lt;chdir&gt;</em>.
+Note that this path is
+not checked until the actual application execution. If you'd like the
+wrapper to search for a JRE (public or SDK
+private) use the <em>&lt;minVersion&gt;</em>
+property, you may also specify the <em>&lt;maxVersion&gt;</em>
+to prevent it from using higher Java versions. Launch4j will always use
+the highest version available (in the min/max range of course). You can
+also combine these properties to change the startup process...</dd>
+  </dl>
+  <div style="margin-left: 40px;">
+  <dl>
+    <dt>&lt;path&gt;</dt>
+    <dd>Run if bundled JRE and
+javaw.exe
+are present, otherwise stop with error.</dd>
+    <dt>&lt;path&gt; +
+&lt;minVersion&gt;&nbsp; [+ &lt;maxVersion&gt;]</dt>
+    <dd>Use bundled JRE first,
+if it
+cannot be located search for Java, if that fails display error message
+and open the Java download page.</dd>
+    <dt>&lt;minVersion&gt;&nbsp;
+[+ &lt;maxVersion&gt;]</dt>
+    <dd>Search for Java, if an
+appropriate version cannot be found display error message and open the
+Java download page.</dd>
+  </dl>
+  </div>
+</blockquote>
+<blockquote>
+  <dl>
+    <dt>&lt;initialHeapSize&gt;</dt>
+    <dd>Optional, initial heap
+size in MB, 0 - use default.</dd>
+  </dl>
+  <dl>
+    <dt>&lt;maxHeapSize&gt;</dt>
+    <dd>Optional, max heap size in
+MB, 0 - use default.</dd>
+  </dl>
+  <dl>
+    <dt>&lt;args&gt;</dt>
+    <dd>Optional, accepts
+everything you would normally pass to
+java/javaw
+launcher: assertion options, system properties and X options.</dd>
+  </dl>
+</blockquote>
+<dl>
+  <dt>&lt;splash&gt;</dt>
+  <dd>Optional, groups the splash
+screen settings. Allowed only in GUI header.<br>
+  </dd>
+</dl>
+<blockquote>
+  <dl>
+    <dt>&lt;file&gt;</dt>
+    <dd>Splash screen image in BMP
+format.</dd>
+  </dl>
+  <dl>
+    <dt>&lt;waitForWindow&gt;</dt>
+    <dd>Optional,
+defaults to true. Close the splash screen when an application window or
+Java error message box appears. If set to false, the splash screen will
+be closed on timeout.<br>
+    </dd>
+    
+  </dl>
+  <dl>
+    <dt>&lt;timeout&gt;</dt>
+    <dd>Optional, defaults to
+60.
+Number of seconds after which the splash screen must be closed. Splash
+timeout may cause an error depending on <em>&lt;timeoutErr&gt;</em>.</dd>
+  </dl>
+  <dl>
+    <dt>&lt;timeoutErr&gt;</dt>
+    <dd>Optional, defaults to
+true.
+True signals
+an error on splash timeout, false
+closes the splash screen quietly.</dd>
+  </dl>
+</blockquote>
+<dl>
+  <dt>&lt;versionInfo&gt;</dt>
+  <dd>Optional, version
+information to be displayed by the Windows
+Explorer.</dd>
+</dl>
+<blockquote>
+  <dl>
+    <dt>&lt;fileVersion&gt;</dt>
+    <dd>Version number 'x.x.x.x'<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;txtFileVersion&gt;</dt>
+    <dd>Free form file version,
+for example '1.20.RC1'.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;fileDescription&gt;</dt>
+    <dd>File description presented
+to the user.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;copyright&gt;</dt>
+    <dd>Legal copyright.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;productVersion&gt;</dt>
+    <dd>Version number 'x.x.x.x'<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;txtProductVersion&gt;</dt>
+    <dd>Free form file version,
+for example '1.20.RC1'.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;productName&gt;</dt>
+    <dd>Text.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;companyName&gt;</dt>
+    <dd>Optional text.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;internalName&gt;</dt>
+    <dd>Internal name without
+extension, original filename or module
+name for example.<br>
+    </dd>
+  </dl>
+  <dl>
+    <dt>&lt;originalFilename&gt;</dt>
+    <dd>Original name of the file
+without the path. Allows to determine
+whether a file has been renamed by a user.<br>
+    </dd>
+  </dl>
+</blockquote>
+<br>
+<h2><a name="Importing_1.x_configuration"></a>Importing
+1.x
+configuration</h2>
+It's possible to import a 1.x configuration file using the GUI
+interface. Open the file, correct the paths and save it as a new xml
+configuration.<br>
+<br>
+<h2><a name="Ant_task"></a>Ant
+task</h2>
+You may set a launch4j directory property or change the task definition.
+<pre>&lt;property name="launch4j.dir" location="/opt/launch4j" /&gt;</pre>
+Define the task in your Ant build script.<br>
+<pre>&lt;taskdef name="launch4j"<br>  classname="net.sf.launch4j.ant.Launch4jTask"<br>  classpath="${launch4j.dir}/launch4j.jar<br>    :${launch4j.dir}/lib/xstream.jar" /&gt;<br></pre>
+Execute the task!<br>
+<pre>&lt;launch4j configFile="./l4j/demo.xml" /&gt;</pre>
+You can set or override the following configuration properties...<br>
+<em>&lt;jar&gt;<br>
+&lt;outfile&gt;<br>
+&lt;versionInfo&gt;<br>
+&nbsp;&nbsp;&nbsp; &lt;fileVersion&gt;<br>
+&nbsp;&nbsp;&nbsp; &lt;txtFileVersion&gt;<br>
+&nbsp;&nbsp;&nbsp; &lt;productVersion&gt;<br>
+&nbsp;&nbsp;&nbsp; &lt;txtProductVersion&gt;</em><em><br>
+</em>
+<pre>&lt;launch4j configFile="./l4j/demo.xml"<br>  outfile="mydemo.exe"<br> &nbsp;fileVersion="1.0.0.0" txtFileVersion="1.0 RC2" /&gt;<br></pre>
+You can also define the entire configuration in the task, but it will
+not be possible to edit such a file in the GUI mode. All paths except
+for <em>&lt;chdir&gt;</em> and <em>&lt;jre&gt;&lt;path&gt;</em> are
+calculated using the <em>basedir</em> project attribute.
+<pre>&lt;launch4j&gt;<br>  &lt;config headerType="0" jar="demo.jar" outfile="demo.exe"&gt;<br>    &lt;jre minVersion="1.4.0" /&gt;<br>  &lt;/config&gt;<br>&lt;/launch4j&gt;<br></pre>
+</div>
+<div id="footer">Copyright
+&copy; 2005 Grzegorz Kowal
+<br>
+<br>
+<p><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=95944&amp;type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://www.nosoftwarepatents.com"><img alt="" src="http://www.nosoftwarepatents.com/banners/90x40_3.jpg" style="border: 0px solid ; width: 90px; height: 40px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" border="0" height="31" width="88"></a>
+</p>
+</div>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/installer/lib/launch4j/web/index.html b/installer/lib/launch4j/web/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..742124946ae0a79c4395e4dadaed4d8daec965ba
--- /dev/null
+++ b/installer/lib/launch4j/web/index.html
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+  
+  <title>Launch4j :: Cross-platform Java application wrapper for creating Windows native executables</title><meta content="Grzegorz Kowal" name="author">
+  <meta content="Cross-platform java application wrapper for creating Windows native executables.
+Features native splash screen, application icon, small stub." name="description">
+  <meta name="Keywords" content="Java, java, exe, native, windows, Windows, jar, wrap, wrapper, launch,
+run, execute, executable, splash, icon, ico, ant, build, script, deploy, free, freeware, open source,
+gpl, GPL, lgpl, LGPL, sourceforge, c++, C++, W2K, WXP, W98, linux, Linux">
+  <link rel="stylesheet" type="text/css" href="layout.css">
+  <link rel="stylesheet" type="text/css" href="style.css"></head>
+
+<body>
+<div id="container">
+<div id="top"><img style="width: 249px; height: 58px;" alt="" src="launch4j.gif"><span style="color: rgb(48, 127, 225);"> <small><span style="font-weight: bold; font-family: Helvetica,Arial,sans-serif;">1.4.2,&nbsp;
+2.0.RC3</span></small></span>
+</div>
+<div id="leftnav">
+<ul id="navlist">
+  <li><a href="index.html"><span style="font-weight: bold;"></span>Home</a></li>
+  <li><a href="docs1.html"><span style="font-weight: bold;"></span>1.x
+docs</a></li>
+  <li><a href="docs2.html"><span style="font-weight: bold;"></span>2.x
+docs</a></li>
+  <li><a href="changelog.html"><span style="font-weight: bold;"></span>Changelog</a></li>
+  <li><a href="http://sourceforge.net/project/screenshots.php?group_id=95944"><span style="font-weight: bold;"></span>Screenshots</a></li>
+  <li><a href="http://sourceforge.net/project/showfiles.php?group_id=95944"><span style="font-weight: bold;"></span>Download</a></li>
+  <li><a href="http://sourceforge.net/forum/?group_id=95944"><span style="font-weight: bold;"></span>Support</a></li>
+  <li><a href="http://sourceforge.net/projects/launch4j"><span style="font-weight: bold;"></span>Project
+summary</a></li>
+  <li><a href="http://sourceforge.net/tracker/?atid=613100&amp;group_id=95944"><span style="font-weight: bold;"></span>Bug
+tracker</a></li>
+  <li><a href="links.html"><span style="font-weight: bold;"></span>Links</a></li>
+</ul>
+</div>
+<div id="content"><big><span style="color: rgb(48, 127, 225);">
+Cross-platform Java application wrapper for creating Windows </span></big><big><span style="color: rgb(48, 127, 225);">native </span></big><big><span style="color: rgb(48, 127, 225);">EXEs.</span></big>
+<h2><span style="font-weight: bold;"></span></h2>
+Launch4j is a cross-platform tool for wrapping
+Java applications distributed as jars in lightweight Windows
+native executables. The executable can be
+configured to search for a certain JRE version or
+use a bundled one, and it's possible to set
+runtime options, like the initial/max heap size.
+The wrapper also provides better user experience
+through an application icon, a native pre-JRE
+splash screen, a custom process name, and a Java
+download page in case the appropriate JRE cannot
+be found.<br>
+<br>
+<h2><span style="font-weight: bold;"></span><small><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);"></span></span></small>
+Features (2.x)</h2>
+<ul>
+  <li>Launch4j wraps jars in
+Windows native executables and
+allows to
+run them like a regular Windows program. It's possible to wrap
+applications on Linux!<br>
+  </li>
+  <li><strong>Doesn't
+extract the jar</strong> from the
+executable.</li>
+  <li>Custom application icon with
+multiple resolutions and color
+depths.</li>
+  <li><strong>Native pre-JRE
+splash screen</strong> in BMP format
+shown until
+the
+Java
+application starts.</li>
+  <li><strong>Process
+name</strong> as the executable
+filename to
+easily
+identify your application.<i> </i><span style="font-weight: bold; color: rgb(255, 0, 0);"></span></li>
+  <li>Works with a bundled JRE or
+searches for newest JRE / SDK
+in
+given range.</li>
+  <li>Opens <strong>Java
+download page</strong> if an
+appropriate Java version
+cannot be found.</li>
+  <li>Supports <strong>GUI
+and
+console apps</strong>.<br>
+  </li>
+  <li>Passes command line
+arguments, also supports constant arguments.</li>
+  <li>Allows to set the initial/max heap size.<br>
+  </li>
+  <li>JVM options: set system properties, tweak the garbage
+collection...<span style="font-weight: bold;"> </span><span style="font-weight: bold; color: rgb(255, 0, 0);"></span></li>
+  <li><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);">Option
+to change current directory to the executable location.</span></span></li>
+  <li><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);">Custom <strong>version
+information</strong> shown by Windows Explorer.<br>
+    </span></span></li>
+  <li><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);"><strong>GUI</strong> and command line
+interface.</span></span></li>
+  <li><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);">Build integration through an <strong>Ant
+task</strong>.<br>
+    </span></span></li>
+  <li><big><b>Lightweight: 21 KB!</b></big> <span style="font-weight: bold; color: rgb(255, 0, 0);"></span></li>
+  <li><strong>It's
+free</strong> and may be used for
+commercial
+purposes.</li>
+  <li>Includes a sample
+application and <strong>Ant script</strong>
+that
+automates the
+build
+process from Java sources to native executable.<br>
+  </li>
+  <li><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);">The wrapped program
+works on all Windows platforms (98/Me/NT/2K/Xp), launch4j works on
+NT/2K/Xp, Linux (developed and tested on FC2).<br>
+    </span></span></li>
+</ul>
+<h2>License</h2>
+This program is free software licensed under the <a href="http://www.gnu.org/copyleft/gpl.html">GPL
+license</a>, the <i>head</i>
+subproject (the code which is attached to the wrapped jars) is licensed
+under the <span style="font-weight: bold;"></span><a href="http://www.gnu.org/copyleft/lesser.html">LGPL
+license</a>.
+Launch4j may be used for wrapping closed source, commercial
+applications.<br>
+<br>
+<h2>Info</h2>Running Launch4j on other Java enabled platforms is a matter
+of getting a binary version of <a href="http://www.mingw.org/">MinGW</a>
+binutils 2.15.90 (<b>windres</b>
+and <b>ld</b>
+only) for your system or compiling them. If you'll
+provide these, I'll be able to create a binary package
+available for download.<br>
+<br>
+<a href="http://sourceforge.net/forum/forum.php?forum_id=332683"></a></div>
+<div id="footer">
+Copyright
+&copy; 2005 Grzegorz Kowal
+<br>
+<br>
+<p><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=95944&amp;type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://www.nosoftwarepatents.com"><img alt="" src="http://www.nosoftwarepatents.com/banners/90x40_3.jpg" style="border: 0px solid ; width: 90px; height: 40px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" border="0" height="31" width="88"></a>
+</p>
+</div>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/installer/lib/launch4j/web/launch4j.gif b/installer/lib/launch4j/web/launch4j.gif
new file mode 100644
index 0000000000000000000000000000000000000000..27552074ac391c4156f5a245f75ac0d6ba4257e0
Binary files /dev/null and b/installer/lib/launch4j/web/launch4j.gif differ
diff --git a/installer/lib/launch4j/web/layout.css b/installer/lib/launch4j/web/layout.css
new file mode 100644
index 0000000000000000000000000000000000000000..d03a57a42fd47f60a955f2cfdfd7a09a7662036e
--- /dev/null
+++ b/installer/lib/launch4j/web/layout.css
@@ -0,0 +1,83 @@
+/* Generated by CaScadeS, a stylesheet editor for Mozilla Composer */
+
+  #container { border-width: 0px;
+    margin: 10px auto;
+    width: 90%;
+    color: rgb(51, 51, 51);
+    line-height: 130%;
+    background-color: rgb(255, 255, 255);
+    }
+
+  #top { padding: 0.5em;
+    background-color: rgb(255, 255, 255);
+    }
+
+  #top h1 { margin: 0pt;
+    padding: 0pt;
+    }
+
+  #leftnav { margin: 0pt;
+    padding: 0.5em;
+    float: left;
+    width: 160px;
+    background-color: rgb(255, 255, 255);
+    }
+
+  #leftnav ul { border-width: 0px;
+    margin-left: 0pt;
+    padding-left: 0pt;
+    list-style-type: none;
+    font-family: Arial,Helvetica,sans-serif;
+    font-weight: inherit;
+    }
+
+  #leftnav a { padding: 2px;
+    display: block;
+    width: 160px;
+    }
+
+  #leftnav a:link, #navlist a:visited { text-decoration: none;
+    color: rgb(102, 102, 102);
+    }
+
+  #leftnav a:hover { color: rgb(255, 255, 255);
+    background-color: rgb(48, 127, 225);
+    }
+
+  #content { border-width: 0pt 0pt 0pt 1px;
+    border-left: 1px solid rgb(204, 204, 204);
+    padding: 1em;
+    margin-left: 200px;
+    background-color: rgb(255, 255, 255);
+    max-width: 36em;
+    }
+
+  #content a:link { text-decoration: none;
+    color: rgb(102, 102, 102);
+    }
+
+  #content a:visited { text-decoration: none;
+    color: rgb(69, 69, 69);
+    }
+
+  #content a:hover { color: rgb(48, 127, 255);
+    text-decoration: underline;
+    }
+
+  #footer { border-color: gray;
+    border-width: 1px;
+    margin: 0pt;
+    padding: 0.5em;
+    clear: both;
+    color: rgb(51, 51, 51);
+    background-color: rgb(255, 255, 255);
+    text-align: center;
+    font-size: 90%;
+    }
+
+  #leftnav p { margin: 0pt 0pt 1em;
+    }
+
+  #content h2 { margin: 0pt 0pt 0.5em;
+    }
+
diff --git a/installer/lib/launch4j/web/links.html b/installer/lib/launch4j/web/links.html
new file mode 100644
index 0000000000000000000000000000000000000000..ae5d2143a49aaeb3872cddaa04457b9edfdd1894
--- /dev/null
+++ b/installer/lib/launch4j/web/links.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+  <title>Launch4j :: Cross-platform java application wrapper for
+creating Windows native executables</title>
+  <meta content="Grzegorz Kowal" name="author">
+  <meta
+ content="Cross-platform java application wrapper for creating Windows native executables.
+Features native splash screen, application icon, small stub."
+ name="description">
+  <meta name="Keywords"
+ content="Java, java, exe, native, windows, Windows, jar, wrap, wrapper, launch,
+run, execute, executable, splash, icon, ico, ant, build, script, deploy, free, freeware, open source,
+gpl, GPL, lgpl, LGPL, sourceforge, c++, C++, W2K, WXP, W98, linux, Linux">
+  <link rel="stylesheet" type="text/css" href="layout.css">
+  <link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<div id="container">
+<div id="top"><img style="width: 249px; height: 58px;" alt=""
+ src="launch4j.gif"><span style="color: rgb(48, 127, 225);"> <small><span
+ style="font-weight: bold; font-family: Helvetica,Arial,sans-serif;">1.4.2,&nbsp;
+2.0.RC3</span></small></span>
+</div>
+<div id="leftnav">
+<ul id="navlist">
+  <li><a href="index.html"><span style="font-weight: bold;"></span>Home</a></li>
+  <li><a href="docs1.html"><span style="font-weight: bold;"></span>1.x
+docs</a></li>
+  <li><a href="docs2.html"><span style="font-weight: bold;"></span>2.x
+docs</a></li>
+  <li><a href="changelog.html"><span style="font-weight: bold;"></span>Changelog</a></li>
+  <li><a
+ href="http://sourceforge.net/project/screenshots.php?group_id=95944"><span
+ style="font-weight: bold;"></span>Screenshots</a></li>
+  <li><a
+ href="http://sourceforge.net/project/showfiles.php?group_id=95944"><span
+ style="font-weight: bold;"></span>Download</a></li>
+  <li><a href="http://sourceforge.net/forum/?group_id=95944"><span
+ style="font-weight: bold;"></span>Support</a></li>
+  <li><a href="http://sourceforge.net/projects/launch4j"><span
+ style="font-weight: bold;"></span>Project
+summary</a></li>
+  <li><a
+ href="http://sourceforge.net/tracker/?atid=613100&amp;group_id=95944"><span
+ style="font-weight: bold;"></span>Bug
+tracker</a></li>
+  <li><a href="links.html"><span style="font-weight: bold;"></span>Links</a></li>
+</ul>
+</div>
+<div id="content">
+<h2>Links</h2>
+<p><a href="http://www.mingw.org/">MinGW</a><br>
+<a href="http://jakarta.apache.org/commons/beanutils/">Commons
+BeanUtils</a><br>
+<a href="http://jakarta.apache.org/commons/logging/">Commons
+Logging</a><br>
+<a href="http://xstream.codehaus.org/">XStream</a><br>
+<a href="http://www.jgoodies.com/freeware/forms/">JGoodies Forms</a><br>
+<a href="http://www.jgoodies.com/freeware/looks/">JGoodies Looks</a><br>
+<a href="http://www.icon-king.com/">Nuvola Icon Theme</a><br>
+<a href="https://abeille.dev.java.net/">Abeille Forms Designer</a><br>
+<a href="http://www.eclipse.org/">Eclipse</a><br>
+<a href="http://www.bloodshed.net/devcpp.html">Bloodshed Dev-C++
+IDE</a><br>
+</p>
+</div>
+<div id="footer">
+Copyright
+&copy; 2005 Grzegorz Kowal
+<br>
+<br>
+<p><a href="http://sourceforge.net"><img
+ src="http://sourceforge.net/sflogo.php?group_id=95944&amp;type=4"
+ alt="SourceForge.net Logo" border="0" height="37" width="125"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://www.nosoftwarepatents.com"><img alt=""
+ src="http://www.nosoftwarepatents.com/banners/90x40_3.jpg"
+ style="border: 0px solid ; width: 90px; height: 40px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"
+ border="0" height="31" width="88"></a>
+</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/installer/lib/launch4j/web/style.css b/installer/lib/launch4j/web/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..0f15e5493c41d95760892f51e3dc15f0d74885ef
--- /dev/null
+++ b/installer/lib/launch4j/web/style.css
@@ -0,0 +1,23 @@
+/* Generated by CaScadeS, a stylesheet editor for Mozilla Composer */
+
+  pre { border: 1px dashed rgb(153, 153, 153);
+    padding: 8px;
+    background-color: rgb(241, 241, 241);
+    font-family: Courier New,Courier,monospace;
+    font-size: smaller;
+    }
+
+  .codeword { color: rgb(51, 51, 255);
+    }
+
+  dt { font-weight: bold;
+    }
+
+  em { font-weight: bold;
+    color: rgb(102, 102, 102);
+    font-style: normal;
+    }
+
+  body { font-family: Times New Roman,Times,serif;
+    }
+