build: add BLTS-Tracker.dmg and automated DMG build script
This commit is contained in:
parent
eb584ba22b
commit
bb19925934
3 changed files with 66 additions and 1 deletions
BIN
BLTS-Tracker.dmg
Normal file
BIN
BLTS-Tracker.dmg
Normal file
Binary file not shown.
|
|
@ -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
58
create_dmg.sh
Executable 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
|
||||||
Loading…
Add table
Reference in a new issue