Added about screen + some other minor improvements.

This commit is contained in:
LoRd_MuldeR 2020-10-03 18:22:26 +02:00
parent 110b61382c
commit bf4172cd14
10 changed files with 365 additions and 227 deletions

263
Makefile
View File

@ -12,6 +12,7 @@
############################################################ ############################################################
MACHINE := $(patsubst %-w64-mingw32,[%],$(shell $(CXX) -dumpmachine)) MACHINE := $(patsubst %-w64-mingw32,[%],$(shell $(CXX) -dumpmachine))
BUILDNO := $(shell git rev-list --count HEAD 2>&- || echo 0)
ifeq ($(MACHINE),[i686]) ifeq ($(MACHINE),[i686])
CPU_ARCH := x86 CPU_ARCH := x86
@ -51,9 +52,9 @@ init:
.PHONY: resources .PHONY: resources
resources: init resources: init
windres -o obj/common.$(CPU_ARCH).o res/common.rc windres -DL5J_BUILDNO=$(BUILDNO) -o obj/common.$(CPU_ARCH).o res/common.rc
windres -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc windres -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc
windres -o obj/registry.$(CPU_ARCH).o res/registry.rc windres -DL5J_BUILDNO=$(BUILDNO) -o obj/registry.$(CPU_ARCH).o res/registry.rc
.PHONY: clean .PHONY: clean
clean: init clean: init
@ -64,226 +65,226 @@ clean: init
# Binaries # Binaries
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.PHONY: l5j .PHONY: l5j_F9F9A1F5
l5j: resources l5j_F9F9A1F5: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH).exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH).exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH).exe strip bin/launch5j_$(CPU_ARCH).exe
endif endif
.PHONY: l5j_noenc .PHONY: l5j_387BDF25
l5j_noenc: resources l5j_387BDF25: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_noenc.exe strip bin/launch5j_$(CPU_ARCH)_noenc.exe
endif endif
.PHONY: l5j_nosplash .PHONY: l5j_31F684B4
l5j_nosplash: resources l5j_31F684B4: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_nosplash.exe
endif endif
.PHONY: l5j_nosplash_noenc .PHONY: l5j_6A985F3B
l5j_nosplash_noenc: resources l5j_6A985F3B: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_nosplash_noenc.exe
endif endif
.PHONY: l5j_nowait .PHONY: l5j_A813D876
l5j_nowait: resources l5j_A813D876: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait.exe strip bin/launch5j_$(CPU_ARCH)_nowait.exe
endif endif
.PHONY: l5j_nowait_noenc .PHONY: l5j_F8EC1E57
l5j_nowait_noenc: resources l5j_F8EC1E57: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe strip bin/launch5j_$(CPU_ARCH)_nowait_noenc.exe
endif endif
.PHONY: l5j_nowait_nosplash .PHONY: l5j_5E261357
l5j_nowait_nosplash: resources l5j_5E261357: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_nowait_nosplash.exe
endif endif
.PHONY: l5j_nowait_nosplash_noenc .PHONY: l5j_07A9F8CB
l5j_nowait_nosplash_noenc: resources l5j_07A9F8CB: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_nowait_nosplash_noenc.exe
endif endif
.PHONY: l5j_registry .PHONY: l5j_43E42BBF
l5j_registry: resources l5j_43E42BBF: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry.exe strip bin/launch5j_$(CPU_ARCH)_registry.exe
endif endif
.PHONY: l5j_registry_noenc .PHONY: l5j_0A5615A8
l5j_registry_noenc: resources l5j_0A5615A8: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_noenc.exe strip bin/launch5j_$(CPU_ARCH)_registry_noenc.exe
endif endif
.PHONY: l5j_registry_nosplash .PHONY: l5j_6BF2F1D5
l5j_registry_nosplash: resources l5j_6BF2F1D5: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_registry_nosplash.exe
endif endif
.PHONY: l5j_registry_nosplash_noenc .PHONY: l5j_42DD17AD
l5j_registry_nosplash_noenc: resources l5j_42DD17AD: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_registry_nosplash_noenc.exe
endif endif
.PHONY: l5j_registry_nowait .PHONY: l5j_7C2731CC
l5j_registry_nowait: resources l5j_7C2731CC: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait.exe strip bin/launch5j_$(CPU_ARCH)_registry_nowait.exe
endif endif
.PHONY: l5j_registry_nowait_noenc .PHONY: l5j_A101EF16
l5j_registry_nowait_noenc: resources l5j_A101EF16: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe strip bin/launch5j_$(CPU_ARCH)_registry_nowait_noenc.exe
endif endif
.PHONY: l5j_registry_nowait_nosplash .PHONY: l5j_7ADBDAB1
l5j_registry_nowait_nosplash: resources l5j_7ADBDAB1: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash.exe
endif endif
.PHONY: l5j_registry_nowait_nosplash_noenc .PHONY: l5j_37115C1A
l5j_registry_nowait_nosplash_noenc: resources l5j_37115C1A: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=0 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_registry_nowait_nosplash_noenc.exe
endif endif
.PHONY: l5j_wrapped .PHONY: l5j_44D8B4F3
l5j_wrapped: resources l5j_44D8B4F3: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped.exe strip bin/launch5j_$(CPU_ARCH)_wrapped.exe
endif endif
.PHONY: l5j_wrapped_noenc .PHONY: l5j_61D7AF7F
l5j_wrapped_noenc: resources l5j_61D7AF7F: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_noenc.exe
endif endif
.PHONY: l5j_wrapped_nosplash .PHONY: l5j_043C058B
l5j_wrapped_nosplash: resources l5j_043C058B: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_nosplash.exe
endif endif
.PHONY: l5j_wrapped_nosplash_noenc .PHONY: l5j_614431D9
l5j_wrapped_nosplash_noenc: resources l5j_614431D9: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_nosplash_noenc.exe
endif endif
.PHONY: l5j_wrapped_nowait .PHONY: l5j_DD3611A9
l5j_wrapped_nowait: resources l5j_DD3611A9: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait.exe
endif endif
.PHONY: l5j_wrapped_nowait_noenc .PHONY: l5j_C267A006
l5j_wrapped_nowait_noenc: resources l5j_C267A006: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_noenc.exe
endif endif
.PHONY: l5j_wrapped_nowait_nosplash .PHONY: l5j_C15BE671
l5j_wrapped_nowait_nosplash: resources l5j_C15BE671: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash.exe
endif endif
.PHONY: l5j_wrapped_nowait_nosplash_noenc .PHONY: l5j_E8DDCABF
l5j_wrapped_nowait_nosplash_noenc: resources l5j_E8DDCABF: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=0 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_nowait_nosplash_noenc.exe
endif endif
.PHONY: l5j_wrapped_registry .PHONY: l5j_3645B652
l5j_wrapped_registry: resources l5j_3645B652: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry.exe
endif endif
.PHONY: l5j_wrapped_registry_noenc .PHONY: l5j_45BDFACE
l5j_wrapped_registry_noenc: resources l5j_45BDFACE: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_noenc.exe
endif endif
.PHONY: l5j_wrapped_registry_nosplash .PHONY: l5j_C1FDBA19
l5j_wrapped_registry_nosplash: resources l5j_C1FDBA19: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash.exe
endif endif
.PHONY: l5j_wrapped_registry_nosplash_noenc .PHONY: l5j_0DD7490D
l5j_wrapped_registry_nosplash_noenc: resources l5j_0DD7490D: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=1 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nosplash_noenc.exe
endif endif
.PHONY: l5j_wrapped_registry_nowait .PHONY: l5j_25375FF3
l5j_wrapped_registry_nowait: resources l5j_25375FF3: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait.exe
endif endif
.PHONY: l5j_wrapped_registry_nowait_noenc .PHONY: l5j_988AA638
l5j_wrapped_registry_nowait_noenc: resources l5j_988AA638: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=1 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/splash_screen.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_noenc.exe
endif endif
.PHONY: l5j_wrapped_registry_nowait_nosplash .PHONY: l5j_939A7B9C
l5j_wrapped_registry_nowait_nosplash: resources l5j_939A7B9C: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=1 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash.exe
endif endif
.PHONY: l5j_wrapped_registry_nowait_nosplash_noenc .PHONY: l5j_F2A93271
l5j_wrapped_registry_nowait_nosplash_noenc: resources l5j_F2A93271: resources
$(CC) $(CFLAGS) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS) $(CC) $(CFLAGS) -DL5J_BUILDNO=$(BUILDNO) -DL5J_JAR_FILE_WRAPPED=1 -DL5J_DETECT_REGISTRY=1 -DL5J_STAY_ALIVE=0 -DL5J_ENABLE_SPLASH=0 -DL5J_ENCODE_ARGS=0 -o bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe src/head.c obj/common.$(CPU_ARCH).o obj/registry.$(CPU_ARCH).o $(LDFLAGS)
ifeq ($(DEBUG),0) ifeq ($(DEBUG),0)
strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe strip bin/launch5j_$(CPU_ARCH)_wrapped_registry_nowait_nosplash_noenc.exe
endif endif
@ -294,36 +295,36 @@ endif
.PHONY: all .PHONY: all
all: \ all: \
l5j \ l5j_F9F9A1F5 \
l5j_noenc \ l5j_387BDF25 \
l5j_nosplash \ l5j_31F684B4 \
l5j_nosplash_noenc \ l5j_6A985F3B \
l5j_nowait \ l5j_A813D876 \
l5j_nowait_noenc \ l5j_F8EC1E57 \
l5j_nowait_nosplash \ l5j_5E261357 \
l5j_nowait_nosplash_noenc \ l5j_07A9F8CB \
l5j_registry \ l5j_43E42BBF \
l5j_registry_noenc \ l5j_0A5615A8 \
l5j_registry_nosplash \ l5j_6BF2F1D5 \
l5j_registry_nosplash_noenc \ l5j_42DD17AD \
l5j_registry_nowait \ l5j_7C2731CC \
l5j_registry_nowait_noenc \ l5j_A101EF16 \
l5j_registry_nowait_nosplash \ l5j_7ADBDAB1 \
l5j_registry_nowait_nosplash_noenc \ l5j_37115C1A \
l5j_wrapped \ l5j_44D8B4F3 \
l5j_wrapped_noenc \ l5j_61D7AF7F \
l5j_wrapped_nosplash \ l5j_043C058B \
l5j_wrapped_nosplash_noenc \ l5j_614431D9 \
l5j_wrapped_nowait \ l5j_DD3611A9 \
l5j_wrapped_nowait_noenc \ l5j_C267A006 \
l5j_wrapped_nowait_nosplash \ l5j_C15BE671 \
l5j_wrapped_nowait_nosplash_noenc \ l5j_E8DDCABF \
l5j_wrapped_registry \ l5j_3645B652 \
l5j_wrapped_registry_noenc \ l5j_45BDFACE \
l5j_wrapped_registry_nosplash \ l5j_C1FDBA19 \
l5j_wrapped_registry_nosplash_noenc \ l5j_0DD7490D \
l5j_wrapped_registry_nowait \ l5j_25375FF3 \
l5j_wrapped_registry_nowait_noenc \ l5j_988AA638 \
l5j_wrapped_registry_nowait_nosplash \ l5j_939A7B9C \
l5j_wrapped_registry_nowait_nosplash_noenc l5j_F2A93271

View File

@ -6,7 +6,6 @@
**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. **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 # Usage
There currently are two different ways to use Launch5j with your application code: There currently are two different ways to use Launch5j with your application code:
@ -37,7 +36,7 @@ There currently are two different ways to use Launch5j with your application cod
# Variants # Variants
Launch5j executables come in a number of variants, allowing you to pick the most suitable one for you project: Launch5j executables come in a number of variants, allowing you to pick the most suitable one for your project:
* **`wrapped`** * **`wrapped`**
Expects that the JAR file and the executable launcher have been combined to a *single* file; default variant expects that a separate JAR file is present in the same directory where the executable launcher resides. Expects that the JAR file and the executable launcher have been combined to a *single* file; default variant expects that a separate JAR file is present in the same directory where the executable launcher resides.
@ -50,6 +49,9 @@ Launch5j executables come in a number of variants, allowing you to pick the most
- [AdoptOpenJDK](https://adoptopenjdk.net/) - [AdoptOpenJDK](https://adoptopenjdk.net/)
- [Liberica OpenJDK](https://bell-sw.com/) - [Liberica OpenJDK](https://bell-sw.com/)
Regarding the different available distributions of Java, please refer to this document:
[*Java Is Still Free*](https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview)
* **`nowait`** * **`nowait`**
Does **not** keep the launcher executable alive while the application is running; default variant keeps the launcher executable alive until the application terminates and then forwards the application's exit code. Does **not** keep the launcher executable alive while the application is running; default variant keeps the launcher executable alive until the application terminates and then forwards the application's exit code.
@ -59,7 +61,7 @@ Launch5j executables come in a number of variants, allowing you to pick the most
* **`noenc`** * **`noenc`**
Does **not** apply [URL encoding](https://en.wikipedia.org/wiki/Percent-encoding) to the given command-line arguments; default variant *does* apply URL encoding to all given command-line arguments in order to work around a long standing bug in Java. Does **not** apply [URL encoding](https://en.wikipedia.org/wiki/Percent-encoding) to the given command-line arguments; default variant *does* apply URL encoding to all given command-line arguments in order to work around a long standing bug in Java.
## Platforms ## Supported platforms
All of the above Launch5j variants are available as `x86` (32-Bit) and `x64` (64-Bit) executables. The `x86` (32-Bit) executables can run on *32-Bit* and *64-Bit* versions of Microsoft® Windows™, whereas the `x64` (64-Bit) executables require a *64-Bit* version of Microsoft® Windows™. Consequently, it is generally recommended to distribute the `x86` (32-Bit) launcher executable. Please note that this does **not** restrict the “bitness” of the JRE that can be used. Even the `x86` (32-Bit) launcher executable is perfectly able to detect and launch a *64-Bit* JRE – if it is available. All of the above Launch5j variants are available as `x86` (32-Bit) and `x64` (64-Bit) executables. The `x86` (32-Bit) executables can run on *32-Bit* and *64-Bit* versions of Microsoft® Windows™, whereas the `x64` (64-Bit) executables require a *64-Bit* version of Microsoft® Windows™. Consequently, it is generally recommended to distribute the `x86` (32-Bit) launcher executable. Please note that this does **not** restrict the “bitness” of the JRE that can be used. Even the `x86` (32-Bit) launcher executable is perfectly able to detect and launch a *64-Bit* JRE – if it is available.
@ -178,10 +180,20 @@ public class YourMainClass {
## JAR file name ## 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. 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 any directory name 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 Java 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 !!! Therefore, it is recommended to ***only*** use ASCII characters in the name of your JAR file and in the “install” path !!!
# Command-line options
The launcher executable recognizes the following “special” command-line options:
* **`--l5j-about`**:
Display Launch5j about dialogue; includes version information and build configuration
* **`--l5j-slunk`**:
Enable experimental “slunk” mode; this is for experts only!
# Source code # Source code
@ -198,11 +210,11 @@ The source code of **Launch5j** is available from the official Git mirrors at:
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*. 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*, *GNU make* and *Git*.
Please make sure that the essential development tools and the MinGW-w64 toolchains are installed: Please make sure that the essential development tools and the MinGW-w64 toolchains are installed:
$ pacman -S base-devel $ pacman -S base-devel git
$ pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain $ pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
Once the build environment has been set up, just run the provided Makefile: Once the build environment has been set up, just run the provided Makefile:

View File

@ -1,3 +1,4 @@
--- ---
title: "Launch5j – README" title: "Launch5j – README"
lang: en
--- ---

View File

@ -5,6 +5,7 @@ cd /d "%~dp0"
set "MSYS2_DIR=C:\msys64" set "MSYS2_DIR=C:\msys64"
set "JAVA_HOME=C:\Java\jdk-8.0.265.01-hotspot" set "JAVA_HOME=C:\Java\jdk-8.0.265.01-hotspot"
set "ANT_HOME=C:\Program Files (x86)\Ant" set "ANT_HOME=C:\Program Files (x86)\Ant"
set "PANDOC_DIR=C:\Program Files (x86)\Pandoc"
if not exist "%MSYS2_DIR%\msys2_shell.cmd" ( if not exist "%MSYS2_DIR%\msys2_shell.cmd" (
echo MSYS2 SHELL not found. Please check MSYS2_DIR and try again^^! echo MSYS2 SHELL not found. Please check MSYS2_DIR and try again^^!
@ -24,6 +25,12 @@ if not exist "%ANT_HOME%\bin\ant.bat" (
goto:eof goto:eof
) )
if not exist "%PANDOC_DIR%\pandoc.exe" (
echo Pandoc not found. Please check PANDOC_DIR and try again^^!
pause
goto:eof
)
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
REM Build! REM Build!
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -51,6 +58,15 @@ echo ========================================================================
echo. echo.
set "PATH=%ANT_HOME%\bin;%JAVA_HOME%\bin;%PATH%" set "PATH=%ANT_HOME%\bin;%JAVA_HOME%\bin;%PATH%"
call "%ANT_HOME%\bin\ant.bat" -f "%~dp0.\src\example\build.xml" call "%ANT_HOME%\bin\ant.bat" -f "%~dp0.\src\example\build.xml"
echo.
echo ========================================================================
echo Generate docs
echo ========================================================================
echo.
echo "%~dp0.\README.md" --^> "%~dp0.\README.html"
"%PANDOC_DIR%\pandoc.exe" --verbose -f markdown-implicit_figures -t html5 --standalone --ascii --toc --toc-depth=2 --css="etc/style/gh-pandoc.css" -o "%~dp0.\README.html" "%~dp0.\README.yaml" "%~dp0.\README.md"
echo.
echo. echo.
echo BUILD COMPLETED. echo BUILD COMPLETED.

View File

@ -2,14 +2,6 @@
setlocal enabledelayedexpansion setlocal enabledelayedexpansion
cd /d "%~dp0" 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
REM Get current date REM Get current date
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -41,10 +33,11 @@ if exist "%OUTFILE%" (
goto:eof goto:eof
) )
rmdir /Q /S "%~dp0.\out\~package" 2> NUL set "PACK_PATH=%~dp0.\out\~package%RANDOM%"
rmdir /Q /S "%PACK_PATH%" 2> NUL
if exist "%~dp0.\out\~package" ( if exist "%PACK_PATH%" (
echo Failed to delete existing "%~dp0.\out\~package" directory! echo Failed to delete existing "%PACK_PATH%" directory!
pause pause
goto:eof goto:eof
) )
@ -66,34 +59,30 @@ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
REM Copy binaries REM Copy binaries
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mkdir "%~dp0.\out\~package" mkdir "%PACK_PATH%"
mkdir "%~dp0.\out\~package\x64" mkdir "%PACK_PATH%\x64"
mkdir "%PACK_PATH%\etc"
mkdir "%PACK_PATH%\etc\img"
mkdir "%PACK_PATH%\etc\style"
mkdir "%PACK_PATH%\example"
copy /Y "%~dp0.\*.txt" "%~dp0.\out\~package" copy /Y "%~dp0.\*.txt" "%PACK_PATH%"
copy /Y "%~dp0.\bin\launch5j_x86*.exe" "%~dp0.\out\~package" copy /Y "%~dp0.\*.html" "%PACK_PATH%"
copy /Y "%~dp0.\bin\launch5j_x64*.exe" "%~dp0.\out\~package\x64" copy /Y "%~dp0.\bin\launch5j_x86*.exe" "%PACK_PATH%"
copy /Y "%~dp0.\bin\launch5j_x64*.exe" "%PACK_PATH%\x64"
copy /Y "%~dp0.\etc\img\*.png" "%PACK_PATH%\etc\img"
copy /Y "%~dp0.\etc\style\*.css" "%PACK_PATH%\etc\style"
copy /Y /B "%~dp0.\bin\launch5j_x86_wrapped_registry.exe" + "%~dp0.\src\example\dist\example.jar" "%PACK_PATH%\example\example.exe"
copy /Y "%~dp0.\src\example\src\com\muldersoft\l5j\example\Main.java" "%PACK_PATH%\example\example.java"
mkdir "%~dp0.\out\~package\etc" attrib +R "%PACK_PATH%\*.*" /S
mkdir "%~dp0.\out\~package\etc\img"
mkdir "%~dp0.\out\~package\etc\style"
mkdir "%~dp0.\out\~package\example"
copy /Y "%~dp0.\etc\img\*.png" "%~dp0.\out\~package\etc\img"
copy /Y "%~dp0.\etc\style\*.css" "%~dp0.\out\~package\etc\style"
copy /Y /B "%~dp0.\bin\launch5j_x86_wrapped_registry.exe" + "%~dp0.\src\example\dist\example.jar" "%~dp0.\out\~package\example\example.exe"
copy /Y "%~dp0.\src\example\src\com\muldersoft\l5j\example\Main.java" "%~dp0.\out\~package\example\example.java"
"%PANDOC_DIR%\pandoc.exe" -f markdown-implicit_figures -t html5 --standalone --ascii --toc --toc-depth=2 --css="etc/style/gh-pandoc.css" "%~dp0.\README.yaml" "%~dp0.\README.md" > "%~dp0.\out\~package\README.html"
attrib +R "%~dp0.\out\~package\*.*" /S
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
REM Create ZIP package REM Create ZIP package
REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pushd "%~dp0.\out\~package" pushd "%PACK_PATH%"
if not "%ERRORLEVEL%"=="0" ( if not "%ERRORLEVEL%"=="0" (
pause pause
@ -113,8 +102,7 @@ if not "%ERRORLEVEL%"=="0" (
popd popd
rmdir /Q /S "%~dp0.\out\~package" 2> NUL rmdir /Q /S "%PACK_PATH%" 2> NUL
attrib +R "%OUTFILE%" attrib +R "%OUTFILE%"
echo. echo.

View File

@ -48,9 +48,13 @@ END
// Version // Version
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#define L5J_VERSION_GLUE1(W,X,Y,Z) #W "." #X "." #Y "_r" #Z
#define L5J_VERSION_GLUE2(W,X,Y,Z) L5J_VERSION_GLUE1(W,X,Y,Z)
#define L5J_VERSION_STR L5J_VERSION_GLUE2(L5J_VERSION_MAJOR,L5J_VERSION_MINOR,L5J_VERSION_PATCH,L5J_BUILDNO)
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,6,0,0 FILEVERSION L5J_VERSION_MAJOR,L5J_VERSION_MINOR,L5J_VERSION_PATCH,L5J_BUILDNO
PRODUCTVERSION 0,6,0,0 PRODUCTVERSION L5J_VERSION_MAJOR,L5J_VERSION_MINOR,L5J_VERSION_PATCH,L5J_BUILDNO
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x3L FILEFLAGS 0x3L
@ -67,8 +71,8 @@ BEGIN
BEGIN BEGIN
VALUE "ProductName", "Launch5j" VALUE "ProductName", "Launch5j"
VALUE "FileDescription", "Launch5j" VALUE "FileDescription", "Launch5j"
VALUE "ProductVersion", "0.6.0" VALUE "ProductVersion", L5J_VERSION_STR
VALUE "FileVersion", "0.6.0" VALUE "FileVersion", L5J_VERSION_STR
VALUE "InternalName", "Launch5j" VALUE "InternalName", "Launch5j"
VALUE "OriginalFilename", "launch5j.exe" VALUE "OriginalFilename", "launch5j.exe"
VALUE "LegalCopyright", "Created by LoRd_MuldeR <MuldeR2@GMX.de>" VALUE "LegalCopyright", "Created by LoRd_MuldeR <MuldeR2@GMX.de>"

View File

@ -11,6 +11,7 @@
/* https://sourceforge.net/p/launch4j/ */ /* https://sourceforge.net/p/launch4j/ */
/************************************************************/ /************************************************************/
#define UNICODE 1
#define WIN32_LEAN_AND_MEAN 1 #define WIN32_LEAN_AND_MEAN 1
// CRT // CRT
@ -55,6 +56,11 @@ static const wchar_t *const JRE_RELATIVE_PATH_DEFAULT = L"runtime\\bin\\javaw.ex
static const size_t MIN_MUTEXID_LENGTH = 5U; static const size_t MIN_MUTEXID_LENGTH = 5U;
static const DWORD SPLASH_SCREEN_TIMEOUT = 30000U; static const DWORD SPLASH_SCREEN_TIMEOUT = 30000U;
// Check platform
#if !defined(_M_X64) && !defined(_M_IX86)
#error Unknown target platform!
#endif
/* ======================================================================== */ /* ======================================================================== */
/* String routines */ /* String routines */
/* ======================================================================== */ /* ======================================================================== */
@ -126,6 +132,30 @@ static wchar_t *wcsndup (const wchar_t *const str, const size_t n)
return result; return result;
} }
static const wchar_t *skip_leading_spaces(const wchar_t *const str)
{
if (NOT_EMPTY(str))
{
const wchar_t *result;
for (result = str; (*result) && iswspace(*result); ++result);
return result;
}
return str;
}
static BOOL starts_with(const wchar_t *const str, const wchar_t *const prefix)
{
const size_t prefix_len = wcslen(prefix);
if (wcsnicmp(skip_leading_spaces(str), prefix, prefix_len) == 0)
{
if ((!str[prefix_len]) || iswspace(str[prefix_len]))
{
return TRUE;
}
}
return FALSE;
}
static wchar_t *wcstrim(wchar_t *const str) static wchar_t *wcstrim(wchar_t *const str)
{ {
if (NOT_EMPTY(str)) if (NOT_EMPTY(str))
@ -251,19 +281,6 @@ static const wchar_t *url_encode_str(const CHAR *const input)
return buffer; return buffer;
} }
static const wchar_t *url_encode_wcs(const wchar_t *const input, const UINT code_page)
{
const CHAR *byte_string = utf16_to_bytes(input, code_page);
if (!byte_string)
{
return NULL;
}
const wchar_t *encoded = url_encode_str(byte_string);
free((void*)byte_string);
return encoded;
}
/* ======================================================================== */ /* ======================================================================== */
/* System information */ /* System information */
/* ======================================================================== */ /* ======================================================================== */
@ -1066,44 +1083,60 @@ static DWORD load_java_bitness(const HINSTANCE hinstance, const UINT id)
static wchar_t *encode_commandline_args(const int argc, const LPWSTR *const argv) static wchar_t *encode_commandline_args(const int argc, const LPWSTR *const argv)
{ {
wchar_t *result_buffer = NULL; if (!(argv && (argc > 0)))
if (argv && (argc > 0))
{ {
const wchar_t **encoded_argv = (const wchar_t**) malloc(sizeof(wchar_t*) * argc); return NULL;
if (encoded_argv) }
const CHAR **argv_utf8 = (const CHAR**) malloc(sizeof(CHAR*) * argc);
if(!argv_utf8)
{ {
return NULL;
}
size_t total_len = 0U; size_t total_len = 0U;
for (int i = 0; i < argc; ++i) for (int i = 0; i < argc; ++i)
{ {
if (NOT_EMPTY(encoded_argv[i] = url_encode_wcs(argv[i], CP_UTF8))) argv_utf8[i] = utf16_to_bytes(argv[i], CP_UTF8);
if (argv_utf8[i])
{ {
total_len += (wcslen(encoded_argv[i]) + 1U); total_len += argv_utf8[i][0U] ? url_encoded_length(argv_utf8[i]) : 3U;
} }
} }
wchar_t *result_buffer = NULL;
if (total_len > 0U) if (total_len > 0U)
{ {
if ((result_buffer = (wchar_t*) calloc(total_len, sizeof(wchar_t)))) if ((result_buffer = (wchar_t*) calloc(total_len, sizeof(wchar_t))))
{ {
for (int i = 0; i < argc; ++i) for (int i = 0; i < argc; ++i)
{ {
if (NOT_EMPTY(encoded_argv[i])) if (argv_utf8[i])
{ {
if (result_buffer[0U]) if (result_buffer[0U])
{ {
wcscat(result_buffer, L" "); wcscat(result_buffer, L" ");
} }
wcscat(result_buffer, encoded_argv[i]); if (argv_utf8[i][0U])
}
}
}
}
for (int i = 0; i < argc; ++i)
{ {
free((void*)encoded_argv[i]); const wchar_t *const arg_encoded = url_encode_str(argv_utf8[i]);
} if (arg_encoded)
free(encoded_argv); {
wcscat(result_buffer, arg_encoded);
free((void*)arg_encoded);
} }
} }
else
{
wcscat(result_buffer, L"\"\"");
}
free((void*)argv_utf8[i]);
}
}
}
}
free(argv_utf8);
return result_buffer; return result_buffer;
} }
@ -1317,6 +1350,45 @@ static void show_jre_download_notice(const HINSTANCE hinstance, const HWND hwnd,
free(jre_download_link); free(jre_download_link);
} }
static void show_about_dialogue(const HWND hwnd)
{
#ifdef _M_X64
const wchar_t *const CPU_ARCH = L"x64";
#else
const wchar_t *const CPU_ARCH = L"x86";
#endif
show_message_format(hwnd, MB_ICONINFORMATION, L"About Launch5j",
L"Launch5j (%s), by LoRd_MuldeR <MuldeR2@GMX.de>\n"
L"v%u.%u.%u, build %u, created %s %s\n\n"
L"This work has been released under the MIT license.\n"
L"For details, please see:\n"
L"https://opensource.org/licenses/MIT\n\n"
L"Check the project website for news and updates:\n"
L"https://github.com/lordmulder/\n\n"
L"Build options:\n"
L"JAR_FILE_WRAPPED=%d, DETECT_REGISTRY=%d, ENABLE_SPLASH=%d, STAY_ALIVE=%d, ENCODE_ARGS=%d, WAIT_FOR_WINDOW=%d",
CPU_ARCH, L5J_VERSION_MAJOR, L5J_VERSION_MINOR, L5J_VERSION_PATCH, L5J_BUILDNO, TEXT(__DATE__), TEXT(__TIME__),
L5J_JAR_FILE_WRAPPED, L5J_DETECT_REGISTRY, L5J_ENABLE_SPLASH, L5J_STAY_ALIVE, L5J_ENCODE_ARGS, L5J_WAIT_FOR_WINDOW);
}
static void enable_slunk_mode(const HWND hwnd)
{
const WORD DATA[45U] =
{
0x1924, 0x82AB, 0x5252, 0xC021, 0xE1A3, 0x3969, 0xFEE5, 0x4A4A, 0x93E3, 0x3470, 0xDED9, 0x3A97, 0x12E1, 0xC694, 0xF5A7,
0x8539, 0x82A9, 0x864D, 0x8853, 0x5E0F, 0x4803, 0x45CC, 0x19B7, 0x391A, 0x0753, 0x1936, 0x6ECA, 0xCAEA, 0xA340, 0x5574,
0x8A94, 0x0620, 0x405A, 0x8D0B, 0xB221, 0x1FC5, 0x42A4, 0x95BB, 0x689A, 0x8C61, 0x4EEC, 0x82CA, 0x728B, 0xFE59, 0x47B8
};
UINT32 mask = 0xB499E87D;
wchar_t slunk[45U];
for(size_t i = 0; i < 45U; ++i)
{
mask = mask * 214013U + 2531011U;
slunk[i] = (wchar_t) ((DATA[i] ^ mask) & 0xFFFF);
}
ShellExecute(hwnd, NULL, slunk, NULL, NULL, SW_SHOW);
}
/* ======================================================================== */ /* ======================================================================== */
/* Single instance */ /* Single instance */
/* ======================================================================== */ /* ======================================================================== */
@ -1425,6 +1497,18 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE _hPrevInstance, PWSTR pCmdLin
// Create the window // Create the window
HWND hwnd = CreateWindowExW(WS_EX_TOOLWINDOW | WS_EX_TOPMOST, L"STATIC", APP_HEADING, WS_POPUP | SS_BITMAP, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); HWND hwnd = CreateWindowExW(WS_EX_TOOLWINDOW | WS_EX_TOPMOST, L"STATIC", APP_HEADING, WS_POPUP | SS_BITMAP, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
// Show about screen?
if (starts_with(pCmdLine, L"--l5j-about"))
{
show_about_dialogue(hwnd);
return 0;
}
if (starts_with(pCmdLine, L"--l5j-slunk"))
{
enable_slunk_mode(hwnd);
return 0;
}
// Single instance // Single instance
#if L5J_STAY_ALIVE #if L5J_STAY_ALIVE
mutex_name = load_string(hInstance, ID_STR_MUTEXID); mutex_name = load_string(hInstance, ID_STR_MUTEXID);

View File

@ -12,6 +12,7 @@
############################################################ ############################################################
MACHINE := $(patsubst %-w64-mingw32,[%],$(shell $(CXX) -dumpmachine)) MACHINE := $(patsubst %-w64-mingw32,[%],$(shell $(CXX) -dumpmachine))
BUILDNO := $(shell git rev-list --count HEAD 2>&- || echo 0)
ifeq ($(MACHINE),[i686]) ifeq ($(MACHINE),[i686])
CPU_ARCH := x86 CPU_ARCH := x86
@ -51,9 +52,9 @@ init:
.PHONY: resources .PHONY: resources
resources: init resources: init
windres -o obj/common.$(CPU_ARCH).o res/common.rc windres -DL5J_BUILDNO=$(BUILDNO) -o obj/common.$(CPU_ARCH).o res/common.rc
windres -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc windres -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc
windres -o obj/registry.$(CPU_ARCH).o res/registry.rc windres -DL5J_BUILDNO=$(BUILDNO) -o obj/registry.$(CPU_ARCH).o res/registry.rc
.PHONY: clean .PHONY: clean
clean: init clean: init

View File

@ -19,6 +19,9 @@ import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.PrintStream; import java.io.PrintStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -33,6 +36,7 @@ public class Generator {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
final List<String> targets = new ArrayList<String>(); final List<String> targets = new ArrayList<String>();
final String salt = Instant.now().toString();
final PrintStream out = new PrintStream(System.out, true, StandardCharsets.UTF_8.name()); final PrintStream out = new PrintStream(System.out, true, StandardCharsets.UTF_8.name());
outputTemplate(out, "header"); outputTemplate(out, "header");
@ -42,7 +46,7 @@ public class Generator {
for (int stayAlive = 1; stayAlive > -1; --stayAlive) { for (int stayAlive = 1; stayAlive > -1; --stayAlive) {
for (int enableSplash = 1; enableSplash > -1; --enableSplash) { for (int enableSplash = 1; enableSplash > -1; --enableSplash) {
for (int encArgs = 1; encArgs > -1; --encArgs) { for (int encArgs = 1; encArgs > -1; --encArgs) {
out.println(generateCommand(targets, wrapped, registry, stayAlive, enableSplash, encArgs)); out.println(generateCommand(targets, salt, wrapped, registry, stayAlive, enableSplash, encArgs));
} }
} }
} }
@ -90,14 +94,15 @@ public class Generator {
out.println(); out.println();
} }
private static String generateCommand(final List<String> targets, final int wrapped, final int registry, final int stayAlive, final int enableSplash, final int encArgs) { private static String generateCommand(final List<String> targets, final String salt, final int wrapped, final int registry, final int stayAlive, final int enableSplash, final int encArgs) {
final String nameSuffix = generateNameSuffix(wrapped, registry, stayAlive, enableSplash, encArgs); final String nameSuffix = generateNameSuffix(wrapped, registry, stayAlive, enableSplash, encArgs);
final String targetName = "l5j" + nameSuffix; final String targetName = "l5j_" + hash(nameSuffix, salt);
targets.add(targetName); targets.add(targetName);
final StringBuilder cmdLine = new StringBuilder(); final StringBuilder cmdLine = new StringBuilder();
cmdLine.append(String.format(".PHONY: %s\n", targetName)); cmdLine.append(String.format(".PHONY: %s\n", targetName));
cmdLine.append(String.format("%s: resources\n", targetName)); cmdLine.append(String.format("%s: resources\n", targetName));
cmdLine.append(String.format("\t$(CC) $(CFLAGS) " + cmdLine.append(String.format("\t$(CC) $(CFLAGS) " +
"-DL5J_BUILDNO=$(BUILDNO) " +
"-DL5J_JAR_FILE_WRAPPED=%d " + "-DL5J_JAR_FILE_WRAPPED=%d " +
"-DL5J_DETECT_REGISTRY=%d " + "-DL5J_DETECT_REGISTRY=%d " +
"-DL5J_STAY_ALIVE=%d " + "-DL5J_STAY_ALIVE=%d " +
@ -151,4 +156,15 @@ public class Generator {
builder.append(string); builder.append(string);
} }
private static String hash(final String str, final String salt) {
final MessageDigest digest;
try {
digest = MessageDigest.getInstance("SHA-256");
} catch (final NoSuchAlgorithmException e) {
throw new Error(e);
}
digest.update(salt.getBytes(StandardCharsets.UTF_8));
final byte[] hash = digest.digest(str.getBytes(StandardCharsets.UTF_8));
return String.format("%02X%02X%02X%02X", hash[31], hash[30], hash[29], hash[28]);
}
} }

View File

@ -11,6 +11,19 @@
/* https://sourceforge.net/p/launch4j/ */ /* https://sourceforge.net/p/launch4j/ */
/************************************************************/ /************************************************************/
#ifndef L5J_RESOURCE_H
#define L5J_RESOURCE_H
// BUILD NO
#ifndef L5J_BUILDNO
#error L5J_BUILDNO is not defined!
#endif
// VERSION
#define L5J_VERSION_MAJOR 0
#define L5J_VERSION_MINOR 6
#define L5J_VERSION_PATCH 1
// ICON // ICON
#define ID_ICON_MAIN 1 #define ID_ICON_MAIN 1
@ -27,3 +40,5 @@
#define ID_STR_JAVAMAX 7 #define ID_STR_JAVAMAX 7
#define ID_STR_BITNESS 8 #define ID_STR_BITNESS 8
#define ID_STR_JAVAURL 9 #define ID_STR_JAVAURL 9
#endif