Hi Mike,
I use a small loader executable which looks for and launches the latest version. For example CRIS.EXE will look for the highest value of CRIS0001.EXE, CRIS0002.EXE, CRIS0003.EXE and run CRIS0003.EXE (which would be the latest version).
I have found this method perfect in large projects where 50 to 100 users would be the norm, and most updates would only apply to a specific department or user. The net effect is that when the other users log in the next day, they automatically obtain the latest version anyway. For housekeeping purposes, you will have to delete the older versions as they are no longer used.
Example:
*/ Loader program for CRIS
*/ This program is compiled as CRIS.EXE
clear
nFiles = ADIR(aFileList, CRIS*.EXE') && Read in list of relevant files
=asort(aFileList,1,-1,1) && Sorts the files accordingly
cProgram=aFileList(1,1) && Selects the latest EXE
do &cProgram && Launches latest EXE