DirectX 9.0b not running properly..

Darc

Regular
Joined
Apr 18, 2003
Messages
89
all the users of my programs get Assembly Not Found (Microsoft.DirectX) errors, they all have DirectX 9.0b installed, what's goin on?

any help is appreciated, thanx.
 
They need to have the managed DX redistribution installed. :( It's 15 megs or so, you can find it on the DX download page.
 
if the user has the DX 9.0b SDK installed, it works, otherwise I just get the error, even with the Managed DX Redistribution I still get the error...
 
Do they have the .NET Framework 1.1 installed? Not sure but I think I read something about needing that for DX9 stuff to work...
 
I too get the same error. I have the managed SDK installed and it works fine on my machine. All other users have installed the latest version of DX9 and the .net framework.

My understanding of the .net framework suggests that Microsoft.DirectX.dll and its asoociated dlls should be resident in the users global assembly cache for the app to work. None of the users have it, so the latest DX9 redist is either not installing them or not installing them correctly.

Or possibly they are not meant to be installed, and must be resident in my applications current working directory, meaning i have to distribute my particular directx.dlls with it. This works but does not seem correct.

MSDN isnt too clear on the subject tbh, so Im interested in an actual respone. There must be a definitive line on how to get the dlls onto a users machine...

If you havent tried running one of your c# dx apps on a machine without the sdk installed you will not have seen this behaviour. If you have got your stuff running on another machine without the sdk short of copying the dlls over manually Id be very interested.


Shrew

I would also like to add that the directx.log files resident on users machines make no mention of the dll, whereas those with the sdk do.
 
I noticed this too, in the windows folder, Microsoft .NET\Managed DirectX\ doesn't exist on the users' computers, which does on my computer...
 
Are you sure your users are installing the *managed* directX components, after they've definitely installed .NET 1.1?

Using the process below, I have had no problems (or reports of problems) getting C#/DX apps to work on run-time (non-dev) machines.

The main 'gotcha' here, as far as I can tell, is that DirectX9.0 does not automatically install the Managed components, which is a really pain, if you ask me. So you have to manually run "<location of directx files>\dxsetup /installmanageddx".

(These were also included in another post recently, but I'll put them here again for completeness.)

Just to be clear, THESE INSTRUCTIONS SET UP A RUN-TIME (non-dev) MACHINE TO RUN .NET 1.1/MANAGED DIRECTX 9.0b APPS. However, THIS IS NOT A PUBLIC, DEPLOYMENT-READY PROCESS. (These instructions are too clunky to expect paying customers to follow them.) If you want to distribute your app to (potentially) paying customers, you'll have to figure out how to smoothly integrate the .NET 1.1 and Managed DX9.0b installs with your own installation process. I haven't worked through that yet so I can't really help there.

-----------------------------------------------------------
Basic Steps:
1. Install .NET 1.1 Framework
2. Install *managed* DirectX 9.0b
3. <Install/run your app>
-----------------------------------------------------------

Detailed Steps:
------------------------------
1. Install .NET 1.1 Framework
------------------------------

1) Download the .NET Framework from
http://www.microsoft.com/downloads/...e3-f589-4842-8157-034d1e7cf3a3&displaylang=en

2) Run it.



----------------------------------
2. Install *managed* DirectX 9.0b
----------------------------------

1) Download the DirectX 9.0b redistributable from http://www.microsoft.com/downloads/...DB-DCCE-43EA-87BB-7C7E1FD1EAA2&displaylang=en

2) Save the DirectX 9.0b redistributable to your hard drive.

3) Run the executable. When you run the setup, it will ask you where to unpack the DirectX files.

4) Choose an easy-to-remember location, like C:\DirectX.

5) After the files are done unpacking, run the managed DirectX install. To do this,

click on your Start menu
select "Run..."

6) In the Run textbox, type in "<location of directx files>\dxsetup /installmanageddx".
For example, if you installed the files to C:\DirectX, you would type in:
C:\DirectX\dxsetup /installmanageddx

This will install the Managed DirectX components to your machine.



--------------------
3. Run <your app>
--------------------

1) have them download, extract/install, and run your app.
 
I haven't tried it yet, but it makes sense, in a Microsoft "I'm going to make this as hard as possible for our users" sort of way, thanx :)
 
Darc, I had this problem but it was sorted when I indtalled the redist pack. I then recompiled my setup app and all has worked fine ever since.
 
slantz said:
The main 'gotcha' here, as far as I can tell, is that DirectX9.0 does not automatically install the Managed components, which is a really pain, if you ask me. So you have to manually run "<location of directx files>\dxsetup /installmanageddx".

Thats what got me. Thanks for pointing that one out.

Now I've searched through the redist files there is the warning in "directx redist.txt" about how to install the managed DX components. It never occured to me to look in the "license" directory for installation instructions. More fool me.

As to installing it for full scale apps - I think the .net framework and dx9 installed as a prerequisite are not too harsh.

Personally i'm inclined to distribute the extra managed dlls along with my app. Which funnily enough is part of what the strong versioning in .net can promote. But then I expect its against the EULA of the redist package to break it up like that.
 
well, I believe that if you're using the MS Installer for a .NET app, there's a way to get it to easily and transparently install the .NET 1.1 framwork as part of your installation experience. (I'm not sure of the specifics, but I crawled through the MSDN documentation and including .NET Framework with a .NET app install is supposedly an 'easy-to-use feature.')

You can also package the DirectX 9.0b Redistributable with your product, and then manually add hooks into your installer to install the managed run-time components.

Or, if you want the DirectX managed components installed more silently (and probably as a smaller distribution package), you can get the silent installer from MS by signing up as a MVLS. This has already been covered a bit in (http://www.xtremedotnettalk.com/t80725.html), but I don't think it got fully resolved there....

Hope that helps.

-Hiro_Antagonist
 
Back
Top