我希望为Windows 8创建一个程序的可移植版本,它需要VCRedist 2010和DirectX 10才能正常运行。但是,我无法使用安装程序,因为他们尝试安装到系统路径,并且,当我正在处理的计算机具有管理员权限时,我没有在我将要将其传输到的计算机上。经过大量的研究,似乎我可以在应用程序文件夹中包含VCRedist 2010和DirectX 10 dll文件,但是我无法找到所有必需dll的列表。如果这是真的,有人可以向我提供他们的清单,如果不是真的,有人知道另一种方法吗?
系统信息:32位操作系统,Windows 8
答案 0 :(得分:2)
这里首先要说的是你永远不会重新分配DirectX。它是操作系统的一部分,只能通过Service Pack,升级操作系统或Windows Update进行更新。自Windows XP Service Pack 2以来,情况确实如此,但这是一个很难理解的事实。
DirectX最终用户运行时软件包(又名DXSETUP和DXWSETUP)从不在任何版本的操作系统上安装任何版本的DirectX!这是真的十多年了。
如果您的应用程序使用旧版DirectX SDK中附带的并排可选组件之一,如D3DX9,D3DX10,D3DX11,D3DCompile#43,XAudio 2.7,XInput 1.3或XACT,那么您必须使用旧版DirectSetup包来重写这些DLL,因为它们永远不属于操作系统。使用DirectSetup始终需要管理员权限。
有关更全面的解释,请参阅Not So DirectSetup。
对于Windows 8标准用户应用程序,更好的选择是使用DirectX 11并使用众多open source replacements之一来实现D3DX功能。如果您需要XAudio,可以使用XAudio 2.8。如果您使用D3DCompile,则可以将其与Windows 8 SDK中的应用程序并排包含在内。如果您使用XInput,则可以使用XInput 1.4 or the older XInput 9.1.0。
请注意,Windows 8.0现已停止使用。虽然仍然支持Visual Studio 2015的目标,但这些用户应该升级到Windows 8.1或Windows 10以维持支持。在Windows 8.1中,D3DCompile#47 DLL已经是操作系统的一部分。
Visual C ++ 2010,2012,2013和2015 DLL可以并排包含(又名application local deployment)。您可以使用带有props文件的VS 2010使用Windows 8.1 SDK,但我建议您使用更新版本的Visual Studio,它可以更轻松地使用Windows 8.1 SDK内容。
此处的另一个选择是使用VS 2013,目标Windows 8商店,并使用它来处理不需要管理员权限的所有部署。您仍然必须使用Direct3D 11并避免使用传统的DirectX SDK组件,包括D3DX9 / D3DX10 / D3DX11。