Updated README.
This commit is contained in:
parent
e52bbc740e
commit
2c14b5a28d
41
README.md
41
README.md
@ -1,12 +1,13 @@
|
||||
![Launch5j](etc/logo.png)
|
||||
|
||||
**Java JAR wrapper for creating Windows native executables
|
||||
created by LoRd_MuldeR <<mulder2@gmx.de>>**
|
||||
---
|
||||
title: "![Launch5j](etc/img/logo.png)"
|
||||
subtitle: "**Java JAR wrapper for creating Windows native executables**"
|
||||
---
|
||||
|
||||
# Introduction
|
||||
|
||||
**Launch5j** is a reimagination of “Launch4j”, *with full Unicode support*. This is a 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. The wrapper also provides better user experience through an application icon, a native pre-JRE splash screen, and a Java download page in case the appropriate JRE cannot be found.
|
||||
|
||||
|
||||
# Usage
|
||||
|
||||
There currently are two different ways to use Launch5j with your application code:
|
||||
@ -34,6 +35,7 @@ There currently are two different ways to use Launch5j with your application cod
|
||||
|
||||
**Warning:** Code signing, as with Microsoft®'s `SignTool`, probably does **not** work with the “wrapped” executable file! If code signing is a requirement, please use a *separate* JAR file and just sing the launcher executable.
|
||||
|
||||
|
||||
# Variants
|
||||
|
||||
Launch5j executables come in a number of variants, allowing you to pick the most suitable one for you project:
|
||||
@ -59,13 +61,14 @@ All of the above Launch5j variants are available as `x86` (32-Bit) and `x64` (64
|
||||
|
||||
*Note:* Launch5j has been tested to work correctly on Windows XP (Service Pack 2), or a compatible newer version.
|
||||
|
||||
|
||||
# Customizations
|
||||
|
||||
Launch5j comes with a *default* executable icon and a *default* splash screen bitmap. These just server as an example and you probably want to replace them with your own *application-specific* graphics.
|
||||
|
||||
It is ***not*** necessary to re-build the executable files for that purpose. Instead, you can simply use a resource editor, such as [**XN Resource Editor**](https://web.archive.org/web/20100419201225/http://www.wilsonc.demon.co.uk/d10resourceeditor.htm) ([mirror](https://stefansundin.github.io/xn_resource_editor/)) or [**Resource Hacker™**](http://www.angusj.com/resourcehacker/), to *modify* the pre-compiled executable files as needed:
|
||||
|
||||
![reshack](etc/reshacker-example.png)
|
||||
![Resource Hacker](etc/img/reshacker-example.png)
|
||||
|
||||
## Additional options
|
||||
|
||||
@ -131,6 +134,7 @@ Some options can be configured via the launcher executable's [STRINGTABLE](https
|
||||
|
||||
*Note:* We use the convention that the default resource string value `"?"` is used to represent an “undefined” value, because resource strings cannot be empty. You can replace the default value as needed!
|
||||
|
||||
|
||||
# Unicode command-line arguments
|
||||
|
||||
There is a *long-standing* bug in Java on the Windows™ platform, which causes *Unicode* command-line arguments to be “mangled”. Even if the Unicode command-line arguments are properly passed to the Java executable (`java.exe`), they are **not** passed trough correctly to the `main()` method of your Java program! This problem can be reproduced in *all* Java versions ranging from Java 7 (1.7) up to and including the latest Java 15, as of October 2020.
|
||||
@ -164,15 +168,31 @@ public class YourMainClass {
|
||||
}
|
||||
```
|
||||
|
||||
***Example:***
|
||||
|
||||
![Unicode command-line arguments](etc/img/unicode-args.png)
|
||||
|
||||
## The JAR file name
|
||||
|
||||
Be aware that the same problem of “mangled” Unicode characters applies when the path of the JAR file is passed to the Java executable. In other words, the Java runtime *fails* to execute any JAR files whose path – file name or directory name anywhere in the path – contains any Unicode characters that cannot be represented in the computer's *local* ANSI codepage! Unfortunately, we can **not** encode the path of the JAR file as we do with the other command-line arguments, because the Jave executable requires the path of the JAR file to be passed in a non-encoded form.
|
||||
|
||||
Therefore, it is recommended to ***only*** use ASCII characters in the name of your JAR file and in the “install” path !!!
|
||||
|
||||
|
||||
# Source code
|
||||
|
||||
The source code of **Launch5j** is available from the official Git mirrors at:
|
||||
|
||||
* `git clone https://github.com/lordmulder/Launch5j.git`
|
||||
|
||||
* `git clone https://bitbucket.org/muldersoft/launch5j.git`
|
||||
|
||||
* `git clone https://gitlab.com/lord_mulder/launch5j.git`
|
||||
|
||||
|
||||
# Build instructions
|
||||
|
||||
In order to build Launch5j from the sources, it is recommended to use the [*GNU C Compiler* (GCC)](https://gcc.gnu.org/) for Windows, as provided by the [*Mingw-w64*](http://mingw-w64.org/) project. Other C compilers may work, but are **not** officially supported.
|
||||
In order to build **Launch5j** from the sources, it is recommended to use the [*GNU C Compiler* (GCC)](https://gcc.gnu.org/) for Windows, as provided by the [*Mingw-w64*](http://mingw-w64.org/) project. Other C compilers may work, but are **not** officially supported.
|
||||
|
||||
Probably the most simple way to set up the required build environment is by installing the [**MSYS2**](https://www.msys2.org/) distribution, which includes *GCC* (Mingw-w64) as well as all the required build tools, such as *Bash* and *GNU make*.
|
||||
|
||||
@ -188,11 +208,20 @@ Once the build environment has been set up, just run the provided Makefile:
|
||||
|
||||
*Note:* In order to create 32-Bit or 64-Bit binaries, use the `mingw32` or `mingw64` sub-system of MSYS2, respectively.
|
||||
|
||||
|
||||
# Contact
|
||||
|
||||
**Launch5j** was created by LoRd_MuldeR <<mulder2@gmx.de>>.
|
||||
|
||||
For help and support, please visit:
|
||||
<https://github.com/lordmulder/Launch5j/issues>
|
||||
|
||||
# Acknowledgment
|
||||
|
||||
This project is partly inspired by the “Launch4j” project, even though it has been re-written from scratch:
|
||||
<https://sourceforge.net/p/launch4j/>
|
||||
|
||||
|
||||
# License
|
||||
|
||||
This work has been released under the MIT license:
|
||||
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
BIN
etc/img/unicode-args.png
Normal file
BIN
etc/img/unicode-args.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
29
package.cmd
29
package.cmd
@ -1,6 +1,15 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
cd /d "%~dp0"
|
||||
|
||||
set "PANDOC_DIR=C:\Program Files (x86)\Pandoc"
|
||||
|
||||
if not exist "%PANDOC_DIR%\pandoc.exe" (
|
||||
echo Pandoc not found. Please check PANDOC_DIR and try again^^!
|
||||
pause
|
||||
goto:eof
|
||||
)
|
||||
|
||||
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
REM Get current date
|
||||
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -58,18 +67,22 @@ REM Copy binaries
|
||||
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
mkdir "%~dp0.\out\~package"
|
||||
mkdir "%~dp0.\out\~package\example"
|
||||
mkdir "%~dp0.\out\~package\x86"
|
||||
mkdir "%~dp0.\out\~package\x64"
|
||||
|
||||
copy /Y "%~dp0.\*.txt" "%~dp0.\out\~package"
|
||||
copy /Y "%~dp0.\*.md" "%~dp0.\out\~package"
|
||||
|
||||
copy /Y "%~dp0.\bin\launch5j_x86*.exe" "%~dp0.\out\~package\x86"
|
||||
copy /Y "%~dp0.\bin\launch5j_x86*.exe" "%~dp0.\out\~package"
|
||||
copy /Y "%~dp0.\bin\launch5j_x64*.exe" "%~dp0.\out\~package\x64"
|
||||
|
||||
copy /Y /B "%~dp0.\bin\launch5j_x86_wrapped_registry.exe" + "%~dp0.\etc\example\dist\example.jar" "%~dp0.\out\~package\example\example.exe"
|
||||
copy /Y "%~dp0.\etc\example\src\com\muldersoft\l5j\example\Main.java" "%~dp0.\out\~package\example\example.java"
|
||||
mkdir "%~dp0.\out\~package\etc"
|
||||
mkdir "%~dp0.\out\~package\etc\example"
|
||||
mkdir "%~dp0.\out\~package\etc\img"
|
||||
|
||||
copy /Y "%~dp0.\*.txt" "%~dp0.\out\~package"
|
||||
copy /Y "%~dp0.\etc\img\*.png" "%~dp0.\out\~package\etc\img"
|
||||
|
||||
copy /Y /B "%~dp0.\bin\launch5j_x86_wrapped_registry.exe" + "%~dp0.\etc\example\dist\example.jar" "%~dp0.\out\~package\etc\example\example.exe"
|
||||
copy /Y "%~dp0.\etc\example\src\com\muldersoft\l5j\example\Main.java" "%~dp0.\out\~package\etc\example\example.java"
|
||||
|
||||
"%PANDOC_DIR%\pandoc.exe" -f markdown-implicit_figures -t html -T "Launch5j" --toc "%~dp0.\README.md" > "%~dp0.\out\~package\README.html"
|
||||
|
||||
attrib +R "%~dp0.\out\~package\*.*" /S
|
||||
|
||||
|
@ -49,8 +49,8 @@ END
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,5,1,0
|
||||
PRODUCTVERSION 0,5,1,0
|
||||
FILEVERSION 0,6,0,0
|
||||
PRODUCTVERSION 0,6,0,0
|
||||
FILEFLAGSMASK 0x17L
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x3L
|
||||
@ -67,8 +67,8 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "ProductName", "Launch5j"
|
||||
VALUE "FileDescription", "Launch5j"
|
||||
VALUE "ProductVersion", "0.5.1"
|
||||
VALUE "FileVersion", "0.5.1"
|
||||
VALUE "ProductVersion", "0.6.0"
|
||||
VALUE "FileVersion", "0.6.0"
|
||||
VALUE "InternalName", "Launch5j"
|
||||
VALUE "OriginalFilename", "launch5j.exe"
|
||||
VALUE "LegalCopyright", "Created by LoRd_MuldeR <MuldeR2@GMX.de>"
|
||||
|
Loading…
Reference in New Issue
Block a user