{"id":39466,"date":"2023-05-22T16:35:21","date_gmt":"2023-05-22T20:35:21","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=39466"},"modified":"2025-07-17T09:52:23","modified_gmt":"2025-07-17T13:52:23","slug":"setting-up-sparkle","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2023\/05\/22\/setting-up-sparkle\/","title":{"rendered":"Setting Up Sparkle"},"content":{"rendered":"<p><a href=\"https:\/\/troz.net\/post\/2023\/sparkle\/\">Sarah Reichelt<\/a>:<\/p>\n<blockquote cite=\"https:\/\/troz.net\/post\/2023\/sparkle\/\"><p>Sparkle is an open-source update framework for macOS. It&rsquo;s very popular and I&rsquo;m sure you will have seen it used, even if you didn&rsquo;t recognise it. But setting it up isn&rsquo;t totally straight-forward, at least I didn&rsquo;t find it so, which I why I&rsquo;m using this post to document the process.<\/p><p>[&#8230;]<\/p><p>The <a href=\"https:\/\/sparkle-project.org\/documentation\/\">Sparkle documentation<\/a> is excellent and contains everything you need to know, but they allow for a wide range of use cases and configurations, which makes it difficult to follow at times.<\/p><p>[&#8230;]<\/p><p>Adding Sparkle to a sandboxed app requires some more steps[&#8230;]<\/p>\n<p>[&#8230;]<\/p>\n<p>Drag the image file into your disk image. Don&rsquo;t worry about positioning it - you&rsquo;re about to make the file invisible.<\/p><\/blockquote>\n<p><a href=\"https:\/\/c-command.com\/dropdmg\/\">DropDMG<\/a> is an easier way to create a disk image with a background picture, and it will <a href=\"https:\/\/c-command.com\/dropdmg\/help\/signing\">code sign<\/a> the <tt>.dmg<\/tt> file, too.<\/p>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2021\/12\/29\/sparkle-2-0\/\">Sparkle 2.0<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/03\/13\/sparkle-project-needs-help\/\">Sparkle Project Needs Help<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/08\/19\/catalina-app-notarization-and-sparkle\/\">Catalina, App Notarization, and Sparkle<\/a><\/li>\n<\/ul>\n\n<p id=\"setting-up-sparkle-update-2025-07-17\">Update (<a href=\"#setting-up-sparkle-update-2025-07-17\">2025-07-17<\/a>): <a href=\"https:\/\/steipete.me\/posts\/2025\/code-signing-and-notarization-sparkle-and-tears\">Peter Steinberger\n<\/a>:<\/p>\n<blockquote cite=\"https:\/\/steipete.me\/posts\/2025\/code-signing-and-notarization-sparkle-and-tears\">\n<p>If you&rsquo;ve ever tried to implement automatic updates in a sandboxed macOS app using Sparkle, you know it can feel like trying to solve a Rubik&rsquo;s cube while wearing oven mitts. After creating way too many beta releases and spending countless hours debugging cryptic authorization errors, I finally cracked the code. Here&rsquo;s my step-by-step guide to code signing, notarization, and Sparkle auto-updates in sandboxed macOS apps.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Sarah Reichelt: Sparkle is an open-source update framework for macOS. It&rsquo;s very popular and I&rsquo;m sure you will have seen it used, even if you didn&rsquo;t recognise it. But setting it up isn&rsquo;t totally straight-forward, at least I didn&rsquo;t find it so, which I why I&rsquo;m using this post to document the process.[&#8230;]The Sparkle documentation [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2023-05-22T20:35:23Z","apple_news_api_id":"6acbb7e7-35e2-427b-8e80-30ad1522f13b","apple_news_api_modified_at":"2025-07-17T13:52:25Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAA==","apple_news_api_share_url":"https:\/\/apple.news\/Aasu35zXiQnuOgDCtFSLxOw","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[371,30,2223,74,71,53,2087,2387],"class_list":["post-39466","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-dropdmg","tag-mac","tag-macos-13-ventura","tag-opensource","tag-programming","tag-sandboxing","tag-software-update","tag-sparkle"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/39466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=39466"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/39466\/revisions"}],"predecessor-version":[{"id":48517,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/39466\/revisions\/48517"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=39466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=39466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=39466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}