Well, Java might be the best solution then - I figure most users have the runtime environment installed too.
What i'm understanding is that we wish to create a application that will allow a user to select a server on a large cell list and from here be able to select either join, join dm, update files.
Yeah, I was thinking something like... Well, I'll try to make a quick HTML example:
https://dl.dropbox.com/u/16677912/updater.htmlChecking for player count can be done rather forwardly - I can post the php code we use for the server status page here.
We could check CRC on all non-optional files on connect, but a faster and much simpler solution is to skip the CRC and simply check filenames. It'll be up to module designers to then add a version name to their filename. This allows for alternative packages too, which may be useful for compatibility (like lower texture quality alternatives).
Generally, I don't think we should try to set up some centralized storage though - just more hassle. The only thing that should be stored centrally is the core XML file (that has all the servers and links to their specific file list XMLs).
I was thinking that clicking the "Files" button then directed you to a page similar to the packages list you had. If the connect fails due to mismatching or missing files, the user could be send here as well.
As they say: Keep it simple. If anything, more functionality can be added later.