OS X El Capitan...Apps Compiled with Xcode 7 Breaks Sparkle Framework.Won't be able to push updates.

Looks like changes made in OS X El Capitan/Xcode 7 has broken the Sparkle framework. If I compile one of my apps with Xcode 7 and do "Check for Updates", I will get an error.


Now if I grab a binary compiled with Xcode 6...no code changes, there is no error. My Appcasts use Https not http...though I'm surprised that even apps that are not sandboxed are getting this restriction? If this is indeed true and I'm not making some bonehead mistake..because it is late at night (again, I didn't make any code changes related to this), this can have serious implications for anyone developing outside the MAS...they won't be able to push updates to their customers if OS X is blocking them from doing so...

Replies

Here's the error that logs out from Sparkle:


Sparkle: Error: An error occurred in retrieving update information. Please try again later. An SSL error has occurred and a secure connection to the server cannot be made.

BTW the appcast is being hosted on a bucket in Amazon S3...I wouldn't expect amazon's servers to be untrusted.

I can verify that a change in the SDK is causing this. I just grabbed exact same app off my server that was compiled in Xcode 6. There wasn't a single code change made to Sparkle (only difference is it was compiled with Xcode 7 now).


If I go to my "Check for updates" menu item on the build I grabbed off the server...I get "You're up to date". No error. Now the freshly pressed archive...with nio code changes made I get an error. And sparkle logs out what I've posted above.


So naturally I'm a bit nervous about releasing apps with Xcode 7 here. I don't want to push anything out that will block my ability from pushing out future updates. Yikes.

just moved the fresh squeezed build to my iMac that's still on Yosemite...no error. Exact same binary gives me an error on El Capitan.


Any ideas on how to handle whatever change was made in the SDK would be greatly appreciated. Hope I don't have to grab Xcode 6 and wait... 😟

from:

https://forums.developer.apple.com/thread/3544


Adding the following to your Info.plist will disable ATS


  1. <key>NSAppTransportSecurity</key>
  2. <dict>
  3. <key>NSAllowsArbitraryLoads</key><true/>
  4. </dict>

I'll have to look at the sparkle code to see if there is a bug in the framework. The xml file (appcast) is an https address. I wouldn't expect this key to be necessary?


Also kind of *****, that we have to pay $ to load simple stuff in from our web servers...like a regular site with no sensitive data on it.

Here's a relevant open issue in the official Sparkle's repository:

https://github.com/sparkle-project/Sparkle/issues/644


One poster writes that Amazon's Cloudfront servers do not meet Apple's new ATS criteria. I imagine this will have to change. I filed a bug with Apple though maybe I should also contact Amazon. Many developers use AWS. I expect there will be some outside the MAS apps that may get burned by this change.