App Store - это удобно, но не всегда подходит. Например, когда ты делаешь экспериментальное приложение (а еще санкции), как мой ScreenCat - пиксельного кота, который живет на экране. В таком случае тебе нужен свой способ доставки обновлений.
Вот как я это реализовал:
🧩 Использую Sparkle - это нативный фреймворк для автообновлений на macOS. Он встроен в .app и сам проверяет наличие новых версий. Работает по принципу: приложение → скачивает XML-фид → если есть обновление → скачивает
.dmg и ставит.🌐 Фид и обновления лежат на GitHub Pages. Это удобно: репозиторий + GitHub Actions + статический хостинг — и всё готово. Например, фид доступен по адресу:
https://github.com/barredewe/screencat-updates/releases/latest/download/appcast.xml
🛠 Процесс автоматизирован. Я собрал
Makefile, который:1. Создает
.dmg2. Подписывает и нотаризует билд
3. Выкладывает в релиз на GitHub
4. Обновляет appcast.xml
5. Пушит его в GitHub Pages
6. Выкладывает
.app в itch.io⚠️ Главное — правильно подписывать .app и .dmg, иначе Gatekeeper не даст установить. Sparkle тоже проверяет подписи.
🔐 И да, всё это работает без App Store, обновления скачиваются и ставятся прямо внутри приложения.
