Ian,
"Q: Is it common or practical to implement some sort of version-detection and include support for many versions of the ActiveX control in question?"
A: I would say that it's common and practical to implement version-detection for ActiveX controls. In fact, with CVI it's really a very necessary thing to do if you are embedding the controls into your UIR panel. Some, but not all, activex controls require a specific version of the server on the machine in order to run. For instance, a Windows Media Player 10.0 ActiveX control will not be able to load on a machine with only a Windows Media Player 6.0 installed. This will create a problem if the control is embedded into your UIR because the panel that the control is embedded on will not load.
There are many ways to check for certain activeX availibility on a machine. The most robust way to do it would be to check the Windows registry for key entries to see if the application has been installed on the machine.
I.e. for Access 97 the key is as follows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Access
While for Access 2002 the key is:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Access
However this leads to problems because some people just like to use the highlight and delete key to remove programs, and not the windows add/remove programs panel. In this case you can check for the .ocx or .dll files associated with the ActiveX control you wish to use.
As far as including support for many versions of an activeX control, well it's only as practical as circumstances permit. If you want to make sure all of controls are usable you should include distribution kits for each control. For example, you might have an application that can display multiple types of media, pdf files, etc. You would need to distribute probably one version of windows media player, a least one version of adobe acrobat reader, etc. And this can add up to a lot of extra distributables for your application. Is that something you want to burden the user with? And trying to uninstall all of that stuff when the user want to get rid of your application is a whole other issue. On the other hand if you have a single activex control that only requires one distributable, then it's something you should include with your application assuming it's legally distributable.