Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Jun 30, 2014
  1. @jakepetroules

    Make the repository significantly more organized.

    jakepetroules authored
    Now everything is not pretty much all in one directory.
Commits on Jun 29, 2014
  1. @jakepetroules
Commits on Jun 28, 2014
  1. @MaddTheSane

    Finish moving all informal protocols to formal protocols.

    MaddTheSane authored
    Fix improperly-named protocols.
Commits on Jun 20, 2014
  1. @MaddTheSane
  2. @MaddTheSane

    Replace NSAutoreleasePool classes with Autorelease Pool blocks.

    MaddTheSane authored
    They’re faster, even if they’re used outside of ARC.
    Use dispatch functions to spin off new threads.
    Update the Binary Delta tool's class to be better.
Commits on Jun 17, 2014
  1. @pornel

    Modern syntax

    pornel authored
Commits on Aug 16, 2012
  1. @andymatuschak

    Fixes #133: Sparkle deleting/replacing the wrong executable when it u…

    andymatuschak authored
    -[SUHost installationPath] can return different values before and after
    the installation is performed, because it may attempt to normalize the
    installation path--but only if the normalized version of the path isn't
    already present. Which it would be after the installation had completed.
    Now we only compute the installation path once for the whole installation
Commits on May 2, 2011
  1. @uliwitness
Commits on Jan 1, 2010
  1. renamed all methods that start with underscore, since that's reserved…

    Sean McBride authored
    … by Apple. Similiar for global variable that started with double underscore
Commits on Dec 30, 2009
  1. fixed warning

    Sean McBride authored
Commits on Dec 7, 2009
  1. @uliwitness
  2. @uliwitness

    We should now correctly replace renamed apps, trashing the custom-nam…

    uliwitness authored
    …ed one, installing a new one with a default name, and also moving out of the way any existing copy with the default name.
Commits on Dec 4, 2009
  1. @uliwitness

    Added preprocessor defines to SUConstants.h for turning on/off DSA an…

    uliwitness authored
    …d downgrades. We let users downgrade using our URL scheme, and we warn them beforehand, so the downgrade possible attack paranoia gets in the way.
  2. @uliwitness
  3. @uliwitness

    Merge of changes from SVN repository:

    uliwitness authored
    - Changed NTSynchronousTask to also give the status return value and direct stderror output to the outputData.
    - Changed includes so this builds as part of an app, too, not just as a framework
    - Made sure SUAppcast's dealloc releases some leaked ivars.
    - Added infoURL, extracted from link, that can point to a "more Info" page for download-less URLs
    - Added support for version attribute on item so we can support update notifications that don't include an enclosure (e.g. paid upgrades, or upgrades that would require a system update)
    - Added/improved a few description methods to ease debugging.
    - Added SULog so one can ask for a special log with additional information when there are update issues.
    - Added mayUpdateAndRestart for apps that absolutely, positively can't restart right now (e.g. cuz they're burning a CD and would produce a coaster).
    - Added updaterWillRelaunchApplication delegate method, analogous to the notification. Useful to have app delegate quit helper apps during installation.
    - Made SUBasicUpdateDriver's abortUpdate implicitly retain/autorelease the update driver, because the notification center otherwise releases it and it goes away, causing crashes in superclass's abortUpdate.
    - Merge of SUKeepDownloadOnFailedInstallKey and SUFixedHTMLDisplaySizeKey.
    - Avoid a few warnings about missing prototypes
    - Be paranoid, hdiutil can verify the download again, so let it. Better for internal apps where we turn off DSA checks, too.
    - SUHost has an -installationPath now, independent from the bundlePath, so one can normalize the app name from "MyApp 1.1b4" back to "MyApp" Users assume the file name contains the correct version number when there is one in it. Saves support a few round-trips each time.
    - Be better at threading: Try calling non-thread-safe methods on main thread only, and don't assume delegates know when they need to be thread-safe, call them on main thread where possible.
    - Added a method to put the old copy of the app in the trash. 1.5git changed in this spot, so I didn't actually merge the code that uses it back in yet.
    - Fix version comparison so it doesn't get confused by bracketed build numbers in version strings
    - Make sure cancel button is disabled during extraction, otherwise user would crash.
    - Don't put auto-update window at floating window level. It's huge and can't be switched to background! If you're an NSBGOnly where you need that, turn it on only in that case, but don't generally do such nonsense.
    - Hide release notes view if there aren't any.
    - Test whether we are on dial-up before checking for updates in background. It's not nice to cause (possibly expensive) dial-up periodically.
    - Temporarily comment out DSA complaints for easier testing.
    - Don't store (possibly already invalidated) one-shot NSTimers in an ivar. It's bad style. Retain it instead.
    - Decompress some monster expressions with nested method calls in ternary operators and nested in method calls again.
    - Don't use implicit "id" for params or return types.
    - finish_installation now puts up a progress window, so user knows update is still not finished.
    - Use ThreadSafePreferences (included dummy version that uses regular prefs for projects that don't use ThreadSafePreferences).
    - Todo later: Change finish_installation to be prettier.
  4. @uliwitness

    - More WIP creating finish_installation that waits

    uliwitness authored
    for quit, updates and relaunches the app, so
    updates don't happen while app is still running.
    NSBundle gets royally confused and points to the
    old path (loading new NIBs into the old app in the
    worst case) when you move a running app.
    - Temp folder is now user's desktop, as
    NSTemporaryDirectory() doesn't stay the same
    between two separate apps, and may be emptied on quit.
    - Relaunch gets created in App Support now, for
    same reasons as above.
    - Less dependency on prefix headers, that only leads
    to lazy, un-reusable code.
Commits on Nov 1, 2009
  1. performed a code review, specifically:

    Sean McBride authored
    - changed some #include to #import
    - fixed some NULL -> nil Cocoa coding conventions
    - added new compiler warnings and fixed some warnings they generated
    - check for nil from NSTemporaryDirectory
    - added missing files to unit test and test app targets
    - added xcconfig files for unit test target
    - added @private to some ivars
    - changes some variables from signed to unsigned as appropriate
    - changed from base 2 to base 10 measurements of file size, consistent with both the actual meaning of metric prefixes and Apple's new policy as of 10.6
    - reduced some unneeded copy-paste of code
    - fixed failure to check for null from malloc and unneeded check against null before calling free
    - OSErr was incorrectly used instead of OSStatus
    - added some consts & statics to global strings
    - fixed some issues discovered by static analysis
    - fixed some 64bit issues, mostly related to casting and the use of slightly incorrect types/sizes
    - some dealloc methods were using accessors, changed to access ivars directly, as per Apple guidelines
    - removed old NS_DURING, NS_HANDLER, NS_ENDHANDLER macros
    - fixed a bug where immutable data was being mutated
    - removed all instance of "== YES" as they are dangerous
    - removed some redundant nil checks
    - fixed some leaks
    - conditionally replaced deprecated method usage
    - cleanup CF/NSMakeCollectable usage
    - fixed bug in GC where memory could be collected too early due to lack of strong references when using UTF8String
    - prevent passing null to CFRelease
Commits on Aug 27, 2009
  1. @andymatuschak


    andymatuschak authored
    Bug #389869: "Sparkle runs thread-unsafe code on secondary threads"
    Bug #312995: "Canceling authentication request causes crash on next update"
    Bug #388793: "Need to notify SUUpdateDriverFinishedNotification on main thread"
    The unfortunate side-effect of this fix is that all the file-handling code is now CoreServices-based, since NSFileManager is not thread-safe. This is disgusting and will be stricken from all records when installation is performed by relaunch in Next Major, as it should have been in the first place.
Commits on Jun 20, 2009
  1. @andymatuschak

    Removed SL-deprecated NSFileManager methods. Left the old ones around…

    andymatuschak authored
    … #if'd for 10.4 support; I look forward to removing them. :)
    Thanks for the patch, August.
Commits on Sep 10, 2008
  1. @andymatuschak

    More security tidbits!

    andymatuschak authored
    This patch prevents malicious downgrades, which are still possible with DSA validation: suppose there's some (signed) version with a security hole. A malicious attacker could serve an appcast with that version's URL and DSA signature, but a higher version number, forcing the user to "upgrade" to the version with the security hole.
    While I was at it, I fixed a bug that should have completely stopped .pkg installation from working since 1.5b1. Why didn't I hear anything about that? Does anyone actually use .pkgs? It still needs testing to be sure it works.
Commits on Jul 24, 2008
  1. @andymatuschak

    Fixes 244428

    andymatuschak authored
    Removed all Cocoa categories from Sparkle by integrating things into other classes or making categories on existing Sparkle classes. Whoo!
Commits on Jul 16, 2008
  1. @andymatuschak

    Beginnings of insane SUHost-based refactoring to get rid of NSBundle+…

    andymatuschak authored
    …Sparkle. More super-unstable refactorings to come...
Commits on Jun 24, 2008
  1. @andymatuschak

    Fixes 239512

    andymatuschak authored
    NSAutoreleasePool is now drained instead of released.
Commits on May 8, 2008
  1. Touched practically every line of code in a super-monster-awesome ref…

    andym authored
    …actoring. Please read:
    - Broke out SUUpdater functionality into update drivers. There's a basic one from which everything else inherits, then a user-initiated one, an automatic one, and a scheduled one. It's super-clean-and-shiny.
    - Destroyed the abomination that was SUStatusChecker. In its place is SUProbingUpdateDriver, which is like 10 lines long.
    - Made automatic installation less stupid. It used to install, THEN offer to relaunch. That's dumb, beacuse if the user says no, the app is running from the trash. Now it offers to install and relaunch or to install on quit.
    - Renamed like every method and symbol. I hope you didn't branch anything.
    - Reorganized the project hierarchy to be much clearer and easier to navigate.
    - Reworked the error system to no use NSError instead of exceptions; extra technical information is now logged to the console so that we can find problems.
    - A bunch of other small bugfixes in things I noticed along the way but no longer remember.
    - Probably a ton of other stuff.
    Read over the code and see what I've done. Then PLEASE test this with your app internally and let me know how it goes. This revision is hereby NOT YET DECLARED SAFE FOR PUBLIC RELEASE. But because I'm still using SVN, this is how things have to be.
Commits on Apr 29, 2008
  1. Added fetching of CFBundleName as a fallback for CFBundleDisplayName …

    andym authored
    …in -[NSBundle(SUAdditions) name].
    Fixed an uninitialized variable.
    Fixed autorelease pool errors during installation thread.
    Fixed error including SUInstaller.h from host app.
    Patch courtesy Ben Kazez.
Commits on Apr 15, 2008
  1. Major refactoring, yay.

    andym authored
    Moved out installation phase to separate classes, separating packages and flat-file installs.
    Made the DMG cleanup less horrifying.
    All-around prettification.
    This may or may not break the world; please let me know.
Something went wrong with that request. Please try again.