Repository navigation
build(release): open the DMG to a laid-out Finder window - #3990
Merged
Merged
Conversation
The disk image opened in whatever view the Mac defaulted to, with Applications sorted before TablePro, so the drag ran right to left. diskutil image create from a folder also leaves .DS_Store out, so no layout could ship. dmg.sh builds an HFS+ volume named TablePro with diskutil, fills it while mounted with the app, the /Applications link, the app's icon as the volume icon and a .DS_Store Finder wrote, converts it to a read-only ULFO image, and checks what it built. The layout sets no background picture, so the window follows Light and Dark. package.sh signs the image with an identifier of its own.
This was referenced Nov 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
apple/scripts/release/dmg.sh buildmakes it with stock tools only.diskutilformats a blank image as HFS+, which Apple DTS recommends for a laid-out volume anddiskutil imagecannot create directly. The volume is filled while mounted,.fseventsdis removed, and the image is converted to read-only ULFO.diskutil image create from <folder>, whichpackage.shused, leaves.DS_Storeout, so the old path could never carry a layout.apple/scripts/release/dmg.DS_Store, is a file Finder wrote.dmg.sh layoutregenerates it on a maintainer's Mac and writes the same bytes each run; CI never drives Finder. It sets no background picture, so the window follows Light and Dark, and holds no alias, so it works under any mount name.TableProinstead ofTablePro <version>. The file keeps itsTablePro-<version>.dmgname, so the cask, the website and the docs are unaffected.Assets.carwithiconutil. The custom-icon flag is set throughcom.apple.FinderInfo, the way Apple DTS documents.package.shsigns the image with--identifier com.TablePro.dmg, as Apple's "Packaging Mac software for distribution" asks.dmg.shchecks every image it builds: HFS+, the volume name, exactly four items, the committed.DS_Store, the volume icon flag, and an app identical to the one built.releasesuite now watchesdmg.shanddmg.DS_Store, andapple/CONTRIBUTING.mdsays how to change the layout.Test plan
VERSION=0.0.0-dev scripts/release/package.sh app --unsignedon macOS 27.0.1 with a copy of TablePro 0.83.1: every check passes, and the image opens to the window above.Assets.car) leaves nothing attached.dmg.sh layoutrun twice writes the same bytes.codesign --sign - --identifier com.TablePro.dmgon the image, thencodesign -dv, printsIdentifier=com.TablePro.dmg.python3 -m unittest discover -s scripts/ci -p test_detect_changed_paths.pypasses with the two new paths in the release case.xcode-27runner.