diff --git a/scripts/linux/pkg_x86_64.sh b/scripts/linux/pkg_x86_64.sh index f88532f..84edc77 100644 --- a/scripts/linux/pkg_x86_64.sh +++ b/scripts/linux/pkg_x86_64.sh @@ -1,16 +1,18 @@ #!/bin/bash set -e +PKG_NAME="crossdesk" APP_NAME="CrossDesk" + APP_VERSION="$1" ARCHITECTURE="amd64" MAINTAINER="Junkun Di " DESCRIPTION="A simple cross-platform remote desktop client." -DEB_DIR="$APP_NAME-$APP_VERSION" +DEB_DIR="${PKG_NAME}-${APP_VERSION}" DEBIAN_DIR="$DEB_DIR/DEBIAN" -BIN_DIR="$DEB_DIR/usr/local/bin" -CERT_SRC_DIR="$DEB_DIR/opt/$APP_NAME/certs" +BIN_DIR="$DEB_DIR/usr/bin" +CERT_SRC_DIR="$DEB_DIR/opt/$PKG_NAME/certs" ICON_BASE_DIR="$DEB_DIR/usr/share/icons/hicolor" DESKTOP_DIR="$DEB_DIR/usr/share/applications" @@ -18,19 +20,21 @@ rm -rf "$DEB_DIR" mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_DIR" "$DESKTOP_DIR" -cp build/linux/x86_64/release/crossdesk "$BIN_DIR" +cp build/linux/x86_64/release/crossdesk "$BIN_DIR/$PKG_NAME" +chmod +x "$BIN_DIR/$PKG_NAME" + +ln -s "$PKG_NAME" "$BIN_DIR/$APP_NAME" + cp certs/crossdesk.cn_root.crt "$CERT_SRC_DIR/crossdesk.cn_root.crt" for size in 16 24 32 48 64 96 128 256; do mkdir -p "$ICON_BASE_DIR/${size}x${size}/apps" cp "icons/linux/crossdesk_${size}x${size}.png" \ - "$ICON_BASE_DIR/${size}x${size}/apps/crossdesk.png" + "$ICON_BASE_DIR/${size}x${size}/apps/${PKG_NAME}.png" done -chmod +x "$BIN_DIR/crossdesk" - cat > "$DEBIAN_DIR/control" << EOF -Package: $APP_NAME +Package: $PKG_NAME Version: $APP_VERSION Architecture: $ARCHITECTURE Maintainer: $MAINTAINER @@ -43,13 +47,13 @@ Priority: optional Section: utils EOF -cat > "$DESKTOP_DIR/$APP_NAME.desktop" << EOF +cat > "$DESKTOP_DIR/$PKG_NAME.desktop" << EOF [Desktop Entry] Version=$APP_VERSION Name=$APP_NAME Comment=$DESCRIPTION -Exec=/usr/local/bin/crossdesk -Icon=crossdesk +Exec=/usr/bin/$PKG_NAME +Icon=$PKG_NAME Terminal=false Type=Application Categories=Utility; @@ -57,62 +61,59 @@ EOF cat > "$DEBIAN_DIR/postrm" << EOF #!/bin/bash -# post-removal script for $APP_NAME - set -e if [ "\$1" = "remove" ] || [ "\$1" = "purge" ]; then - rm -f /usr/local/bin/crossdesk - rm -f /usr/share/applications/$APP_NAME.desktop - rm -rf /opt/$APP_NAME + rm -f /usr/bin/$PKG_NAME || true + rm -f /usr/bin/$APP_NAME || true + rm -f /usr/share/applications/$PKG_NAME.desktop || true + rm -rf /opt/$PKG_NAME/certs || true for size in 16 24 32 48 64 96 128 256; do - rm -f /usr/share/icons/hicolor/\${size}x\${size}/apps/crossdesk.png + rm -f /usr/share/icons/hicolor/\${size}x\${size}/apps/$PKG_NAME.png || true done fi exit 0 EOF - chmod +x "$DEBIAN_DIR/postrm" cat > "$DEBIAN_DIR/postinst" << 'EOF' #!/bin/bash set -e -CERT_SRC="/opt/CrossDesk/certs" +CERT_SRC="/opt/crossdesk/certs" CERT_FILE="crossdesk.cn_root.crt" for user_home in /home/*; do [ -d "$user_home" ] || continue username=$(basename "$user_home") - config_dir="$user_home/.config/CrossDesk/certs" + config_dir="$user_home/.config/crossdesk/certs" target="$config_dir/$CERT_FILE" if [ ! -f "$target" ]; then - mkdir -p "$config_dir" - cp "$CERT_SRC/$CERT_FILE" "$target" - chown -R "$username:$username" "$user_home/.config/CrossDesk" + mkdir -p "$config_dir" || true + cp "$CERT_SRC/$CERT_FILE" "$target" || true + chown -R "$username:$username" "$user_home/.config/crossdesk" || true echo "✔ Installed cert for $username at $target" fi done if [ -d "/root" ]; then - config_dir="/root/.config/CrossDesk/certs" - mkdir -p "$config_dir" - cp "$CERT_SRC/$CERT_FILE" "$config_dir/$CERT_FILE" - chown -R root:root /root/.config/CrossDesk + config_dir="/root/.config/crossdesk/certs" + mkdir -p "$config_dir" || true + cp "$CERT_SRC/$CERT_FILE" "$config_dir/$CERT_FILE" || true + chown -R root:root /root/.config/crossdesk || true fi exit 0 EOF - chmod +x "$DEBIAN_DIR/postinst" dpkg-deb --build "$DEB_DIR" -OUTPUT_FILE="crossdesk-linux-x86_64-$APP_VERSION.deb" +OUTPUT_FILE="${PKG_NAME}-${APP_VERSION}-${ARCHITECTURE}.deb" mv "$DEB_DIR.deb" "$OUTPUT_FILE" rm -rf "$DEB_DIR" -echo "Deb package for $OUTPUT_FILE created successfully." \ No newline at end of file +echo "✅ Deb package created: $OUTPUT_FILE" \ No newline at end of file