From d0cf2544d295a5c51dd00eb943f9ffc4d22edc5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Thu, 16 Apr 2026 21:02:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(desktop):=20DMG=20Finder=20=E7=BE=8E?= =?UTF-8?q?=E5=8C=96=E5=A4=B1=E8=B4=A5=E6=97=B6=E9=99=8D=E7=BA=A7=E4=B8=BA?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=B8=83=E5=B1=80=E8=80=8C=E9=9D=9E=E6=95=B4?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=20fail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit macOS Sequoia+ 对 Finder AppleScript 做了限制,"toolbar visible" "statusbar visible" 之类的 container window 属性不再支持,会返回 -10006 错误。在 set -e 下导致整个 build-macos-arm64.sh 炸掉,canonical 目录里没有 DMG。 美化失败不是 blocker —— DMG 本身是可用的,只是用户双击打开看到的 是 Finder 默认排布。这里: - osascript 非零退出只 warn,不让 set -e 中断脚本 - 顺手把 hdiutil detach 也加了 -force fallback,osascript 可能 把 volume 窗口打开了导致 normal detach 因 "Resource busy" 失败 Co-Authored-By: Claude Opus 4.6 (1M context) --- desktop/scripts/build-macos-arm64.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/desktop/scripts/build-macos-arm64.sh b/desktop/scripts/build-macos-arm64.sh index eaac4ccb..c471a6c1 100755 --- a/desktop/scripts/build-macos-arm64.sh +++ b/desktop/scripts/build-macos-arm64.sh @@ -187,8 +187,12 @@ build_canonical_dmg() { | grep -E '^/dev/' | head -1 | awk '{print $1}') mount_dir=$(hdiutil info | grep -E "${dev_name}" | tail -1 | awk '{$1=$2=""; print}' | xargs) - # Use AppleScript to set icon positions and window size - osascript <&2 + fi sync - hdiutil detach "${dev_name}" -quiet + # osascript 可能已经让 Finder 打开了 volume 窗口,正常 detach 可能因为 + # "Resource busy" 失败。失败时用 -force 二次尝试。 + hdiutil detach "${dev_name}" -quiet 2>/dev/null \ + || hdiutil detach "${dev_name}" -force -quiet # Convert to compressed read-only DMG hdiutil convert "${rw_dmg}" -format UDZO -o "${dmg_output}" -ov >/dev/null