> > I think the only 100% valid solution is to check that the > > needed COM interfaces are all present. DX is based on well > > defined COM interfaces, while "versions" are only marketing > > names of DX. > > I don't use/require specific interface numbers, and use the old (compatible, > non-Ex) method of initialising DirectX instead. I do need the functionality > first introduced with DirectX 3, so a quick version check should be fine. > It's just a shame the previous method I used (from the NSIS website) didn't > quite do the trick! > > Si
As I can see, my last e-mail is not fully clear. I wanted to say this: DirectX (DX) is not a centralised version-based system. It is a set of >independent< interfaces to DX components. So if you use DX, you actually use one or more COM interfaces. DX is just a common name of all these interfaces. If you want to be sure that a particular machine can run your program, you don't need to check the DirectX "version". What you actually need is to check that all interfaces you use in your program are supported on that machine. So I think your installer should rather try to obtain all interfaces used in the SimCoupe, instead of using some undocumented tricks to obtain DirectX version. I think the reason of malfunction on NT 4.0 is that it contains a hybrid DirectX version, which is DirectX 2 compliant, with some components supporting several features of DirectX 3. The version probing code probably inadvertently checks some of the DX2 libraries, and complains DX3 is not installed. /-- Aley

