#!/usr/bin/env bash # build-dmg.sh — 打包成 Mac 標準安裝檔(t194,leo:「你應該包成 Mac 安裝檔,我完整做一次」) # # DMG 裡放 Arcrun.app + Applications 捷徑 ⇒ 開啟就是「把 App 拖進去」的標準畫面。 # 為什麼一定要:使用者若直接在下載資料夾裡跑,自更新會蓋錯位置(t184 Oscar 的病); # 而且 macOS 對「不在 /Applications 的常駐程式」權限行為也不一致。 set -euo pipefail cd "$(dirname "$0")" VERSION="${VERSION:-$(git describe --tags --always --dirty 2>/dev/null || echo dev)}" echo "① 先確保 .app 是最新的" VERSION="$VERSION" bash build-mac.sh >/dev/null APP="build/bin/Arcrun.app" [ -d "$APP" ] || { echo "❌ 找不到 $APP" >&2; exit 1; } OUT="dist"; DMG="$OUT/Arcrun-${VERSION}.dmg" STAGE="$(mktemp -d)/Arcrun" mkdir -p "$OUT" "$STAGE" echo "② 放 app + Applications 捷徑" ditto "$APP" "$STAGE/Arcrun.app" ln -s /Applications "$STAGE/Applications" echo "③ 產 DMG(-fs HFS+:否則含空格/中文的名稱會被截斷)" rm -f "$DMG" hdiutil create -volname "Arcrun" -srcfolder "$STAGE" -fs HFS+ -ov -format UDZO "$DMG" >/dev/null rm -rf "$(dirname "$STAGE")" SIZE=$(ls -lh "$DMG" | awk '{print $5}') echo "✅ 完成:${DMG}(${SIZE})" echo echo "🔬 使用者流程:開 DMG → 把 Arcrun 拖到 Applications → 從啟動台開啟"