As a newbie to releasing DX9 games, I’ve just been bitten by this 3-year old problem, so I’ve been digging around on this missing DLL issue. I’ve found that the real explosion of pain began in 2005, when MSoft did weird releases of DirectX9, including a new and different DLL every couple of months for a while.
They provided a DX9.0c installer, but… it failed to add all the different possible DLLs an app could reference. So players had problems, and simply re-installing DX9.0c didn’t fix anything.
The developers complained, and MSoft told them to ship all games with the DX runtime installer that came with their exact version of the developer package, adding 10-20 megs to the download size. Lame.
Many users simply chose to download the individual missing DLLs, and slap them in their windows/system32 folder. That works, but several shady websites began offering these files, within which could be hidden malicious code.
The developers often found themselves shipping the game with the DLL files in the game’s root directory. This too works, but still bloats the download size. PLUS, doing so is expressly against MSoft’s EULA, for what it’s worth.
A few developers have made these files available in their own install packages, which fixes the EULA problem, but otherwise is only better than shipping with the whole dang runtime installer.
Finally, I’ve found posts by a MSoft guy who swears that the real, best solution is to tell your players to go use the MSoft Web Installer: