2

我正在创建一个安装程序,它检查注册表中未安装的软件/组件,并在需要时安装它们。我遇到的问题是,如果我在 Windows 的新副本上从 DirectX 最终用户运行时 Web 安装程序安装最新的 DirectX 最终用户运行时,我需要运行的软件正确启动(http://www.microsoft.com /en-au/download/details.aspx?id=35)。

如果未安装,我得到的错误是“程序无法启动,因为您的计算机中缺少 d3dx9_43.dll”。现在,即使在全新安装的 Windows 中,来自 HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX 的 DirectX 注册表项也会显示版本键的“4.09.00.0904”。

所以我的问题是,我在哪里查看注册表以检查是否安装了 DirectX 最终用户运行时的所有组件。

非常感谢您的帮助。

4

1 回答 1

2

您没有提及您使用的安装程序、脚本或编程语言。知道这会很有帮助。

如果您不担心下载大小,最简单的方法可能是总是盲目地安装 DirectX Runtime。如果它已经存在,安装它不会有什么坏处。

以下是您可以考虑的其他一些事项:

如果您使用的是 Vista 或更高版本(包括 Win7、Win8、Server 2K8),那么您可能不需要安装任何东西。因为这些操作系统可能预装了二进制文件。同样适用于 XP SP2 及更高版本。您的“Windows 的新副本”是否比 XP 更新?

另一个简单的想法是在 Windows\System32 或 Windows\SysWow64 目录中搜索 d3dx9_43.dll 的存在。

以编程方式,您可以让安装程序代码检测 DLL 的安装,如下所示

#include <windows.h>
BOOL HasD3DX9()
{
    HMODULE hMod = LoadLibrary("d3dx9_43.dll");
    return (hMOD != NULL) ? TRUE : FALSE;
}
于 2012-07-24T08:54:21.330 回答