我正在创建一个安装程序,它检查注册表中是否有未安装的软件/组件,并在需要时安装它们。我遇到的问题是,如果我在全新的 Windows (http://www.microsoft.com) 副本上从 DirectX 最终用户运行时 Web 安装程序安装最新的 DirectX 最终用户运行时,我需要运行的软件会正确启动/en-au/download/details.aspx?id=35)。
如果未安装,我收到的错误是“程序无法启动,因为您的计算机缺少 d3dx9_43.dll”。现在,即使在全新安装的 Windows 中,HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX 中的 DirectX 注册表项也显示版本 key 为“4.09.00.0904”。
所以我的问题是,我应该在注册表中的何处查看以检查是否安装了 DirectX 最终用户运行时的所有组件。
非常感谢您的帮助。
最佳答案
您没有提及您使用的安装程序、脚本或编程语言。了解这一点会很有帮助。
如果您不担心下载大小,最简单的方法可能就是始终盲目安装 DirectX 运行时。如果它已经存在,那么安装它不会有什么坏处。
以下是您可以考虑的其他一些事项:
如果您使用的是 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;
}
关于installation - 检查 DirectX 最终用户运行时的注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627013/