views:

347

answers:

11

Is there any API or tool that can automate software updating? It should take care of checking for updates from a URL for a provided list of files and downloading and replacing the ones that need updating. It would also be nice if it contained an authentication module so that only authorized parties could access the updates. It should be language-agnostic - takes a list of files without extra knowledge except their versions and replaces them with newly downloaded copies if on the site there are newer versions.

I'm specifically interested in something for the Windows platform, that would run on Win Xp to Win 7.

+3  A: 

This makes me think about apt-get ...

Didier Trosset
+2  A: 

I did see some articles a while back about embedding subversion into your application to manage version control.

Edit:

http://svnbook.red-bean.com/en/1.5/svn.developer.html

Subversion has a modular design: it's implemented as a collection of libraries written in C. Each library has a well-defined purpose and application programming interface (API), and that interface is available not only for Subversion itself to use, but for any software that wishes to embed or otherwise programmatically control Subversion. Additionally, Subversion's API is available not only to other C programs, but also to programs written in higher-level languages such as Python, Perl, Java, and Ruby."

Karl
This sounds cool. Can you prove a link to those articles?
gooli
See my edit :-)
Karl
A: 

Head over to Launchpad and use a PPA: it is a Debian/Ubuntu repository management platform. Of course this is not really platform independent but it is language wise :-)

jldupont
A: 

You should take a look at ClickThrough, I don't know much about it but it sounds similar to what you're looking for. As for authorization, I would imagine this to be handled by your webserver based on the URL.

Sayed Ibrahim Hashimi
A: 

InstallShield has an offering. Never used it but researched it a few years back but we decided on a roll your own solution.

dkackman
A: 

You didn't state what platform you needed this for. The easiest way I can think of doing this is with subversion using rsync.

The concept is to write a post-commit hook for subversion. This script would update a "working folder" on the repository machine and then use rsync to update the differences to another machine.

Data protection and authentication would be set up using rsync over ssh.

If this is for windows, you could try doing the same with cygwin installs on the two machines.

Good luck.

wdh
A: 

If you use .NET, I'm a happy customer of AppLife Update

erikkallen
I'd like it to be independent of the .NET framework, to work both on .net and on native executables, as well as text files, database files, etc...
luvieere
Could be a good thing to include in your question. It may be language agnostic, but not framework agnostic.
erikkallen
A: 

CRONw is a scheduled execution service for Windows. (Sorry, I can't link it, I'm apparently limited to 1 as a new user. It's hosted on Sourceforge.)

Powershell is a Windows scripting language (Microsoft-official) that allows you to do most system administration operations you could conceivably want to do. It is very easy to pick up even if you haven't worked with it before.

I would say your best bet is to write a simple update script in Powershell and, optionally, set it up as a crontask so you don't have to manually execute it.

IIRC, Powershell is an optional install on XP, and CRONw requires you be running a 32-bit system. You didn't say, so I'd guess you're doing 32-bit, but the alternative bears mentioning.

And in all this, I'm assuming that the URLs you're describing are designed for this purpose - if they're not and you don't own them, it will rapidly become more suffering than you're willing to bear. (Making a computer navigate a human-readable website usually does.)

Arkaaito
Windows already has a task scheduler built in. http://en.wikipedia.org/wiki/Task_Scheduler
Jason Orendorff
+1  A: 

take a look here, as well: http://stackoverflow.com/questions/252986/is-there-an-auto-update-framework-for-c-win32-mfc-like-sparkle

Zoran Regvart
This lead me to Seven Update(sevenupdate.sourceforge.net) thanks, that's what I was looking for.
luvieere
+1  A: 

For windows, I'd use Google Update, also known as omaha.

Since you didn't tag this question as windows, I'd also mention a UpdateEngine for Mac.

And (best of all) apt, which is available for free on all Debian-based Linux and BSD distributions, like Ubuntu

Davide
+1  A: 

There is open source project WIPT inspired by APT of Debian Linux.

Taneli Waltari