Files
spotx/scripts/build-appimage.sh
T
2026-09-14 22:34:33 +02:00

122 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
APP_NAME="SpotXInstaller"
RID="linux-x64"
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PUBLISH="$ROOT/bin/Release/net10.0/$RID/publish"
APPDIR="$ROOT/bin/Release/net10.0/$RID/AppDir"
OUTPUT="$ROOT/bin/Release/net10.0/$APP_NAME-x86_64.AppImage"
ICON="$ROOT/Assets/icons/SpotXInstaller.png"
echo
echo "========================================"
echo " Building SpotXInstaller AppImage"
echo "========================================"
echo
echo "[1/5] Cleaning..."
rm -rf "$PUBLISH"
rm -rf "$APPDIR"
rm -f "$OUTPUT"
echo
echo "[2/5] Publishing Linux application..."
dotnet publish "$ROOT/SpotXInstaller.csproj" \
-c Release \
-r "$RID" \
--self-contained true \
-p:PublishSingleFile=false \
-p:IncludeNativeLibrariesForSelfExtract=false \
-o "$PUBLISH"
echo
echo "[3/5] Creating AppDir..."
mkdir -p "$APPDIR/usr/bin"
mkdir -p "$APPDIR/usr/lib"
mkdir -p "$APPDIR/usr/share/applications"
cp -R "$PUBLISH/." "$APPDIR/usr/bin/"
echo
echo "[4/5] Creating AppImage files..."
# Проверяем наличие иконки
if [ ! -f "$ICON" ]; then
echo
echo "ERROR: Icon not found:"
echo "$ICON"
echo
exit 1
fi
# Иконка должна находиться в корне AppDir
cp "$ICON" "$APPDIR/SpotXInstaller.png"
# Проверяем, что иконка действительно скопирована
if [ ! -f "$APPDIR/SpotXInstaller.png" ]; then
echo
echo "ERROR: Failed to copy icon."
echo
exit 1
fi
cat > "$APPDIR/AppRun" <<'EOF'
#!/usr/bin/env bash
HERE="$(dirname "$(readlink -f "$0")")"
export LD_LIBRARY_PATH="$HERE/usr/bin:$HERE/usr/lib:${LD_LIBRARY_PATH:-}"
exec "$HERE/usr/bin/SpotXInstaller" "$@"
EOF
chmod +x "$APPDIR/AppRun"
cat > "$APPDIR/SpotXInstaller.desktop" <<'EOF'
[Desktop Entry]
Name=SpotX Installer
Comment=SpotX Spotify Installer
Exec=SpotXInstaller
Icon=SpotXInstaller
Terminal=false
Type=Application
Categories=Utility;
StartupNotify=true
EOF
cp "$APPDIR/SpotXInstaller.desktop" \
"$APPDIR/usr/share/applications/SpotXInstaller.desktop"
echo
echo "AppDir contents:"
echo " AppRun: $APPDIR/AppRun"
echo " Icon: $APPDIR/SpotXInstaller.png"
echo " Desktop: $APPDIR/SpotXInstaller.desktop"
echo
ls -lh "$APPDIR/SpotXInstaller.png"
echo
echo "[5/5] Building AppImage..."
appimagetool "$APPDIR" "$OUTPUT"
echo
echo "========================================"
echo " BUILD COMPLETE"
echo "========================================"
echo
echo "AppImage:"
echo "$OUTPUT"
echo
ls -lh "$OUTPUT"
echo