build: add BLTS-Tracker.dmg and automated DMG build script

This commit is contained in:
Nikita 2026-10-07 08:05:28 +05:00
parent eb584ba22b
commit bb19925934
3 changed files with 66 additions and 1 deletions

BIN
BLTS-Tracker.dmg Normal file

Binary file not shown.

View file

@ -39,10 +39,17 @@ open "/Users/autli/Documents/blts_tracker/BLTS Tracker.app"
Если вы изменили код или хотите пересобрать приложение: Если вы изменили код или хотите пересобрать приложение:
```bash ```bash
cd /Users/autli/Documents/blts_tracker
./build_app.sh ./build_app.sh
``` ```
### 💿 Создание DMG-инсталлятора
Для создания установочного образа `.dmg` (Drag-and-Drop в `Applications`):
```bash
./create_dmg.sh
```
В корне проекта появится готовый файл `BLTS-Tracker.dmg`.
--- ---
## 📂 Структура проекта ## 📂 Структура проекта

58
create_dmg.sh Executable file
View file

@ -0,0 +1,58 @@
#!/usr/bin/env bash
set -e
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
APP_NAME="BLTS Tracker"
APP_BUNDLE="$DIR/$APP_NAME.app"
DMG_NAME="BLTS-Tracker.dmg"
OUTPUT_DMG="$DIR/$DMG_NAME"
STAGING_DIR="$DIR/.build/dmg_staging"
echo "🚀 [1/4] Компиляция актуальной версии приложения..."
"$DIR/build_app.sh"
echo "📦 [2/4] Подготовка структуры DMG диска..."
rm -rf "$STAGING_DIR"
mkdir -p "$STAGING_DIR"
# Копируем .app в папку сборки
cp -R "$APP_BUNDLE" "$STAGING_DIR/"
# Создаем символическую ссылку на /Applications для Drag-and-Drop
ln -s /Applications "$STAGING_DIR/Applications"
# Устанавливаем иконку тома, если доступна
if [ -f "$DIR/AppIcon.icns" ]; then
cp "$DIR/AppIcon.icns" "$STAGING_DIR/.VolumeIcon.icns"
if command -v SetFile >/dev/null 2>&1; then
SetFile -c icnC "$STAGING_DIR/.VolumeIcon.icns" 2>/dev/null || true
SetFile -a C "$STAGING_DIR" 2>/dev/null || true
fi
fi
echo "💿 [3/4] Создание сжатого DMG образа ($DMG_NAME)..."
rm -f "$OUTPUT_DMG"
hdiutil create \
-volname "$APP_NAME" \
-srcfolder "$STAGING_DIR" \
-ov \
-format UDZO \
-imagekey zlib-level=9 \
"$OUTPUT_DMG"
echo "🧹 [4/4] Очистка временных файлов..."
rm -rf "$STAGING_DIR"
if [ -f "$OUTPUT_DMG" ]; then
DMG_SIZE=$(du -h "$OUTPUT_DMG" | cut -f1)
echo ""
echo "=================================================="
echo "🎉 Успешно создан DMG файл для установки!"
echo "📁 Путь: $OUTPUT_DMG"
echo "📊 Размер: $DMG_SIZE"
echo "=================================================="
else
echo "❌ Ошибка: не удалось создать $OUTPUT_DMG"
exit 1
fi