HighTower

(split from http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=1221168 to make a new question)

It is interesting that you say that because I am testing a VB6 app that was working fine on XP and below but now fails on Vista when it tries to create a DirectX8 object, specifically

Set oDX = new DirectX8

throws Error 429, ActiveX failed to create component.

Running in XP SP2 compatibility mode does not work either.

I would be really grateful if anyone has any ideas on this.  I also tried running the latest DX9 redistributable because I heard that was providing backward compatibility, but to no avail.

Thanks.



Re: Game Technologies: General DirectX8 and Vista Compatibility

HighTower

I have read on this forum and elsewhere that Vista supports earlier versions of DirectX through the use of DirectX9. Yet, I have a DirectX8 application that works perfectly well on XP but fails on Vista. Specifically:

set oDX = new DirectX8

returns Error 429 ActiveX failed to create component.

The reason this happens is because dx8vb.dll is missing on Vista RTM. When I copy this file onto my system and register it, my application works. So my questions:

1. Is dx8vb.dll missing by design, or will it be added in later Vista DX distributions
2. I need to fix my application for Vista so is it safe to redistribute just this dll (I tried running the DX8.1 runtime distribution on Vista to reinstate this file but without success. The installation appears to perform a version check and then report success without actually doing anything.)

Incidentally, I am not alone in experiencing this problem:
http://toca.game-editing.net/forum/viewtopic.php t=785&sid=e86d82f7f792a21560de765ce70dd023
http://www.bhmotorsports.com/board/viewtopic.php t=41474&sid=56
http://amabilis.com/eve/forums/a/tpc/f/2046019974/m/99610713631
http://www.truevision3d.com/phpBB2/viewtopic.php t=14624

Thanks.





Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

Have you ever had to install this file on a clean windows installation before I'm wondering how the file normally gets onto peoples machines. Since its a DirectX 8 file its not something that DirectX 9.0 will install and it seems unlikely that it would come with the OS since DirectX 8 totally predates windows XP. (Let me correct myself there since DirectX 8.1 shipped with Windows XP)




Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

After some research I've come to the conclusion that this file shipped with XP since it came in the box with DX8. The DX9 installer doesn't include this file so there is no currently supported way to get the file on the machine.

Hopefully someone in the Vista team can let us know if this file was an official omission or not.






Re: Game Technologies: General DirectX8 and Vista Compatibility

Ryan J. Bury


I'm currently searching for a solution to the exact same problem. I've tested both with DirectX7 and DirectX8, called from a VB6 app under Windows Vista, and in both cases, the initialisation of the main DX object (set in the same way as in Hightower's post above) comes up with an error #429.

The error message seems to suggest that an OCX or DLL might be missing, but as it doesn't specify which one, it's not too helpful.

If there's anyone who has or can find a solution to this (perhaps a Microsoft employee or another developer who's already come across the problem), it would would be hugely appreciated.

Thanks,
Ryan





Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

Check this out http://forums.microsoft.com/msdn/showpost.aspx postid=1231805

Its looking like the DirectX activeX control is not on vista by default as it was in XP. We are currently trying to work out if DX9 is supposed to install this or not but either way its not there in Vista and since tis part of the DX redist you are not technically supposed to install it yourself. The reports claim that the DX8 redist isn't installing it either.






Re: Game Technologies: General DirectX8 and Vista Compatibility

HighTower

Just to confirm, I have never needed to distribute dx8vb.dll before. My installer only runs the DirectX8.1 redistributable if it detects earlier versions of DirectX.

If I run DXDiag on a clean Windows XP SP2 then version 9.0c of DirectX gives dx8vb.dll as one of its files (as well as dx7vb.dll). So I can only assume that the file was there as part of DirectX9 but has been removed for Vista.

I could redistribute dx8vb.dll to fix my application but as you say this is unsupported. But running DirectX8.1 or the latest DirectX9 runtime distributions does not fix the problem either.

I am in the middle of remastering my CD-ROM titles for Vista and need to know what to do ASAP.





Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

I am awaiting a reply from the DirectX team on this one.... your patience is appreciated




Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

I am awaiting a reply from the DirectX team - their response time to MVPs varies.

If its very urgent to your business you might want to call Microsoft support and escalate the issue yourself. You may have to pay but since you have a business issue that may be worth doing

I have had someone confirm for me that if you look in the redist CABs for DX9 these files are there so my guess is that this *should* be supported by running a DX9 install even if they have chosen not to include them in the OS.

This has also been raised in this thread http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=1223939

(oh and I'm moving you back to the DirectX forums, sorry that the Vista people were not more helpful)






Re: Game Technologies: General DirectX8 and Vista Compatibility

DavidAWinter

I had the same problem.

I was able to resolve it by copying DX8VB.DLL from an XP system into the Windows\System folder of Vista and registering it as a COM object (you know, the whole regsvr32 thing...)

Microsoft mistakenly forgot to include that DLL in the Vista installation, so you need to include it in your own games setup.

Hope that helps.

David





Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

I was able to resolve it by copying DX8VB.DLL from an XP system into the Windows\System folder of Vista and registering it as a COM object (you know, the whole regsvr32 thing...)

Which is in violation of the DirectX EULA - though I have no idea about how this is enforced.

Microsoft mistakenly forgot to include that DLL in the Vista installation, so you need to include it in your own games setup.

For now we have no confirmation of mistake or not - it could be that there is a compatibility/security issue and it was omitted on purpose.

However your work around is something people can try, just be aware that Microsoft will probably not support you if you have any issues (though how much support you get for a dx8 dll is probably a valid point here) using it.






Re: Game Technologies: General DirectX8 and Vista Compatibility

DavidAWinter

I'm not sure how it could be a violation. The file is included as part of the Direct8 and 9 redistributable. It's no different than installing the file via the directx installation package. The difference being that you can't install either DX8 or 9 onto Vista to get that file into the system. I'd be more than happy to stick to the regular system of installing an DirectX redistributable package onto the system and putting that file in place, unfortunately, that no longer works.

Microsoft claims they fully support VB6 on Vista. They also claim they fully support DirectX8 on vista.. so.. if they fully support both, then that file should have been included. So I consider it a mistake.. it had to have been an oversight. There's simply no way they could have left it out on purpose requiring a huge multitude of commercial games, medical applications, physics simulations, and myriad of other VB6 created programs to be rewritten in VB.Net and using DX9..which in of itself requires a huge rewrite of code. Not to mention having to deal with the performance hit and unsecured executable.

VB6 can't use DX9 because it was designed for VB.net (a mistake too but that's personal opinion). So, Microsoft is either going to have to change their EULA and allow that file to be installed as part of the games installation package, or they're going to have to install it onto the system during on of their Windows Updates. VB6 applications that use DirectX (and there are far, far more commercial programs doing this than some would believe) require this file. There are no if's, and's, or but's.

David





Re: Game Technologies: General DirectX8 and Vista Compatibility

The ZMan

Its a violation because the EULA states that you can only redistribute the files in the form they come in the redistributable package. i.e. inside the CAB files and call dxsetup to extract them. Its reported that this isn't actually working. I'm not saying its ethically right or wrong but thats the way the EULA is worded.

'Fully supported' is probably not a word you will actually find in a Microsoft claim. Microsoft do, IMO, a very good job of backwards compatibility for Vista with both VB6 and DirectX apps supported VERY well. But nobody will ever sign 100% in blood. For example after an escalation to the DirectX team last week we found part of DirectInput is not included in Vista for technical reasons see http://forums.microsoft.com/MSDN/showpost.aspx postid=1198467

I don't doubt your claims or the significance of this - this is why I am escalating it... like I said sometimes it takes a while to get through the system. I wish there were more members of the DirectX teams who read these forums and acted on the significant issues but until that happens you are stuck with the MVPs escalating things though their channels.

If people want to help they should call and use their free days of support for Vista and push this hard until there are multiple paths of escalation coming at the Vista and DirectX teams from all directions. It also helps if you can show a potential revenue loss.

If people who are suffering from this issue were to post in this thread with product details (please no more opinions on the right or wrong of the situation - I think we all know the issue) then it would give Microsoft an indication of how widespread the issue is and which level of products it is affecting. Some nice big commercial products would of course help sway the case.






Re: Game Technologies: General DirectX8 and Vista Compatibility

DavidAWinter

I'm sure you've probably seen this, but this is the support statement from Microsoft on VB6 and vista.

http://msdn2.microsoft.com/en-us/vbasic/ms788708.aspx

I can not find DX8VB.DLL on either list of supported or not supported support files. Likely because, although it's specific to VB6, it's distributed with DirectX.

In my case, the program effected is a game called maximum-football (www.maximum-football.com). This is a commerical video game (providing both arcade play and coaching simulation).

I simply can not upgrade that project due to;

- Length of time to update.. it would take me months to move the code to VB.net and DirectX9

- Cost. Microsoft isn't paying me to update, so they shouldn't be forcing me to.

- Performance. I have a test harness that I use for testing portions of the game before they go into the central stream of code. I have upgraded one of these test harness to VB.net (although still using the DX8 COM DLL) and the performance was brutal. VB6 clearly gives better performance. (and yes, I had the .net build in release configuration). I simply can't update my code to these new technologies and then ask my customer base to go and buy brand new computers to play a game.

- VB.Net's executables are not secure. I simply don't trust a commercial app to be left in IL. Nore do I trust the obscuficators (sp ).

At this point, I'm telling my customer base, and potential customers to stick with WindowsXP. Those that have already migrated I tell them to download a copy of DX8VB.DLL that is available from various locations and register it with their system. At the moment, my installation package does not include that particular file, but it probably will in the next month to two months simply because it's poor customer experience to buy a game and then have to go and download system files from some 'back alley' on the Internet.

As to your point about raising concern. I agree, everyone should. Unfortunately, my personal experience is that it goes unheard. I have even approached MSFT staff at developers conventions during break out Q&A sessions about support for VB6 and DirectX and honestly, they look at me like a deer caught in headlights. The honest feeling I get is that either they just have nobody there that understands this stuff, or nobody at Microsoft cares about the millions of visual basic developers NOT building web sites or databases. I have offered to sit down with Microsoft staff and show them the challenges (and downright impassable obstacles) they are lumping onto existing developers, but frankly they seem to just not care if you're not coding in C++/C# and using the latest, greatest (which usually it isn't) technologies.

To give an extremely short list of the other VB6/DX8 commercial apps I'm aware of. I know of a company here in BC that builds applications that allow dentists to work with virtual models of a patents teeth prior to surgery. I know of another company that built a 3D virtual 18 wheeler driving simulator for teaching new drivers before getting on the real road. I know of another group of people building simulators in the Netherlands to simulating flooding in regions so they can properly develop dikes and other defenses.

I also know of at least one commerical graphics engine (www.truevision3D.com) that makes use of that dll as well.   

One other big one I forgot about. My 3D modelling program (which is what I use to create and animate my 3D models), TrueSpace 6.0 has DX8VB.DLL as a dependency. Milkshape, 3DCanvas, etc.. all have that dll as a dependency.

So, simply put, by not properly supporting existing games & applications a lot of commercial ventures are at risk... DirectX simply isn't a C++ thing anymore...

David





Re: Game Technologies: General DirectX8 and Vista Compatibility

David Weller - MSFT

DavidAWinter wrote:

I'm sure you've probably seen this, but this is the support statement from Microsoft on VB6 and vista.

http://msdn2.microsoft.com/en-us/vbasic/ms788708.aspx

I can not find DX8VB.DLL on either list of supported or not supported support files. Likely because, although it's specific to VB6, it's distributed with DirectX.

It's two issues: Other than what is explicitly listed in the link you cite above, there is no other VB6 support. In addition, DX8 has been unsupported for quite some time. There will not be any support for DX8VB.DLL. It was never in the Windows Vista test matrix and never will be.

DavidAWinter wrote:

- Cost. Microsoft isn't paying me to update, so they shouldn't be forcing me to.

Nor, from what I can tell, is Microsoft forcing you to adopt Windows Vista.

The end-of-life cycle for VB6 and DirectX8 has been known for a very long time.