Проверка Sparkle appcast
Вставьте appcast, который ваше приложение читает по SUFeedURL. Он читается прямо здесь, на этой странице, и ничего не загружается и не отправляется.
Попробуйте пример:
Что делает
Sparkle это фреймворк обновлений, которым пользуется большинство приложений для Mac, продающихся вне Mac App Store. Ваше приложение читает небольшой RSS-файл, appcast, и каждый <item> в нём это один релиз. Этот инструмент читает вставленный вами appcast и проверяет каждый релиз по собственной документации Sparkle по публикации: есть ли версия, которую Sparkle может сравнить, загрузка по https с размером и подписью EdDSA, минимальная версия macOS и дата. Он также ловит ошибки, ломающие всю ленту, например отсутствующее пространство имён Sparkle или голый & в адресе загрузки.
Как выглядит хороший релиз
<item>
<title>Version 2.1</title>
<pubDate>Sat, 07 Nov 2026 09:30:00 +0000</pubDate>
<sparkle:version>210</sparkle:version>
<sparkle:shortVersionString>2.1</sparkle:shortVersionString>
<sparkle:minimumSystemVersion>14.0.0</sparkle:minimumSystemVersion>
<enclosure url="https://yourapp.com/YourApp-2.1.zip" length="8412337"
type="application/octet-stream" sparkle:edSignature="..."/>
</item>Тегу <rss> в начале нужен xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle". Инструмент Sparkle generate_appcast пишет большую часть этого за вас, включая подпись и length.
Что означает каждый результат
| Отметка | Что это значит |
|---|---|
| Исправить | Sparkle не может прочитать ленту, сравнить релиз или установить его. |
| Вид | Работает, но релиз может дойти до Mac, которые не смогут его запустить, или в нём нет того, что просит документация Sparkle. |
| OK | Настроено так, как описывает документация Sparkle. |
| Заметка | Настройка, о которой стоит знать, например канал или критическое обновление. |
Источники: Sparkle, Publishing an update, документация Sparkle и Sparkle, EdDSA migration, всё прочитано 8 ноября 2026 г..
Как это работает
Это несколько простых текстовых правил, работающих на этой странице. Она не скачивает ваше обновление, поэтому не может проверить, что подпись подходит к вашему ключу, а length совпадает с файлом: Sparkle делает и то и другое при установке. Она также не загружает вашу ленту, так что вставляйте текст, а не адрес. sparkle:hardwareRequirements требует Sparkle 2.9 или новее в той копии вашего приложения, которая уже есть у людей. Более старые копии это игнорируют. Ничего из вставленного не сохраняется и не отправляется.
Вопросы
Что такое Sparkle appcast?
RSS-файл на вашем сервере, перечисляющий релизы вашего приложения для Mac. Sparkle внутри вашего приложения читает его по SUFeedURL из вашего Info.plist и предлагает любой релиз новее установленного.
Нужна ли каждому обновлению Sparkle подпись EdDSA?
Документация Sparkle говорит, что обновления нужно подписывать, а generate_appcast подписывает их за вас. Приложение с SUPublicEDKey в Info.plist проверяет подпись, прежде чем что-либо устанавливать.
Как не дать обновлению дойти до Mac, которые не смогут его запустить?
Добавьте sparkle:minimumSystemVersion в релиз из трёх частей, например 14.0.0. Начиная с Sparkle 2.9 можно также добавить sparkle:hardwareRequirements со значением arm64 для сборки, которая работает только на Apple silicon.
Какой номер версии сравнивает Sparkle?
sparkle:version сравнивается с CFBundleVersion приложения, которое есть у пользователя. sparkle:shortVersionString это только то, что видят люди.
Отправляется ли то, что я вставляю, куда-нибудь?
Нет. Текст читается на этой странице, ничего не загружается, не отправляется и не сохраняется.