I made my patching system use 2 folders - the current 'Data' folder, and a 'last_update' folder.
The data folder always has the latest files in it.
What I did, was I made a text file with the paths and a version number beside them:
eg.
[url=http://dl.dropbox.com/u/40095228/Projec...ors.rxdata]http://dl.dropbox.com/u/40095228/Projec...ors.rxdata[/url]<-><|AR|>Data/Actors.rxdata<->1.03
[url=http://dl.dropbox.com/u/40095228/Projec...ons.rxdata]http://dl.dropbox.com/u/40095228/Projec...ons.rxdata[/url]<-><|AR|>Data/Animations.rxdata<->1.03
[url=http://dl.dropbox.com/u/40095228/Projec...ors.rxdata]http://dl.dropbox.com/u/40095228/Projec...ors.rxdata[/url]<-><|AR|>Data/Armors.rxdata<->1.03
[url=http://dl.dropbox.com/u/40095228/Projec...ses.rxdata]http://dl.dropbox.com/u/40095228/Projec...ses.rxdata[/url]<-><|AR|>Data/Classes.rxdata<->1.03
[url=http://dl.dropbox.com/u/40095228/Projec...nts.rxdata]http://dl.dropbox.com/u/40095228/Projec...nts.rxdata[/url]<-><|AR|>Data/CommonEvents.rxdata<->1.141
[url=http://dl.dropbox.com/u/40095228/Projec...ies.rxdata]http://dl.dropbox.com/u/40095228/Projec...ies.rxdata[/url]<-><|AR|>Data/Enemies.rxdata<->1.05
[url=http://dl.dropbox.com/u/40095228/Projec...ems.rxdata]http://dl.dropbox.com/u/40095228/Projec...ems.rxdata[/url]<-><|AR|>Data/Items.rxdata<->1.04
[url=http://dl.dropbox.com/u/40095228/Projec...001.rxdata]http://dl.dropbox.com/u/40095228/Projec...001.rxdata[/url]<-><|AR|>Data/Map001.rxdata<->1.04
[url=http://dl.dropbox.com/u/40095228/Projec...002.rxdata]http://dl.dropbox.com/u/40095228/Projec...002.rxdata[/url]<-><|AR|>Data/Map002.rxdata<->1.03
[url=http://dl.dropbox.com/u/40095228/Projec...003.rxdata]http://dl.dropbox.com/u/40095228/Projec...003.rxdata[/url]<-><|AR|>Data/Map003.rxdata<->1.03
Mine also included source and target directories and other tags.
I sent this to the client, and had the client also store a version list of the last patch.
I got the client to compare the two, and only download from the urls that had different version numbers for the files.
After that, I set the client's version numbers to the server's, now that its chosen which ones are new, and that's the checking side done.
Now, how I automated that list - Thats where the two folders came in.
I made a file called 'update.rb', and that ran through all of the files in your 'Data' folder and compared them to the files in the 'last_update' folder. If they didn't exist or were different sizes, it copied the file into the 'last_update'. Also, along with copying, it read the version number from the text file and simply added 0.1 to it.
All I had to do in the end was run update.rb whenever I wanted to send out a new release, and the client does the rest
This method worked perfectly for me, but I didn't have a server to stream the data across, so I'm sure your listing method would be much simpler if you did end up doing it this way.