Files
quality_recticel/tray/ant/unix/unix-launcher.sh.in
Scheianu Ionut c7266c32ee Add custom QZ Tray fork with pairing key authentication
- Custom fork of QZ Tray 2.2.x with certificate validation bypassed
- Implemented pairing key (HMAC) authentication as replacement
- Modified files: PrintSocketClient.java (certificate check disabled)
- New files: PairingAuth.java, PairingConfigDialog.java
- Excluded build artifacts (out/, lib/javafx*) from repository
- Library JARs included for dependency management
2025-10-02 02:27:45 +03:00

138 lines
4.6 KiB
Bash

#!/usr/bin/env bash
# Shared launcher for MacOS and Linux
# Parameters -- if any -- are passed on to the app
# Halt on first error
set -e
# Configured by ant at build time
JAVA_MIN="${javac.target}"
LAUNCH_OPTS="${launch.opts}"
ABOUT_TITLE="${project.name}"
PROPS_FILE="${project.filename}"
# Get working directory
DIR=$(cd "$(dirname "$0")" && pwd)
pushd "$DIR" &> /dev/null
# Console colors
RED="\\x1B[1;31m";GREEN="\\x1B[1;32m";YELLOW="\\x1B[1;33m";PLAIN="\\x1B[0m"
# Statuses
SUCCESS=" [${GREEN}success${PLAIN}]"
FAILURE=" [${RED}failure${PLAIN}]"
WARNING=" [${YELLOW}warning${PLAIN}]"
MESSAGE=" [${YELLOW}message${PLAIN}]"
echo "Looking for Java..."
# Honor JAVA_HOME
if [ -n "$JAVA_HOME" ]; then
echo -e "$WARNING JAVA_HOME was detected, using $JAVA_HOME..."
PATH="$JAVA_HOME/bin:$PATH"
fi
# Always prefer relative runtime/jre
if [[ "$DIR" == *"/Contents/MacOS"* ]]; then
PATH="$DIR/../PlugIns/Java.runtime/Contents/Home/bin:$PATH"
else
PATH="$DIR/runtime/bin:$DIR/jre/bin:$PATH"
fi
# Check for user overridable launch options
if [ -n "${dollar}${launch.overrides}" ]; then
echo -e "$MESSAGE Picked up additional launch options: ${dollar}${launch.overrides}"
LAUNCH_OPTS="$LAUNCH_OPTS ${dollar}${launch.overrides}"
fi
# Fallback on some known locations
if ! command -v java > /dev/null ; then
if [[ "$OSTYPE" == "darwin"* ]]; then
# Apple: Fallback on system-wide install
DEFAULTS_READ=$(defaults read ${apple.bundleid} ${launch.overrides} 2>/dev/null) || true
if [ -n "$DEFAULTS_READ" ]; then
echo -e "$MESSAGE Picked up additional launch options: $DEFAULTS_READ"
LAUNCH_OPTS="$LAUNCH_OPTS $DEFAULTS_READ"
fi
MAC_PRIMARY="/usr/libexec/java_home"
MAC_FALLBACK="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin"
echo "Trying $MAC_PRIMARY..."
if "$MAC_PRIMARY" -v $JAVA_MIN+ &>/dev/null; then
echo -e "$SUCCESS Using \"$MAC_PRIMARY -v $JAVA_MIN+ --exec\" to launch $ABOUT_TITLE"
java() {
"$MAC_PRIMARY" -v $JAVA_MIN+ --exec java "$@"
}
elif [ -d "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin" ]; then
echo -e "$WARNING No luck using $MAC_PRIMARY"
echo "Trying $MAC_FALLBACK..."
java() {
"$MAC_FALLBACK/java" "$@"
}
fi
else
# Linux/Unix: Fallback on known install location(s)
PATH="$PATH:/usr/java/latest/bin/"
fi
fi
if command -v java > /dev/null ; then
echo -e "$SUCCESS Java was found: $(command -v java)"
else
echo -e "$FAILURE Please install Java $JAVA_MIN or higher to continue"
exit 1
fi
# Verify the bundled Java version actually works
if test -f "$DIR/runtime/bin/java" ; then
echo "Verifying the bundled Java version can run on this platform..."
if "$DIR/runtime/bin/java" -version &> /dev/null ; then
echo -e "$SUCCESS Bundled Java version is OK"
else
echo -e "$FAILURE Sorry, this version of $ABOUT_TITLE cannot be installed on this system:\n"
file "$DIR/runtime/bin/java"
exit 1
fi
fi
# Make sure Java version is sufficient
echo "Verifying the Java version is $JAVA_MIN+..."
curver=$(java -version 2>&1 | grep -i version | awk -F"\"" '{ print $2 }' | awk -F"." '{ print $1 "." $2 }')
minver="$JAVA_MIN"
if [ -z "$curver" ]; then
curver="0.0"
fi
desired=$(echo -e "$minver\n$curver")
actual=$(echo "$desired" |sort -t '.' -k 1,1 -k 2,2 -n)
if [ "$desired" != "$actual" ]; then
echo -e "$FAILURE Please install Java $JAVA_MIN or higher to continue"
exit 1
else
echo -e "$SUCCESS Java $curver was detected"
fi
jigsaw=$(echo -e "9.0\n$curver")
actual=$(echo "$jigsaw" |sort -t '.' -k 1,1 -k 2,2 -n)
if [ "$jigsaw" != "$actual" ]; then
echo -e "$SUCCESS Java < 9.0, skipping jigsaw options"
else
echo -e "$SUCCESS Java >= 9.0, adding jigsaw options"
LAUNCH_OPTS="$LAUNCH_OPTS ${launch.jigsaw}"
if [[ "$OSTYPE" == "darwin"* ]]; then
LAUNCH_OPTS="$LAUNCH_OPTS ${apple.launch.jigsaw}"
else
LAUNCH_OPTS="$LAUNCH_OPTS ${linux.launch.jigsaw}"
fi
fi
if command -v java &>/dev/null; then
echo -e "$ABOUT_TITLE is starting..."
if [[ "$OSTYPE" == "darwin"* ]]; then
java $LAUNCH_OPTS -Xdock:name="$ABOUT_TITLE" -Xdock:icon="$DIR/../Resources/$PROPS_FILE.icns" -jar -Dapple.awt.UIElement="true" -Dapple.awt.enableTemplateImages="${java.mask.tray}" -Dapple.awt.application.appearance="system" "$DIR/../Resources/${prefix}$PROPS_FILE.jar" -NSRequiresAquaSystemAppearance False "$@"
else
java $LAUNCH_OPTS -jar "$PROPS_FILE.jar" "$@"
fi
else
echo -e "$FAILURE Java $JAVA_MIN+ was not found"
fi
popd &>/dev/null