#!/bin/bash # Linux deployment script # Usage: ./scripts/deploy-linux.sh "EZ4Connect" "EZ4Connect" "build" "x86_64" "false" set -euo pipefail TARGET_NAME="${1:-EZ4Connect}" DISPLAY_NAME="${2:-EZ4Connect}" BUILD_DIR="${3:-build}" ARCH="${4:-x86_64}" NIGHTLY="${5:-false}" # Determine AppImage tool architecture if [ "$ARCH" = "x86_64" ]; then APPIMAGE_ARCH="x86_64" else APPIMAGE_ARCH="aarch64" fi # Install dependencies sudo apt-get install -y libxcb-cursor0 fuse # Download linuxdeploy tools if not present if [ ! -f linuxdeploy ]; then wget -O linuxdeploy "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-$APPIMAGE_ARCH.AppImage" fi if [ ! -f linuxdeploy-plugin-qt ]; then wget -O linuxdeploy-plugin-qt "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-$APPIMAGE_ARCH.AppImage" fi chmod a+x linuxdeploy linuxdeploy-plugin-qt # Create AppDir structure mkdir -p AppDir/usr/bin AppDir/usr/lib AppDir/usr/share/applications AppDir/usr/share/icons/hicolor/scalable/apps # Copy executable cp "$BUILD_DIR/$TARGET_NAME" AppDir/usr/bin/ # Copy libnss3 libraries (for QtWebEngine in Ubuntu 22.04) # Ubuntu 24.04 move them to /usr/lib/aarch64-linux-gnu or /usr/lib/x86_64-linux-gnu, so no need to special case them if [ -d "/usr/lib/$APPIMAGE_ARCH-linux-gnu/nss" ]; then cp -R "/usr/lib/$APPIMAGE_ARCH-linux-gnu/nss/" AppDir/usr/lib/ fi # Download and extract zju-connect ZJU_ARCH="${ARCH}" if [ "$ARCH" = "x86_64" ]; then ZJU_ARCH="amd64" fi ZJU_RELEASE_PATH="latest/download" if [ "$NIGHTLY" = "true" ]; then ZJU_RELEASE_PATH="download/nightly" fi wget -O "zju-connect-linux-$ZJU_ARCH.zip" "https://github.com/Mythologyli/zju-connect/releases/$ZJU_RELEASE_PATH/zju-connect-linux-$ZJU_ARCH.zip" unzip -o "zju-connect-linux-$ZJU_ARCH.zip" cp zju-connect AppDir/usr/bin/ rm "zju-connect-linux-$ZJU_ARCH.zip" # Copy icon cp resource/icon.png "AppDir/usr/share/icons/hicolor/scalable/apps/$TARGET_NAME.png" # Create desktop file cat > "AppDir/usr/share/applications/$TARGET_NAME.desktop" <