Ben,
TealWren has the approach I find most workable, which is to use a launcher that compares the version number of the version installed on the client's PC against the latest "central version"
For example:
1. User clicks icon, which fires tiny version checker (tvc).
2. tvc compares the user's current version number against centrally stored "current" version. If different, user is prompted to download an update.
3. When all that's been taken care of, tvc starts the real application.
Given the automatic versioning that was added in Delphi 4, it's basically free and transparent to the user. Here's one reasonably simple way to determine your application's version number:
BTW, the reasons I don't use databases for this are:
1) Most databases formats require one or more libraries to be loaded. Since your update may possibly revise/replace those libraries, it's easier to over-write them than to force the user to reboot so they're no longer in use.
2) IME, users are more comfortable using NotePad to edit config files than they are mucking about with arcane binary formats, such as the Registry.
3) Explorer displays VERSIONINFO data when you right-click a file and then choose Properties. Again, it makes support easier.
Hope this helps...
-- Lance