Sublime Text X needs a Auto Updater, specially if there’s going to be regular updates
Sparkle is a pretty cool update framework that you could use on OS X: sparkle.andymatuschak.org/
X already has auto-update functionality on OSX which looks for new versions on startup. 1.x sublime has this functionality as well.
The auto update could download the dmg file and perform the update as well, though I think what is currently in place works pretty well. The OSX download should be wrapped up in a pkg file though with has a link to Applications so you can just drag the new version to proper place.
I’d love to have an auto update system, as opposed to just the current notification system, it’s really just time, and having to deal with 3 platforms, holding me back from doing it.
Are the updates just specific DLLs and SOs getting updated? If so, it might be possible to do an auto-update through some clever curl/wget usage via a Sublime plugin. Any thoughts?
I would also love to have an auto-updater feature and be willing to work on some type of plugin if it could be accomplished that way.
The updates are just a set of files, but there are a few tricky parts:
- The executable has to be updated. This is tricky on win32, as it’s not possible to write to the executable while it’s running. This implies some part of the update process would need to be a second executable, that waits for the main one to exit, updates it, and then re-runs the main one.
- Getting write permissions for the executable parts is involved: writing to program files on win32 requires a UAC prompt, afaik (unless a chrome style auto update services is used, but that doesn’t win friends).
- There needs to be some sort of GUI (a la sparkle) informing of what the update contains, and if the user would like to install it, ask later, or skip.
There is sparkle for OS X, and winsparkle may be suitable for windows. I have no idea how stable winsparkle is though.
I’m also not sure what the best approach for Linux is - most people expect the distribution to handle all updates there.
I think this is a fairly involved thing to solve for 3 platforms.
Best way - get a maintainers for each platform. Just shout for new members(i believe you have a friends, who can do it), who will get access to code and can update repository for each platform: ppa, deb and rpm for linux(it’s prety easy!), any windows-specific repo(winsparkle or something else) for window and sparkle for OS X.
For the editor, you need just 1 thing to implement - alert about new version(it can be just http reguest for webpage, where you can put a current version with commit id and branch).
Anyway, i want to say one thing: STOP SHITCODDING! You don’t need a realtime updates, you dont need to write a separated updater, you just need to use current tools.
+1 for @lorlas idea - would be nice to have .deb