I'm currently trying to develop a GitHub Action which creates a release of a macOS app. This app is also using Sparkle to automatically install new updates.
What I managed to do, following the docs:
- A comment on a pull request to
master
starts the GitHub workflow - The project is archived and exported as a .app.
- The .app gets zipped
- My private Sparkle key gets imported from GitHub secrets to a file
- Sparkle's tool
generate_appcast
uses that key to update anappcast.xml
, which is then put in the directory used by GitHub Pages. - The PR is merged, which triggers the rebuild of pages. The updated appcast gets online and checking for updates shows the latest release, as expected.
However, when trying to install that latest release I get an Update Error, saying: The update is improperly signed and could not be validated. Please try again later or contact the app developer
.
I've tried removing the SUPublicEDKey
from the project and creating the appcast manually, leaving so the sparkle:edSignature
out. This worked as expected, with the latest update getting installed from the app.
Some important outputs:
> codesign --deep -vvv --verify testSparkleRelease.app
...
testSparkleRelease.app: valid on disk
testSparkleRelease.app: satisfies its Designated Requirement
> spctl -a -t exec -vv testSparkleRelease.app
testSparkleRelease.app: rejected
origin=Apple Development: Alexander Perathoner (K3WW8XS***)
I thought that maybe it should be using the Apple Distribution certificate, so I tried importing that one too, and using for the export of the archive — but got the same error.
The entire signing process happens on the GitHub runners that builds the app, following this guide.
Here's the entire project: https://github.com/AlexPerathoner/SparkleReleaseTest, in particular the appcast.xml, and the workflow file
CodePudding user response:
The entire procedure is correct.
The error was in the download link prefix, which didn’t parse correctly. So Sparkle was able to find the presence of a new update, but couldn’t download it - and returned a signing issue.