A first stab at a schema for an updating system: Every application that wants to be included in the update system puts an Update.plist file inside the resources. The file doesn't include much: The URL to the XML file which defines the most recent version. This XML file is kept on the developers server. Example: <key>UpdateInfoURL</key> <value>http://www.developersite.com/programs/updates/myprogram.xml</value> It could also include additional parameters that can be used by the developer on the server side, example could be name and serialnumber. The value will be appended to the url defined by the xml file on the server side. This information could be written to the Update.plist when you install the application or register it. This is optional. <key>Parameters</key> <value>username=foo&serialnumber=01234</value> All the other information about application name, version and such can be taken from regular Info.plist. No need for redundancy. On the server side there is an XML file pointed to by the UpdateInfoXML field. It includes this basic information: <version>1.01</version> <size>125640</size> (this is in bytes) <downloadURL>http://www.developersite.com/programs/download/myprogram1.01. dmg</downloadURL> <infoURL>http://www.developersite.com/programs/updates/myprogram.htm</info URL> This is the basic info needed for the update system. There might be some extra info to sort out all little issues, like required version to apply the updater on (if that is the case). The update app scans all applications after Update.plist files and builds a database. When checking for upgrades it will go out and fetch those XML files and compare it with the stored information. If the version is newer (or date if that is better) it asks the user if it should download and install the new version. The developer could have a script on the server side (<downloadURL>https://www.developersite.com/programs/download?id=myprogram 1.01.dmg</downloadURL>) which would append the optional parameters from the Update.plist file. The complete URL would be https://www.developersite.com/programs/download?app=myprogram1.01.dmg&user name=foo&serialnumber=01234. Now you could check if it's a valid user or track some download statistics. This is just a suggestion how it could be done, comments? Conny Svensson Pixits