I'm a little unclear about the versions of the managed DirectX DLLs released in the past, compared with the ones released though Windows update, and the ones that will be released in the future. When I use "Add reference..." it finds a bunch of versions of DLLs. How do I know which ones to use If I use the ones that came with Windows Update, do I still need to distribute these DLLs with my application
If I tell my customers to download .NET 2.0 and DirectX 9.0c, am I covered if I don't distribute any DLLs
If the next version of managed DirectX doesn't have these DLLs (or the next version of these DLLs break my application) I'm stuck. For instance, I must distribute the DLLs for my original application or else it doesn't work (because the APIs have changed):
http://gosub.com/OpenSource/DirectXControl/DirectXControl.htm
http://gosub.com/OpenSource/DirectXControl/DirectXControl.htm
Does Microsoft guarantee that future versions of the managed DirectX DLLs won't break my application The good thing about DirectX is that it's compatible with all the previous versions. A DirectX 5.0 application should run on Windows XP with DirectX 9.0c (baring bugs and driver problems). If the Managed DirectX DLLs that are installed in the future are not compatible with the ones installed today, my application breaks.
What about D3DX and native DLLs
Thank you,
-Jeremy

Question about managed DirectX DLL versions (and compatibility with future versions)
Tony at Invu
Use the new web installer. You can find the link via http://msdn.com/directx/sdk.
Juany
I'm not distributing this on CD, so I don't want to use DirectSetup, or have a gigantic executable that includes it.
So, if I understand this correctly, I can tell my customers that they must first download .NET 2.0 and DirectX 9.0c (links to Microsoft's web site). Then I can distribute the managed DirectX DLLs and (for this release) d3dx9_27.dll, and everything should work. I have tried this, and it seems to work.
The sad thing is, that my 95K program is now 1.4Mb. Any way to shrink that down
-Jeremy
dihoch
The good thing about the DirectX (non-managed) API is that it's backwards compatible. DirectX 6.0 applications run without downloading that specific API (as long as you have DirectX >= 6.0). End users understand that you need at least version X of DirectX, but I don't think they would appreciate being forced to download this "special" version of DirectX before running my application.
I think the best solution would be for MS to freeze the managed API, and include it as a standard DirectX download (DirectX 9.0f, or whatever you're up to now). As long as all future DirectX's support that API, it would be easy for the end user.
And easy for the developer. System requirements: Windows 98/2000/XP, .NET 2.0, DirectX 9.0f (or higher).
-Jeremy
Uwe Lesta
-Jeremy
Escimo
Technically yes that would seem to be the case, however I've seen some posts implying that distributing the files in this way is against the EULA - you are supposed to only distribute them using DXSetup. So if it doesn't work on somebodies machine then you may be out of luck getting any support.
If someone is happy downloading DX9 and the .Net framework, they are not going to be too offended at 1.4Mb anyway. Lets face it 1.4Mb is barely a blip these days.
I suspect you could write something that selectivly downlaods juse the bits you need like I see some of the MS installers doing, but thats not something I know how to do.
Don't forget that since your code is a control its not just you that has to ship the other assemblies, everyone who uses your control will have to too so you should work out the story otherwise users of your control will have the same problem.
atmaj.desai
As David notes above, this is now possible with the December 2005 release of the SDK. You can point people at the .NET Framework 2.0 installer and the new DirectX End-User (Web Setup) installer and distribute your naked application.
Paul
Ravs Kaur _ MS
this comes with the dec. DirectX update witch is what david was telling you.
- DirectX Runtime: We've now created a cumulative redist to help you address some of the small (and not-so-small) annoyances with the runtime. In addition, we now offer a web installer that will incrementally update your end user to the latest DirectX runtime libraries.
this should be all you need to send out with your app, ppl runing your app run the installer and it will install the most updated dll's you need to run your app.
this is just for the directX portion of your app.
Muzzzy
"DirectX End-User Runtimes (December 2005) Web Installer" The name didn't fill me with confidence that the next version of the installer would bother ensuring that former versions would continue running.
-Jeremy
StatiK EffecK
For example DirectX 9.0c download http://www.microsoft.com/downloads/details.aspx FamilyId=0A9B6820-BFBB-4799-9908-D418CDEAC197 is dated 8/2/2004, so even if it did have a version of managed directX in it, it would be an old one.
MDX assemblies are not backwards compatible, but if you check out the version numbers they do not change as often as you think. Most of the assemblies have been at 1.0.2902 for 4 releases now (since Feb 2005). The Direct3DX one, does change each release because it is dependant on D3DX.dll which also changes each release (if you useD3DX from your *unmanaged* app then you also have to disribute this DLL along with your application)
Future versions won't break you application because they are designed to run side by side - your application should never run against a different version of the DLLs. Its your responsibility to use the redist files in the SDK to construct an installer that makes sure this happens.
Since you don't know what people have on their machine you need to consider this as part of your installer strategy.
As I mentioned D3DX needs to match the vesion you built against. However if you only use native code and don't use D3DX then the files from the windows update should work just fine.
This may help
http://msdn.microsoft.com/library/default.asp url=/library/en-us/directx9_c/directx/directsdk/ProgrammingGuide/InstallingWithDirectSetup.asp
CSH
The only other option really is to allow configuration of the websetup system which means you'd need to redist the configured websetup with your application.
If you're concerned about minimizing installed software on the end-user's machine then you need to configure the redist and deliver it with your application. Alternatively, if you're more interested in minimizing your download size, you'll need to go with the full redist which might install some components your application does not need. This isn't really that far off from your "DirectX 9.0f" suggestion -- replace "9.0f" with "(December 2005)".