Visual c++ 哪个是Microsoft Visual C++;这四个版本中都需要2008运行时

Visual c++ 哪个是Microsoft Visual C++;这四个版本中都需要2008运行时,visual-c++,Visual C++,我需要安装微软Visual C++ 2008运行时(x86),但是当我搜索谷歌并查看了这个问题时,我知道微软提供了4种不同版本的微软Visual C++ 2008运行时 Visual C++ 2008可重分配程序包(x86) 发布日期:11/29/2007 微软Visual C++ 2008 SP1可重分发软件包(X86) 发布日期:9/16/2008 微软Visual C++ 2008 Service Poad 1可重分发包ATL安全更新 发布日期:2010年9月29日 微软Visual C

我需要安装微软Visual C++ 2008运行时(x86),但是当我搜索谷歌并查看了这个问题时,我知道微软提供了4种不同版本的微软Visual C++ 2008运行时

<微软> Visual C++ 2008可重分配程序包(x86) 发布日期:11/29/2007

<>微软Visual C++ 2008 SP1可重分发软件包(X86) 发布日期:9/16/2008

<>微软Visual C++ 2008 Service Poad 1可重分发包ATL安全更新 发布日期:2010年9月29日

<>微软Visual C++ 2008 Service Poice 1可再分发包MFC安全更新 发布日期:2011年6月7日

现在我应该下载哪一个二进制文件,如果我下载第四个,我应该能够运行用第一个运行时构建的应用程序(上面提到的:1。微软Visual C++ 2008可重分配程序包(x86)-日期:11/29/2007)。p> 或者我应该按顺序一个接一个地安装它们,你能指导我吗

供参考:1。在发布之前,我已经搜索了stackoverflow,但没有找到答案。
2.我在谷歌搜索了这个词:-VC++2008

我会按时间顺序推荐所有这些词。 一些写得很差的安装程序(yup..InstallShield)使用二进制自定义操作,这些操作可能在清单中具有硬编码的依赖项。 它重量轻,彼此不冲突

一,。微软Visual C++ 2008可再发行包(X86)日期发布:11/29/2007

这是使用Visual Studio 2008编译的32位(x86)应用程序所需的

二,。《微软Visual C++ 2008 SP1可再分发软件包(X86)》发布日期:9/16/2008

与上面相同,只是它包含来自Service Pack 1(SP1)的更新。如果您使用Visual Studio 2008和Service Pack 1编译应用程序,请使用此应用程序,而不是上面的应用程序

可以从IDE内部的帮助->关于中检查Visual Studio的版本和service pack级别

三,。微软Visual C++ 2008 Service PACK 1可重新分发包ATL安全更新日期发布:9/29/2010

四,。微软Visual C++ 2008 Service PACK 1可再分发包MFC安全更新日期发布:6/7/2011

我无法从名称上判断这两个是对上述可再发行包的可选更新,还是包括完整的可再发行包和可选更新

无论哪种方式,只有在应用程序是用ATL或MFC编写时才需要它们


如果这太令人困惑,请注意,在分发应用程序时,您甚至不需要使用任何这些可再发行安装程序。您只需将所需的运行时DLL与可执行文件放在同一文件夹中,即可正常运行

作为Visual Studio安装的一部分,所需库的正确版本将复制到计算机中。您可以在以下目录中找到它们:

\Microsoft Visual Studio 9.0\VC\redist\x86

直观的选择是正确的,请安装最新版本。这些安装程序还部署一个发布者策略文件,该文件将请求任何旧版本的程序重定向到新版本。这是一种基本的机制,通过这种机制,他们可以获得关键的bug修复或安全更新


或者更直截了当地说,发布者策略是针对DLL地狱对策的一种对策。它们工作得很好,我从未听过有人抱怨这些DLL的版本控制问题。更典型的DLL地狱问题是用旧版本覆盖DLL,这在这些并行DLL中是不可能发生的。当你的程序要求一个新版本(查看.manifest文件)时,部署一个旧版本是一个失败的尝试。

我尊重所有回答的人,但恐怕我已经按照@andred的建议采取了行动,它对我起到了作用。在遇到许多错误和错误消息后,我终于能够运行PHP5.2和PHP5.3的两个版本以及Apache的两个版本和mysql的两个版本,因为有一个与VC++6和VC++9相关的问题,在VC++6中编译了旧的二进制文件,在VC++9中编译了新的二进制文件,但仍然(上次我检查时)org并没有用PHP.net使用的相同版本编译apache,所以非常感谢上帝和你们所有人的支持。顺便说一句,我用的是windows,但不是所有东西都是向后兼容的,对吗?如果程序采用的是旧版本,而您使用的是不兼容的新版本,那么会不会出现问题?我的意思是“完全向后兼容”。微软是一家有趣的公司。如果更新破坏了您的程序,那么他们将为您提供解决方案或修补程序。不收费,您可以拿回支持电话费。我个人两次利用了这个机会。顺便说一句,不适用于C/C++库。是否“可以将所需的运行时DLL与可执行文件放在同一文件夹中”稳定且受支持?如果是这样的话,为什么开发人员似乎从来没有这样做过?是的,它是稳定和受支持的。大约从2000年开始,也许在2000年之前,这就是推荐的做法。我不知道你在想什么。我看到很多这样的人。在macOS术语中,应用程序的目录是应用程序包。它的所有依赖项都应该放在应用程序目录中。系统文件夹中不存在用于系统文件的内容@Pacerier唯一开始使这项建议复杂化的是VS 2015附带的通用CRT,它实际上是一个系统组件,由Windows 10中的Windows Update提供服务。但这篇文章将这个答案的日期推迟了几年。通用CRT仍然支持应用程序本地部署,如果您需要支持底层操作系统,并且不想依赖已安装的更新包(或必须自己提供更新安装程序),这可能是一个好主意。