Hi Gerard,
Putting the VFP runtime files on the local machines helped me. I loaded the EXE from the network by calling a loader program, like the one below, with the name and path of the EXE as a parameter. A typical icon on the user's desktop would have 'C:\vload\vload.exe F:\mupits\mupits.exe' as the Target and 'C:\vload' as the Start in folder.
PARAMETER rprog
DO &rprog
I preferred to leave the main EXE on the server, as it was changing frequently and it was easier for me to update one just file overnight.
I found a second source of slow loading was when I used DataEnvironments for forms. By placing the loading of all possible tables in the startup code and just putting a SELECT in the form's Init, the overall performance improved significantly. This proved especially so for an app of mine that runs over ISDN lines.
Both of these options have their downsides. Upgrading to new versions of the runtimes is a bit of a task if there are a couple of hundred users and you have to code a bit more to ensure that one form isn't moving the record pointers and thereby screwing up another. There may be more negatives, but I didn't come across them.
HTH
Alan