DirectX Version Number Abuse

Has anyone noticed that Microsoft defines "version" a little loosely when it comes to DirectX 9.0c? Here's a screenshot of the DirectX 9.0c download page on FileHippo:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/08/directx-version-number-abuse.html

If they make such a mess of Direct3D installation, what does it tell you about their OS?

I stumbled across a comment in their Direct3D docs, where they encourage you to silently update Direct3D (no need to ask the dumb user…), which I find appalling.

Furthermore the platform SDK is no longer just plain “platform SDK”, it’s now Windows Server 2003 platform SDK R2. Which throws you off a little when you are looking for “the” SDK, and not the “Server 2003 SDK”.

DirectShow has suddenly moved to the Platform SDK. During the transition, there was a period, were DirectShow was not supported (neither in the SDK or in DirectX/3D). Now it’s in the Platform SDK but it retains some legacy dependencies to the DirectX SDK, so you need to get that as well.

But I am looking forward to Vista :wink:

Isn’t it because it really is the same version of the DirectX core? I believe MS only adds data to support new hardware support, and stuff of that kind. Bug fixes and new functionality would result in a new version (say 9.0d).

If you already have 9.0c and it works on your computer, you needn’t download it again.

I might be wrong, so if anyone knows better, please correct me. :slight_smile:

The 9.0c relates to the core runtime which has remained the same for some time. The updates to the runtime download include D3DX and managed DirectX which are updated bi-monthly along with the DirectX SDK. These components have their own version number.

In theory a user shouldn’t need to download a new runtime if they have 9.0c because the updated components should be installed as part of the game/application that uses them. Unfortunately this isn’t always true, so Microsoft updates the runtime download so that ‘bad’ applications can just point users to install the DirectX runtime. It would probably be better to have two installs (core and extra components) but I guess that would just cause more confusion.

“It’s impossible to tell what version of DirectX 9.0 you’re actually running”

What about dxdiag?

Also, I think there is good reason to believe that some programmers are so lazy that they have their applications attempt to install their preferred version of DirectX, even one that is a couple of version numbers behind, without regard to what is already there and without giving the user opportunity to say no.

Paul’s definitely right… In Vista, I am routinely prompted by game installers to install DirectX9. Microsoft has provided good instructions for years and years on how to properly detect DirectX and Windows version numbers, and developers routinely ignore them.

The major problem with this is that all these “versions” have differently named D3DX DLLs, leading to lots of application incompatibilities. These aren’t being updated, too. You’d really need to download all the versions, just for this one DLL.

Developers have been screaming at Microsoft to fix this to no avail.

Checking one’s windows version speaks volumes about Microsoft and its versioning!

On that note, why isn’t the dot net framework numbered like so

v.1.0
v.1.1
v.2.0

What’s with the 1.1.4322 ?!!

“I’ve installed several games over the past year which inexplicably demanded to re-install DirectX 9.0c; now I know why.”

Ha. Don’t give them too much credit.

Last week I installed “Unreal Gold”, from i1999/i and iit tried to install DirectX/i. DX7.1, in fact.

Most game installers will just blindly try to install their pack-in copy of DirectX, regardless of version numbers.

  1. The .NET Framework version numbers are simply the full build versions. We need full build versions because .NET Framework betas are public, which is a good thing, and people need to be able to distinguish between different betas.

Only developers ever see the full build numbers – for the public it’s simply 1.0, 1.1, 2.0 – so I don’t know why this is even an issue.

  1. Game installers “blindly” try to install their DirectX version because it’s actually Microsoft’s DirectX installer that’s supposed to handle the versioning. The Microsoft installer will never overwrite newer files, it will only install missing files. So it’s safe to run in any case, which is exactly what the game installers do.

  2. You MUST run the installer of whatever DX version comes with your latest game because, as Jeff discovered, numerous files are different and regularly updated within the same “9.0c” version number of DirectX.

For the pedants: I meant to say that the Microsoft DirectX installer only overwrites older files or installs missing files.

The perceived problems with DirectX versioning and game installs is mostly a result of lazy/stupid game installer writers. I should know, I work as a software engineer at a game company. I repeatedly have to educate our build/installer engineers about the proper procedures for installing DirectX, which are fairly clearly outlined, if you take the time to research it. Microsoft recommends that game installers silently install the version of DirectX that the game is built for. If you don’t do this, chances are great that your game won’t run properly - no fun for the customer and no fun for tech support. The DirectX installer will not downgrade to a lower version, it will only replace files with lower version numbers. And as others here have pointed out, the core DirectX runtime (9.0c) has not changed since 9.0c was first released, only the satellite DLLs.

Here’s the relevant doc…
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/Installing_DirectX_with_DirectSetup.asp

Cheers.

“For the pedants: I meant to say that the Microsoft DirectX installer only overwrites older files or installs missing files.”

I have a readme file for a major music sequencer program that states that the user shouldn’t be concerned because they (the developers) are expecting Windows to self-repair any damage that is done by their installation process.

However, my memory may be foggy (it may be Windows Media components, [as well as | instead of] DirectX.

Personally, I raised a support ticket for that one to make it clear that taking that sort of chance was not reasonable in an established mainstream product of such price (incredibly expensive) - that, and it also ignored all principles of multi-user support, user security, etc.

I thought vista was going to ship with DirectX 10?

I’ve been using some Managed DirectX since the Summer 2004 release – DirectInput. As long as I’ve got any SDK release past that, it’ll work fine.

What’s semi annoying is that the Managed DirectX installer is different that the main install, and is a total bitch to find outside of the SDK.

Here’s a bit more info on the new files added in each “bi-monthly release”:

a href="http://www.google.com/search?q=toymaker+installers+distributesbtnI=1"http://www.google.com/search?q=toymaker+installers+distributesbtnI=1/a

This makes installing new games a bit of a crapshoot. They offer to install DirectX 9.0c, I think “no, I already have that version installed” so I opt not to re-install. Then when I run the game… missing file error!

That’s the problem with keeping everything at the same “version”.

There is some way for developers to tell the difference.

Over the weekend I installed the demo for Caesar IV. It did the standard, let us install Direct X for you, since dxdiag said I had 9.0c I ignored it. I had updated all my drivers and stuff like direct X back in Feb, so the Feb or Dec version of 9.0c installed.
Firing up the game it said that I had an old version and needed to upgrade to 9.0c, talk about a fun phone support problem. So I did a reinstall from the aug version, pulled from microsofts site, and it worked with that.

The reason for the persistent revision is because of particular Microsoft applications requiring 6.0c. The apps are -hardcoded- for 6.0c.

Vista will ship with both DirectX 9.0c (whatever current revision) and 10. That’s because there will be few if any DX10 capable video cards when Vista launches. In fact the Aero desktop itself runs on DX9, not DX10, for this very reason…

As for game installers, again: ALWAYS INSTALL THE DIRECTX 9.0C THAT COMES WITH YOUR GAME! ALWAYS! Silently installing this version is a GOOD idea because otherwise the user will skip the step thinking “oh, I already have that.” NO YOU DON’T.

You only need to be careful with really old DX versions, pre-8 or so – those might mess up your system if you let them install.