At the end of 2004, the D3DX library was changed from a statically linked library to a dynamically linked library.Mendel said:First of all, isn't this like third or fourth version of DirectX 9.0c?
I still think this version numbering, or lack thereof is kind of confusing to users, why not increment the version number?
What is new in this version, why is it required for 3dmark?
There have been 11 versions of the SDK, but only ONE version of DirectX 9.0cisn't this like third or fourth version of DirectX 9.0c?
Because the runtime hasn't changed. If the runtime doesn't change then there should be no version number changes - it's that simple :smile:I still think this version numbering, or lack thereof is kind of confusing to users, why not increment the version number?
In all fairness, any person or company who distributed their application without the dependencies was taking a big risk. Assuming anything about the end-user is nothing short of a gamble.This is the reason many new demos and games must ship with DirectX because it may be an updated d3dx-file someone out there does not have and because the game requires just that version of the file.
JHoxley said:In all fairness, any person or company who distributed their application without the dependencies was taking a big risk. Assuming anything about the end-user is nothing short of a gamble.
No.CI said:Does that mean the most updated d3dx9_?.dll will also work for games requiring previous versions? I just usually search for the particular dll and dump into windows/system folder. Not even registered. Seems to work fine, at least for the couple of games that needs it before they run.
Yeah, there is that. A lot of indies were up in arms about it for the Feb '05 / Apr '05 builds as it really messed up their distribution medium. Microsoft heard this and got on the case with the limited D3DX-only distribution (weighs in at about 1mb I think) mode and later the DX web setup. Mis-education is a terrible thing, but there isn't any excuse short of laziness these days...Yes, I agree but some mirror sites for downloading game demos used in the past to strip out the DirectX redist to save space and bandwidth. Now they can't do that, but some still may because they don't know why they can't.
From what the DirectX team told me, it's to do with the "scare factor" of having a new update distributed every 2 months. Especially in the corporate market where they tend to independently verify any new files from Windows Update before letting it distribute across their internal network.geo said:Why didn't MS push this with Windows Update?
Well I'll enjoy laughing at you when your computer implodes on you if a security vulnerability is ever detected with D3DXI just usually search for the particular dll and dump into windows/system folder. Not even registered.
My pleasure.digitalwanderer said:Thanks Bludd, I'd wondered about the differences 'tween the versions of 9.0c but never enough to ask...your explanation helped a lot.
JHoxley said:From what the DirectX team told me, it's to do with the "scare factor" of having a new update distributed every 2 months. Especially in the corporate market where they tend to independently verify any new files from Windows Update before letting it distribute across their internal network.
It's an optional component used/included in only a small subset of software thus they can't justify having it distibuted in that way.
JHoxley said:Well I'll enjoy laughing at you when your computer implodes on you if a security vulnerability is ever detected with D3DX
D3DX was moved to a dynamic and versioned package so that it could be serviceable/maintainable. I gather it was part of the general Microsoft push for better security and all that...
Thus, if you have any unregistered system DLL's it's highly likely that any Windows Update / whatever won't know about them thus can't/won't patch them. That big bad program running around trashing your system will be able to find it though.
hth
Jack
Advice directly from the DX team is that the installer should ALWAYS be executed as part of the general installation process. It's designed to quickly and silently return if it doesn't have to change anything (i.e. you're already up to date).CI said:What I don't quite understand is that for every new game that comes around, there'll be a need to install the DirectX redist that comes on the disc?
It shouldn't remove previous DLL's. A well behaved setup program won't remove core files that are needed for other applications.CI said:And will it remove previous dll thereby creating problems for the previous game that needs it?
As it currently stands you should have 5 D3DX DLL's if you're up to date. If you have all of those then the applications should be fine. If you're missing one then it'll get installed (provided the ISV is behaving themselves). Provided they are installed correctly, then they'll get updated if theres a change necessary (e.g. a security flaw is found) - but that shouldn't break them for the applications.CI said:Since they are not backwards compatible, that means I have to start collecting these dlls along with the patches for particular games if I wanna avoid the DX reinstall over and over again. Right?
JHoxley said:As it currently stands you should have 5 D3DX DLL's if you're up to date. If you have all of those then the applications should be fine. If you're missing one then it'll get installed (provided the ISV is behaving themselves). Provided they are installed correctly, then they'll get updated if theres a change necessary (e.g. a security flaw is found) - but that shouldn't break them for the applications.
hth
Jack
JHoxley said:Advice directly from the DX team is that the installer should ALWAYS be executed as part of the general installation process. It's designed to quickly and silently return if it doesn't have to change anything (i.e. you're already up to date).
It shouldn't remove previous DLL's. A well behaved setup program won't remove core files that are needed for other applications.
As it currently stands you should have 5 D3DX DLL's if you're up to date. If you have all of those then the applications should be fine. If you're missing one then it'll get installed (provided the ISV is behaving themselves). Provided they are installed correctly, then they'll get updated if theres a change necessary (e.g. a security flaw is found) - but that shouldn't break them for the applications.
I don't see any reason why you'd need to archive all the patches and DX redists. You can always run the DX Web installer to make sure you're ready to play.
hth
Jack
You only need one of them. I only have the December '05 SDK installed on my machine. It's "undefined" what will happen when you have multiple SDK updates installed at the same time...Basic said:Btw, what are you supposed to do with all the SDK updates?
I have most of the SDK's downloaded and archived. The .exe that you download is just a double-zipped archive, so you can get all the files out just by using your favourite zip-extraction tool. Thus if you get into the pattern of downloading the SDK every 2 months regardless of whether you're going to install it you should be able to get all the files.Basic said:Install all of them in the same base directory, new directory for each iteration, or maybe delete everything old before installing the new one. (I know the latest option isn't a good one.)
Bare in mind that changes to D3DX and DXUT (etc..) will break backwards compatability. For each release of the SDK the DX team have to check for any regressions against older samples - if there are any problems they have to upgrade as appropriate. As you can imagine, that's a lot of workBasic said:And where can I get all the updates? Just getting the latest won't give you all examples.
JHoxley said:Because the runtime hasn't changed. If the runtime doesn't change then there should be no version number changes - it's that simple :smile:
Technically the D3DX components have had a version numbering change, BUT they are *optional* components - most D3D applications use D3DX, but it is perfectly possible to not use it.
From what I gather, this is becoming quite a mess, because applications are forced to start the DirectX installer in their setup process, and lots of people are canceling it because they think they already have DirectX 9.0c installed, only to find that the application doesn't start because of a cryptic link error on the missing D3DX library.
Well, technically they haven't - this is nonthing more than a technicality. Direct3D is part of DirectX, it is the runtime and it is the core component. D3DX exists seperate to both of those - and is essentially a layer on top of Direct3D. For example, the core Direct3D runtime has no knowledge of the effects framework, HLSL and has no functionality for loading textures/graphics from disk (e.g. from bmp/png/jpg). That functionality is part of D3DX - the Direct3D helper library.Mendel said:Right. The runtime hasn't changed but technically they have.
It MUST be updated because the developer made the decision to use the optional component. It's basic software deployment to make sure that you install the components that your application depends on. Think of it as a set of prerequisites.Mendel said:If the runtime has not changed, why MUST it be updated in order for games to work?
It's not communicated to them and shouldn't be. The end user should not even need to know this is happening.Mendel said:This is very confusing for end users and has NOT been communicated through to them at all.
Agreed. Thats why we already have a number of D3DX DLL's - 24,25,26,27,28 - they are the version numbers for the D3DX component. "9.0c" is the version number for Direct3D (etc..).Mendel said:If there are required updates to a software, it should change the version number. That is what version numbers are for.
This is down to developers who haven't been paying enough attention for a number of yearsFrom what I gather, this is becoming quite a mess, because applications are forced to start the DirectX installer in their setup process, and lots of people are canceling it because they think they already have DirectX 9.0c installed, only to find that the application doesn't start because of a cryptic link error on the missing D3DX library.
Always install DirectX, and do it silently
It is strongly recommended that the game silently installs the DirectX redist that the game was built against. The DirectX install process is designed so that it will verify if anything needs to be updated and quickly return if it doesn't so there is no need to ask the user if they want DirectX installed.
Asking the user if they want DirectX installed can cause a lot of problems if the user assumes they have the latest DirectX redist installed and skips it, and the installer continues successfully. If the game requires specific version of D3DX or other updated functionality that was accidentally skipped, then the game won't work and the user will get very frustrated.
If for some reason, you must ask the user if they want to install DirectX at least abort and rollback the entire install process if they choose not to install DirectX. This will avoid any errors caused because the user doesn't have the latest DirectX redist installed when the game launches.