Updating (unfortunately already common) OSX application sandboxes using glitter

In anticipation of reckless enthusiasm, I am a sandbox, and then updated my application. Since the application has read / write access to the files selected by the user (and the music directory), I cannot update my own binary file right now. Unfortunately.

Andy Matushak spoke about this in detail over the last year or so ( https://github.com/sparkle-project/Sparkle/pull/165 ), but while the proposed solutions are "almost good" enough, "there was no light to the problem that the application without the sandbox has already been distributed.

Oh, and it seems that it may be important that I used the "disk image" method to distribute the gloss.

The only AT ALL solution I can think of is to release a glitter update that simply presents a message to users who tell them manually. Anyone have any better ideas?

-Dave

+7
source share
1 answer

Andy Matushak seems to indicate that Sparkle really can handle "download only" gracefully for you. In his own words, just leave the <enclosure> outside your <item> and add the <sparkle:version>2.0</sparkle:version> element as the child of the <item> .

Read his comment here: https://github.com/sparkle-project/Sparkle/issues/227#issuecomment-13192723

Like Fermat in front of him, he left one piece of information. But unlike the theorem, we have access to the Sparkle source code, in particular SUAppcastItem.m . Thanks to the code, I realized that the missing part was the <link> . Here is an appcast example:

 <?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>FooBar</title> <link>http://foobar.com/appcast.xml</link> <description>Most recent changes with links to updates.</description> <language>en</language> <item> <title>FooBar 2.0</title> <sparkle:releaseNotesLink>http://foobar.com/release-notes-special.html</sparkle:releaseNotesLink> <sparkle:minimumSystemVersion>10.9.0</sparkle:minimumSystemVersion> <pubDate>2014-04-14T18:40:44+02:00</pubDate> <sparkle:version>2013</sparkle:version> <sparkle:shortVersionString>2.0</sparkle:shortVersionString> <link>http://foobar.com/release-notes-special.html</link> </item> </channel> </rss> 

In the sandbox application that receives this application and cannot be updated otherwise, “Install update” has disappeared, and the “Learn more” button appears in its place, which will lead the user to the URL in this <link> . This is a good place for download instructions.

In the next version of your application, you can use a different URL for the application, so the above appcast only applies to older versions (provided that you correct the situation and now use the unofficial XPC trick with Sparkle).

+1
source

All Articles