Need help with AppUpdater?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

mxcl
201 Stars 4 Forks 21 Commits 1 Opened issues

Description

Automatically update open source macOS apps from GitHub releases.

Services available

!
?

Need anything else?

Contributors list

No Data

AppUpdater

A simple app-updater for macOS, checks your GitHub releases for a binary asset once a day and silently updates your app.

Caveats

  • We make no allowances for ensuring your app is not being actively used by the user at the time of update. PR welcome.
  • Assets must be named:
    \(reponame)-\(semanticVersion).ext
    .
  • Will not work if App is installed as a root user.

Features

  • Full semantic versioning support: we understand alpha/beta etc.
  • We check the code-sign identity of the download matches the app that is running before doing the update. Thus if you don’t code-sign I’m not sure what would happen.
  • We support zip files or tarballs.

Support mxcl

Hey there, I’m Max Howell. I’m a prolific producer of open source software and probably you already use some of it (for example, I created

brew
). I work full-time on open source and it’s hard; currently I earn less than minimum wage. Please help me continue my work, I appreciate it 🙏🏻

Other ways to say thanks.

Usage

package.dependencies.append(.package(url: "https://github.com/mxcl/AppUpdater.git", from: "1.0.0"))

Then:

import AppUpdater

@NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate {

let updater = AppUpdater(owner: "your-github-username", repo: "your-github-repo-name")

//NOTE this is optional, the `AppUpdater` object schedules a daily update check itself    
@IBAction func userRequestedAnExplicitUpdateCheck() {
    updater.check().catch(policy: .allErrors) { error in
        if error.isCancelled {
            // promise is cancelled if we are already up-to-date
        } else {
            // show alert for this error
        }
    }
}

}

Alternatives

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.