launch4j
340
installer/lib/launch4j/LICENSE.txt
Normal file
@ -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.
|
340
installer/lib/launch4j/bin/COPYING
Normal file
@ -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.
|
BIN
installer/lib/launch4j/bin/ld
Normal file
BIN
installer/lib/launch4j/bin/windres
Normal file
99
installer/lib/launch4j/build.xml
Normal file
@ -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>
|
1
installer/lib/launch4j/demo/ConsoleApp/.cvsignore
Normal file
@ -0,0 +1 @@
|
||||
build
|
BIN
installer/lib/launch4j/demo/ConsoleApp/ConsoleApp.jar
Normal file
59
installer/lib/launch4j/demo/ConsoleApp/build.xml
Normal file
@ -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>
|
BIN
installer/lib/launch4j/demo/ConsoleApp/l4j/ConsoleApp.ico
Normal file
After Width: | Height: | Size: 766 B |
8
installer/lib/launch4j/demo/ConsoleApp/lib/readme.txt
Normal file
@ -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
|
1
installer/lib/launch4j/demo/ConsoleApp/readme.txt
Normal file
@ -0,0 +1 @@
|
||||
To build the example application set JAVA_HOME and ANT_HOME environment variables.
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
340
installer/lib/launch4j/demo/LICENSE.txt
Normal file
@ -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.
|
3
installer/lib/launch4j/demo/readme.txt
Normal file
@ -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...
|
504
installer/lib/launch4j/head/LICENSE.txt
Normal file
@ -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!
|
||||
|
||||
|
BIN
installer/lib/launch4j/head/consolehead.o
Normal file
BIN
installer/lib/launch4j/head/guihead.o
Normal file
BIN
installer/lib/launch4j/head/head.o
Normal file
504
installer/lib/launch4j/head_src/LICENSE.txt
Normal file
@ -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!
|
||||
|
||||
|
33
installer/lib/launch4j/head_src/consolehead/Makefile.win
Normal file
@ -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)
|
56
installer/lib/launch4j/head_src/consolehead/consolehead.c
Normal file
@ -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;
|
||||
}
|
||||
}
|
108
installer/lib/launch4j/head_src/consolehead/consolehead.dev
Normal file
@ -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=
|
||||
|
33
installer/lib/launch4j/head_src/guihead/Makefile.win
Normal file
@ -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)
|
155
installer/lib/launch4j/head_src/guihead/guihead.c
Normal file
@ -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;
|
||||
}
|
||||
}
|
119
installer/lib/launch4j/head_src/guihead/guihead.dev
Normal file
@ -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=
|
||||
|
31
installer/lib/launch4j/head_src/guihead/guihead.h
Normal file
@ -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
|
||||
);
|
358
installer/lib/launch4j/head_src/head.c
Normal file
@ -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;
|
||||
}
|
69
installer/lib/launch4j/head_src/head.h
Normal file
@ -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_
|
43
installer/lib/launch4j/head_src/resource.h
Normal file
@ -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
|
8
installer/lib/launch4j/launch4j
Normal file
@ -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
|
BIN
installer/lib/launch4j/launch4j.jar
Normal file
BIN
installer/lib/launch4j/launch4j.jfpr
Normal file
31
installer/lib/launch4j/lib/JGoodies.Forms.LICENSE.txt
Normal file
@ -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.
|
30
installer/lib/launch4j/lib/JGoodies.Looks.LICENSE.txt
Normal file
@ -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.
|
504
installer/lib/launch4j/lib/Nuvola.Icon.Theme.LICENSE.txt
Normal file
@ -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!
|
||||
|
||||
|
27
installer/lib/launch4j/lib/XStream.LICENSE.txt
Normal file
@ -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.
|
BIN
installer/lib/launch4j/lib/commons-beanutils.jar
Normal file
BIN
installer/lib/launch4j/lib/commons-logging.jar
Normal file
50
installer/lib/launch4j/lib/commons.LICENSE.txt
Normal file
@ -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/>.
|
||||
|
||||
*/
|
BIN
installer/lib/launch4j/lib/formsrt.jar
Normal file
25
installer/lib/launch4j/lib/foxtrot.LICENSE.txt
Normal file
@ -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.
|
BIN
installer/lib/launch4j/lib/foxtrot.jar
Normal file
BIN
installer/lib/launch4j/lib/looks.jar
Normal file
BIN
installer/lib/launch4j/lib/xstream.jar
Normal file
35
installer/lib/launch4j/readme.txt
Normal file
@ -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/).
|
BIN
installer/lib/launch4j/src/images/build.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
installer/lib/launch4j/src/images/info.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
installer/lib/launch4j/src/images/new.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
installer/lib/launch4j/src/images/open.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
installer/lib/launch4j/src/images/open16.png
Normal file
After Width: | Height: | Size: 513 B |
BIN
installer/lib/launch4j/src/images/run.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
installer/lib/launch4j/src/images/save.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
189
installer/lib/launch4j/src/net/sf/launch4j/Builder.java
Normal file
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
21
installer/lib/launch4j/src/net/sf/launch4j/Launcher.java
Normal file
@ -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);
|
||||
}
|
||||
}
|
91
installer/lib/launch4j/src/net/sf/launch4j/Log.java
Normal file
@ -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");
|
||||
}});
|
||||
}
|
||||
}
|
62
installer/lib/launch4j/src/net/sf/launch4j/Main.java
Normal file
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
57
installer/lib/launch4j/src/net/sf/launch4j/OptionParser.java
Normal file
@ -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);
|
||||
// }
|
||||
}
|
230
installer/lib/launch4j/src/net/sf/launch4j/RcBuilder.java
Normal file
@ -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");
|
||||
}
|
||||
}
|
152
installer/lib/launch4j/src/net/sf/launch4j/Util.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
122
installer/lib/launch4j/src/net/sf/launch4j/ant/Launch4jTask.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
247
installer/lib/launch4j/src/net/sf/launch4j/binding/Bindings.java
Normal file
@ -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));
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
228
installer/lib/launch4j/src/net/sf/launch4j/config/Config.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
125
installer/lib/launch4j/src/net/sf/launch4j/config/Jre.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
BIN
installer/lib/launch4j/src/net/sf/launch4j/form/Config.jfrm
Normal file
534
installer/lib/launch4j/src/net/sf/launch4j/form/ConfigForm.java
Normal file
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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)");
|
||||
}
|
||||
}
|
||||
}
|
25
installer/lib/launch4j/w32api/MinGW.LICENSE.txt
Normal file
@ -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.
|
BIN
installer/lib/launch4j/w32api/crt2.o
Normal file
BIN
installer/lib/launch4j/w32api/libadvapi32.a
Normal file
BIN
installer/lib/launch4j/w32api/libgcc.a
Normal file
BIN
installer/lib/launch4j/w32api/libkernel32.a
Normal file
BIN
installer/lib/launch4j/w32api/libmingw32.a
Normal file
BIN
installer/lib/launch4j/w32api/libmsvcrt.a
Normal file
BIN
installer/lib/launch4j/w32api/libshell32.a
Normal file
BIN
installer/lib/launch4j/w32api/libuser32.a
Normal file
202
installer/lib/launch4j/web/changelog.html
Normal file
@ -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,
|
||||
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&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) - final RC<br></strong><ul><li>Correct handling of pathnames with spaces.</li><li>Fixed the '%20' pathname bug.</li><li>Fixed basedir bug (Richard Xing).</li><li>Splash screen can be closed when the application window becomes visible with out specifying it's title (Martin Busik), update your config file: <font color="#ff0000"><waitForTitle>title</waitForTitle></font>
|
||||
is now <font color="#ff0000"><waitForWindow>true</waitForWindow></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"><chdir>true</chdir></font>
|
||||
is now <font color="#ff0000"><chdir>.</chdir></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
|
||||
© 2005 Grzegorz Kowal
|
||||
<br>
|
||||
<br>
|
||||
<p><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=95944&type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a>
|
||||
<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>
|
||||
<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>
|
345
installer/lib/launch4j/web/docs1.html
Normal file
@ -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,
|
||||
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&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 // 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
|
||||
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
|
||||
© 2005 Grzegorz Kowal
|
||||
<br>
|
||||
<br>
|
||||
<p><a href="http://sourceforge.net"><img
|
||||
src="http://sourceforge.net/sflogo.php?group_id=95944&type=4"
|
||||
alt="SourceForge.net Logo" border="0" height="37" width="125"></a>
|
||||
<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>
|
||||
<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>
|
394
installer/lib/launch4j/web/docs2.html
Normal file
@ -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,
|
||||
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&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> <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><jre><path></em>
|
||||
may be absolute paths or
|
||||
relative to the configuration file path.<br>
|
||||
<pre><!-- <strong>Bold</strong> elements are required --><br><strong><launch4jConfig><br></strong> <!-- Header types: 0-GUI, 1-console --><strong><br></strong> <strong><headerType></strong><span class="codeword">0|1</span><strong></headerType></strong><br> <strong><jar></strong><span class="codeword">file</span><span class="codeword"></span><strong></jar><br></strong> <strong><outfile></strong><span class="codeword">file.exe</span><strong><span class="codeword"></span></outfile></strong><br> <errTitle><span class="codeword">text</span></errTitle><br> <jarArgs><span class="codeword">text</span></jarArgs><br> <chdir><span class="codeword">path</span></chdir><br> <customProcName><span class="codeword">true|<u>false</u></span></customProcName><br> <stayAlive><span class="codeword">true|false</span></stayAlive><br> <icon><span class="codeword">file</span></icon><br> <strong><jre><br></strong> <!-- Specify one of the following or both --><br> <strong><path></strong><span class="codeword">path</span><strong></path><br> </strong><strong><minVersion></strong><span class="codeword">x.x.x[_xx]</span><strong></minVersion><br></strong> <maxVersion><span class="codeword">x.x.x[_xx]</span></maxVersion><br> <!-- Heap sizes in MB, 0-use default --><br> <initialHeapSize><span class="codeword">MB</span></initialHeapSize><br> <maxHeapSize><span class="codeword">MB</span></maxHeapSize><br> <args><span class="codeword">text</span></args><br> <strong></jre></strong><br> <splash><br> <strong><file></strong><span class="codeword">file</span><strong></file></strong><br> <waitForWindow><span class="codeword"><u>true</u>|false</span></waitForWindow><br> <timeout><span class="codeword">seconds [60]</span></timeout><br> <timeoutErr><span class="codeword"><u>true</u>|false</span></timeoutErr><br> </splash><br> <versionInfo><br> <strong><fileVersion></strong><span class="codeword">x.x.x.x</span><strong></fileVersion></strong><br> <strong><txtFileVersion></strong><span class="codeword">text</span><strong></txtFileVersion></strong><br> <strong><fileDescription></strong><span class="codeword">text</span><strong></fileDescription></strong><br> <strong><copyright></strong><span class="codeword">text</span><strong></copyright></strong><br> <strong><productVersion></strong><span class="codeword">x.x.x.x</span><strong></productVersion></strong><br> <strong><txtProductVersion></strong><span class="codeword">text</span><strong></txtProductVersion></strong><br> <strong><productName></strong><span class="codeword">text</span><strong></productName></strong><br> <companyName><span class="codeword">text</span></companyName><br> <strong><internalName></strong><span class="codeword">filename</span><strong></internalName></strong><br> <strong><originalFilename></strong><span class="codeword">filename.exe</span><strong></originalFilename></strong><br> </versionInfo><br><strong></launch4jConfig></strong><br></pre>
|
||||
<dl>
|
||||
<dt><headerType></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 </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><jar></dt>
|
||||
<dd>Executable jar to wrap.</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><outfile></dt>
|
||||
<dd>Output executable file.<strong></strong></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>
|
||||
<dl>
|
||||
<dt><jarArgs></dt>
|
||||
<dd>Optional, constant
|
||||
command line arguments.</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><chdir></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><chdir>.</chdir></pre>
|
||||
</dd>
|
||||
<dd>
|
||||
<pre><chdir>../somedir</chdir></pre>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><customProcName></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><stayAlive></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><icon></dt>
|
||||
<dd>Application icon in ICO
|
||||
format. May contain multiple color depths/resolutions.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><jre></dt>
|
||||
<dd>Required element that groups
|
||||
JRE settings.</dd>
|
||||
</dl>
|
||||
<blockquote>
|
||||
<dl>
|
||||
<dt><path>,
|
||||
<minVersion>, <maxVersion><br>
|
||||
</dt>
|
||||
<dd>The <em><path></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><chdir></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><minVersion></em>
|
||||
property, you may also specify the <em><maxVersion></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><path></dt>
|
||||
<dd>Run if bundled JRE and
|
||||
javaw.exe
|
||||
are present, otherwise stop with error.</dd>
|
||||
<dt><path> +
|
||||
<minVersion> [+ <maxVersion>]</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><minVersion>
|
||||
[+ <maxVersion>]</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><initialHeapSize></dt>
|
||||
<dd>Optional, initial heap
|
||||
size in MB, 0 - use default.</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><maxHeapSize></dt>
|
||||
<dd>Optional, max heap size in
|
||||
MB, 0 - use default.</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><args></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><splash></dt>
|
||||
<dd>Optional, groups the splash
|
||||
screen settings. Allowed only in GUI header.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<blockquote>
|
||||
<dl>
|
||||
<dt><file></dt>
|
||||
<dd>Splash screen image in BMP
|
||||
format.</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><waitForWindow></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><timeout></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><timeoutErr></em>.</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><timeoutErr></dt>
|
||||
<dd>Optional, defaults to
|
||||
true.
|
||||
True signals
|
||||
an error on splash timeout, false
|
||||
closes the splash screen quietly.</dd>
|
||||
</dl>
|
||||
</blockquote>
|
||||
<dl>
|
||||
<dt><versionInfo></dt>
|
||||
<dd>Optional, version
|
||||
information to be displayed by the Windows
|
||||
Explorer.</dd>
|
||||
</dl>
|
||||
<blockquote>
|
||||
<dl>
|
||||
<dt><fileVersion></dt>
|
||||
<dd>Version number 'x.x.x.x'<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><txtFileVersion></dt>
|
||||
<dd>Free form file version,
|
||||
for example '1.20.RC1'.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><fileDescription></dt>
|
||||
<dd>File description presented
|
||||
to the user.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><copyright></dt>
|
||||
<dd>Legal copyright.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><productVersion></dt>
|
||||
<dd>Version number 'x.x.x.x'<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><txtProductVersion></dt>
|
||||
<dd>Free form file version,
|
||||
for example '1.20.RC1'.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><productName></dt>
|
||||
<dd>Text.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><companyName></dt>
|
||||
<dd>Optional text.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><internalName></dt>
|
||||
<dd>Internal name without
|
||||
extension, original filename or module
|
||||
name for example.<br>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><originalFilename></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><property name="launch4j.dir" location="/opt/launch4j" /></pre>
|
||||
Define the task in your Ant build script.<br>
|
||||
<pre><taskdef name="launch4j"<br> classname="net.sf.launch4j.ant.Launch4jTask"<br> classpath="${launch4j.dir}/launch4j.jar<br> :${launch4j.dir}/lib/xstream.jar" /><br></pre>
|
||||
Execute the task!<br>
|
||||
<pre><launch4j configFile="./l4j/demo.xml" /></pre>
|
||||
You can set or override the following configuration properties...<br>
|
||||
<em><jar><br>
|
||||
<outfile><br>
|
||||
<versionInfo><br>
|
||||
<fileVersion><br>
|
||||
<txtFileVersion><br>
|
||||
<productVersion><br>
|
||||
<txtProductVersion></em><em><br>
|
||||
</em>
|
||||
<pre><launch4j configFile="./l4j/demo.xml"<br> outfile="mydemo.exe"<br> fileVersion="1.0.0.0" txtFileVersion="1.0 RC2" /><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><chdir></em> and <em><jre><path></em> are
|
||||
calculated using the <em>basedir</em> project attribute.
|
||||
<pre><launch4j><br> <config headerType="0" jar="demo.jar" outfile="demo.exe"><br> <jre minVersion="1.4.0" /><br> </config><br></launch4j><br></pre>
|
||||
</div>
|
||||
<div id="footer">Copyright
|
||||
© 2005 Grzegorz Kowal
|
||||
<br>
|
||||
<br>
|
||||
<p><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=95944&type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a>
|
||||
<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>
|
||||
<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>
|
152
installer/lib/launch4j/web/index.html
Normal file
@ -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,
|
||||
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&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
|
||||
© 2005 Grzegorz Kowal
|
||||
<br>
|
||||
<br>
|
||||
<p><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=95944&type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a>
|
||||
<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>
|
||||
<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>
|
BIN
installer/lib/launch4j/web/launch4j.gif
Normal file
After Width: | Height: | Size: 3.4 KiB |
83
installer/lib/launch4j/web/layout.css
Normal file
@ -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;
|
||||
}
|
||||
|