Sparkly!

Crossposted from the Scimatic blog.

<p>We’re working on a client project where one of the requirements was a <a href=”http://sparkle.andymatuschak.org/”>Sparkle</a>-style updating mechanism. For those of you who are Mac folks, you’ll be familiar with the Sparkle “A new version of YOUR FAVOURITE APP is available!” window, with the options to skip, remind me later, or install the update.</p>

<p>Fortunately, there are at least two open-source versions of Sparkle for .NET programmers:</p>

<ul>
<li><a href=”http://netsparkle.codeplex.com”>NetSparkle</a> – “NetSparkle is an easy-to-use software update framework for .NET developers on Windows, MAC or Linux. It was inspired by the <a href=”http://sparkle.andymatuschak.org/”>Sparkle</a> project for Cocoa developers and the <a href=”http://winsparkle.org/”>WinSparkle</a> project (a Win32 port).” </li>
<li><a href=”https://github.com/iKenndac/SparkleDotNET”>SparkleDotNet</a>&#160; </li>
</ul>

<p>I started using <a href=”http://netsparkle.codeplex.com”>NetSparkle</a> (mostly because it was recommended first on <a href=”http://stackoverflow.com/questions/691663/auto-update-library-for-net”>Stack Overflow</a> and was clearly labelled as <a href=”http://netsparkle.codeplex.com/license”>MIT-Licensed</a>), but I realised that there were some changes I needed to make:</p>

<ul>
<li>Allow for a custom UI instead of the two Windows Forms dialog, </li>
<li>Allows for one-time check for updates instead of running on a loop, </li>
<li>Allows for custom configuration objects instead of reading/writing to the registry , </li>
<li>Refactored the diagnostic to use <a href=”http://nlog-project.org/”>NLog</a> instead of a custom file stream, </li>
<li>Refactored exiting the application to fire an event for shutdown instead of <code>Environment.Exit</code> </li>
</ul>

<p>Thanks to Dirk Eisenberg for working hard to create <a href=”http://netsparkle.codeplex.com”>NetSparkle</a>, and for releasing it as MIT-Licensed so that we could use and modify it the way we needed to.</p>

<p>Because this is all open-source, I figured it would be good to give back, so you can get the changes I made from <a href=”https://github.com/jimgraham/NetSparkle”>GitHub</a>.</p>

Sparkly!