fix(build): improve DMG styling stability and Finder volume discovery

- Add delay and explicit existence check for mounted volume before styling
- Implement resilient .app selector in AppleScript to handle naming mismatches
- Gracefully skip styling if volume is not visible to Finder
This commit is contained in:
Haitao Pan 2026-04-19 15:21:58 +08:00
parent 41163ec295
commit 81bb1adff0

View File

@ -97,6 +97,15 @@ if [[ -d "$MOUNT_POINT" ]]; then
sleep 2
fi
hdiutil attach "$DMG_RW_PATH" -mountpoint "$MOUNT_POINT" -nobrowse
sleep 2 # Wait for mount to stabilize
if [[ "${SKIP_DMG_STYLE:-0}" != "1" ]]; then
# Verify volume is actually available for Finder
if ! osascript -e "tell application \"Finder\" to exists disk \"$DMG_VOLUME_NAME\"" 2>/dev/null | grep -q "true"; then
echo "WARN: Volume $DMG_VOLUME_NAME not visible to Finder, skipping styling" >&2
SKIP_DMG_STYLE=1
fi
fi
if [[ "${SKIP_DMG_STYLE:-0}" != "1" ]]; then
mkdir -p "$MOUNT_POINT/.background"
@ -134,7 +143,15 @@ tell application "Finder"
set label position of viewOptions to bottom
set shows item info of viewOptions to false
set shows icon preview of viewOptions to true
try
set position of item "${APP_NAME}.app" of container window to {$(to_applescript_pair "$DMG_APP_POS")}
on error
try
set position of (first item of container window whose name ends with ".app") to {$(to_applescript_pair "$DMG_APP_POS")}
on error
log "Could not set position of .app"
end try
end try
set position of item "Applications" of container window to {$(to_applescript_pair "$DMG_APPS_POS")}
update without registering applications
delay 2