From 2c14b5a28df0338022601ac5e9b24cbb0c2da8a4 Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Fri, 2 Oct 2020 21:46:35 +0200 Subject: [PATCH] Updated README. --- README.md | 41 ++++++++++++++++++++++++---- etc/{ => img}/logo.png | Bin etc/{ => img}/reshacker-example.png | Bin etc/img/unicode-args.png | Bin 0 -> 43768 bytes package.cmd | 29 ++++++++++++++------ res/common.rc | 8 +++--- 6 files changed, 60 insertions(+), 18 deletions(-) rename etc/{ => img}/logo.png (100%) rename etc/{ => img}/reshacker-example.png (100%) create mode 100644 etc/img/unicode-args.png diff --git a/README.md b/README.md index d051e4a..0b068e3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ -![Launch5j](etc/logo.png) - -**Java JAR wrapper for creating Windows native executables -created by LoRd_MuldeR <>** +--- +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 <>. + +For help and support, please visit: + + # Acknowledgment This project is partly inspired by the “Launch4j” project, even though it has been re-written from scratch: + # License This work has been released under the MIT license: diff --git a/etc/logo.png b/etc/img/logo.png similarity index 100% rename from etc/logo.png rename to etc/img/logo.png diff --git a/etc/reshacker-example.png b/etc/img/reshacker-example.png similarity index 100% rename from etc/reshacker-example.png rename to etc/img/reshacker-example.png diff --git a/etc/img/unicode-args.png b/etc/img/unicode-args.png new file mode 100644 index 0000000000000000000000000000000000000000..9c87bd2c6b50ca9a2ebd941079a38172f633e8e8 GIT binary patch literal 43768 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 literal 0 HcmV?d00001 diff --git a/package.cmd b/package.cmd index 66f2fd3..d38ad1e 100644 --- a/package.cmd +++ b/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 diff --git a/res/common.rc b/res/common.rc index 9e05944..e085f31 100644 --- a/res/common.rc +++ b/res/common.rc @@ -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 "