diff --git a/BLTS-Tracker.dmg b/BLTS-Tracker.dmg new file mode 100644 index 0000000..cd100ac Binary files /dev/null and b/BLTS-Tracker.dmg differ diff --git a/README.md b/README.md index cd6ab30..daeedf0 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,17 @@ open "/Users/autli/Documents/blts_tracker/BLTS Tracker.app" Если вы изменили код или хотите пересобрать приложение: ```bash -cd /Users/autli/Documents/blts_tracker ./build_app.sh ``` +### 💿 Создание DMG-инсталлятора + +Для создания установочного образа `.dmg` (Drag-and-Drop в `Applications`): +```bash +./create_dmg.sh +``` +В корне проекта появится готовый файл `BLTS-Tracker.dmg`. + --- ## 📂 Структура проекта diff --git a/create_dmg.sh b/create_dmg.sh new file mode 100755 index 0000000..b87cf9e --- /dev/null +++ b/create_dmg.sh @@ -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