Is any stack developer here who would kindly advise on setting up Sparkle auto-updater for stacks?
Thank you, Joe. This was helpful.
But my problem is more basic. I have built my first stack and I am trying to figure out why my Sparkle appcast does not actually update anything.
My stack shows up in Library Updates. After clicking “Update”, it looks like process of updating happens. After that, no more updates are available. So far, everything seems to work. But in the end, stack version remains same as before silently-failing update.
Obviously, something in my appcast is set up wrong way.
Here is the sample of my appcast code, where product’s version number is higher than the installed stack’s version:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>MyGreatProduct</title>
<link>https://mydomain.com/updates/product-appcast.xml</link>
<description>Updates for the MyGreatProduct stack</description>
<language>en</language>
<item>
<title> MyGreatProduct v1.5.6</title>
<pubDate>Fri, 05 Sep 2026 09:00:00 +0000</pubDate>
<sparkle:releaseNotesLink>https://mydomain.com/release_notes/MyGreatProduct-release_notes.html</sparkle:releaseNotesLink>
<enclosure
url="https://mydomain.com/updates/MyGreatProduct.stack"
sparkle:version="1.5.6"
sparkle:shortVersionString="1.5.6"
length="160,986"
type="application/octet-stream" />
</item>
</channel>
</rss>
Does anybody see anything wrong with this appcast code?
You can open the stacks developer console somewhere in order to view what’s happening.
Hi, Jannis,
I just had the Dev Console opened in RW, but I couldn’t see how that could be helping me. Forgive me my ignorance. Can you give me a hint?
Not at my desk right now. It’s a stacks console
Should the stack bundle be zipped and appcast point to a zipped file, in preparation for use by Sparkle?
I checked. It must point to a zip.
<enclosure url="https://.../my_stack.zip"
That’s what I just confirmed in my tests. Thanks anyway, Jannis. This line:
url="https://mydomain.com/updates/MyGreatProduct.stack"
should be
url="https://mydomain.com/updates/MyGreatProduct.stack.zip"
And, of course, the length of file needs to be updated as well.
Is irrelevant
I thought that file length was checked by Sparkle?
Not really.
OK, I will keep that in mind.
Anyway, I have already resolved my last issue with Sparkle auto-updating setup. Now, the stack updates nicely. I only need to add some security feature(s). Any suggestions?
This contains also a appcast secret version:
Thanks. I’m working on it…