Skip to content

Ship the app as a drag-to-Applications disk image, and the tools as a zip - #68

Merged
evandhoffman merged 2 commits into
mainfrom
dmg-release
Sep 25, 2026
Merged

evandhoffman merged 2 commits into
mainfrom
dmg-release

Conversation

@evandhoffman

Copy link
Copy Markdown
Contributor

A release now ships the app as a drag-to-Applications disk image, and the headless tools in a zip of their own.

File Holds
monitor-<version>.dmg monitor.app beside a link to /Applications
monitor-tools-<version>.zip monitord, monitor-exporter, install-exporter.sh

Each has a .sha256 beside it. The tools stay out of the image: a drag window offers one gesture, and binaries beside the app would make it unclear what to drag.

How it is built

  1. Scripts/make-app.sh builds and signs everything, as before.
  2. Scripts/notarize.sh .build/package submits the app and the tools in one throwaway zip and staples the app. It no longer builds the published zip.
  3. Scripts/make-dmg.sh (new) puts the stapled app in the image, then signs, notarizes and staples the image.
  4. package.yml zips the tools.

The app is stapled before it goes into the image, so the copy dragged out carries its own ticket and opens offline. The image carries its own ticket for mounting it.

No background picture or icon positions. Those need a .DS_Store that only Finder writes. The plain window still shows the app and the Applications link side by side.

Also fixed

  • ._ files in the zip. The runner tags every file with com.apple.provenance, and ditto stored it as a ._ file beside each one. The v1.8.0 zip has ten of them; unzip in Terminal leaves them behind. The tools zip is now made with --norsrc --noextattr --noacl. Signatures are inside the binaries, so nothing is lost.
  • "Apple silicon or Intel" in the release notes. Every release binary is arm64 only (lipo -archs), so the notes and README now say Apple silicon.

Checked

  • Locally, signed and notarized for real: both notary submissions accepted. Mounted the image with -nobrowse: it holds Applications -> /Applications and monitor.app; the app inside is stapled and Gatekeeper reports Notarized Developer ID.
  • On the runner: package.yml dispatched on this branch, twice. It publishes nothing and uploads the files as an artifact. Downloaded the second run's artifact: checksums match, the image passes spctl --type open as Notarized Developer ID, and the tools zip lists exactly the three files.
  • hdiutil prints a deprecation warning on macOS 27. It still works; make-dmg.sh says why it stays and what replaces it.

Merging ships the first release in the new shape.

A release now has two files. monitor-<version>.dmg holds monitor.app
beside a link to /Applications, so installing it is one drag.
monitor-tools-<version>.zip holds monitord, monitor-exporter and
install-exporter.sh. The tools stay out of the image: a drag window
offers one gesture, and binaries beside the app would make it unclear
what to drag.

notarize.sh now notarizes the package in a throwaway zip and staples the
app before anything is packaged, so the app dragged out of the image
carries its own ticket and opens offline. make-dmg.sh builds the image
from the stapled app, then signs, notarizes and staples the image.

The release notes no longer say Intel: every release binary is arm64.
@evandhoffman evandhoffman added enhancement New feature or request release:minor Merging this bumps the minor version labels Sep 25, 2026
@evandhoffman
evandhoffman merged commit 2009c08 into main Sep 25, 2026
3 checks passed
@evandhoffman
evandhoffman deleted the dmg-release branch September 25, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request release:minor Merging this bumps the minor version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant