Tamar is right, the best overview of the VFP versions I think has been made by Sergey Berezniker here:
It points to the KB articles (haven't checked if any of them got orphaned), and points out the hotfixes are cumulative, so you don't need to upgrade with hotfix 1 and 2 first, you can go straight to hotfix 3.
You can also see 2412 was the RTM version, or in other words VFP9 without any service pack or hotfix, the initially released VFP9.0 version. So the client that had this runtime version was installed early on - I think - and was never updated.
Some companies setup the VFP runtimes once for all their software, especially when much of their in-house software is VFP based. That saves setups and makes it easy to provide installations and updates with siple XCopy deployment. Maybe, your company does it that way, too. You still should upgrade, even if that means upgrading all clients with the newer VFP runtimes. It's just a one off job doing that.
As you experienced yourself, EXEs compiled with a different version than the runtime libraries version can cause errors. So if you do an all-company upgrade of runtimes all EXEs should also be provided for that runtime, so be recompiled in an IDE with that version. That might get complicated if you don't have sources when some EXE were bought from external vendors. It's possible to put in the runtimmes of each EXE into its own folder, provided the EXEs has their own folder. A VFP EXE does also look for the runtime libraries there, so that's a way out of needing different runtime versions for different EXEs and you could make it a solution for all EXEs instead of registering DLLs of VFP at all.
But some of the runtimes are not optional to register. For the HELP command to work, the vfp9hhelp.exe has to be registered. I don't remember whether the vfp9t.dll has to be registered for MTDLLs to work, but I think the help will tell about all that in detail. If
will work again which as you'll see has a very delicate prerequisite, you could find a topic about vfp9 runtimes that's very informative about what to do with each of the DLLs, also regarding the C++ runtime DLL and gdiplus.dll, which also once had a security hotfix.
So bare in mind, the runtimes have to be handled with care, as the working of EXEs and security depends on that, that's worth the hassle of bringing all or at least most EXEs to the latest hotfix version of the runtimes and let the latest and greatest VFP runtimes do their job. It's not possible to register more than one vfp9hhelp.exe, even when they differ by SP and hotfix KB number, they all have the same name, so that means consolidating all EXE versions to the latest version is the best solution.
A reference to this about one SP version and a botched version of the merge modules for InstallShield I remember was on Rick Schummer's blog. See
In the end, the latest hotfix has anything fixed that could be fixed, I can't think of a known bug not fixed, but it was said anything else had a workaround or could be fixed by the community as it were bugs in the components programmed in VFP themselves and open sourced as they always were in xsource.zip, which is freely available, if not already part of the VFP setup.
And several tools like GenDBC have a community-enhanced version, GenDBCX in that case, see
it provides both the Microsoft gendbc.prg and gendbcx.prg.
I think all of these things are pulled together in the VFPX Github repositories about VFP at
plus many more things extending VFP to something that's worth calling it VFPX or 10.
Chriss