122 lines
2.5 KiB
Bash
Executable File
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
|