Skip to content

In-app updates via AppUpdater #36

Description

@trsdn

Goal

Ptions+ should update itself from GitHub Releases.

Specific to this repository

  • Broker profile: ptionsplus (Xcode). The artifacts today are Ptions+.dmg / Ptions+.zip, with no version.
    • AppUpdater needs PtionsPlus-<semver>.dmg (the repository name), so add PtionsPlus-{version}.dmg as a copy_of Ptions+.dmg.
    • The mounted DMG must contain exactly one app with the installed app's file name (Ptions+.app). Check that AppUpdater handles the + in the bundle name.
  • Accessibility / Input Monitoring: these grants are tied to the code signature. Keep the Developer ID signature stable across updates.
  • Before installing, release the event tap so button remapping doesn't die mid-swap.
  • Xcode build: declare AppUpdater_AppUpdater.bundle, and add a broker lock with -onlyUsePackageVersionsFromResolvedFile (see feat: AppUpdater support for openlens, with release publishing macos-notarization-broker#43).
  • release.yml: it must not upload a DMG under the updater's name.

Reference implementation

This is the same setup as OpenLens, OpenDefendrWatchr, OpenZombr and OpenConnct, all released on 2026-09-16:

To do

  • Add AppUpdater 4.1.2 (exact version) and commit Package.resolved.
  • Add an UpdateManager and menu items, and stop the app's work before installing.
  • Broker: add the dependency lock, the resource bundle declaration if needed, and the PtionsPlus-{version}.dmg copy_of artifact.
  • Release with scripts/request.sh ptionsplus vX.Y.Z --publish.
  • After two releases, test a real update on a Mac other than the build machine.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions