#!/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