2013-04-21 47 views
5

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

  1. 微软的Visual C++ 2008可再发行组件包(x86) 发表日期:2007年11月29日

  2. 微软的Visual C++ 2008 SP1可再发行组件包(x86) 出版日期: 9/16/2008

  3. 的Microsoft Visual C++ 2008 Service Pack 1的再发行组件包ATL安全更新 发表日期:9/29/2010

  4. 的Microsoft Visual C++ 2008 Service Pack 1的再发行组件包MFC的安全更新 发布日期:6/7/2011

现在该二进制我应该下载,如果我下载我的第四人应该能够运行,其使用1日运行时生成的应用程序(上面提到的: - 1.微软的Visual C++ 2008可再发行组件包(x86 ) - 发布日期:11/29/2007)。

或者我应该按顺序逐一安装它们,你能指导我吗?

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

回答

1

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

+1

我尊重所有回答的人,但恐怕我已经对@andred的建议采取行动,并且对我有效。在面对许多错误和错误消息后,终于可以运行PHP 5.2和PHP 5.3两个版本以及两个版本的Apache和两个版本的mysql,因为存在与VC++ 6和VC++ 9相关的问题,在VC++中编译了旧的二进制文件6和新的在VC++ 9中仍然存在(上次我检查时)apache.org不会在PHP.net使用的相同版本中编译apache,因此非常感谢GOD和所有人的支持。顺便说一句,我使用Windows .. – Sam 2013-04-22 10:12:58

1

出版1.微软的Visual C++ 2008可再发行组件包(x86)日期:2007年11月29日

这是你需要使用Visual Studio 2008编译的32位(x86)应用程序的一个。

公布2.微软的Visual C++ 2008 SP1可再发行组件包(x86)日期:9/16/2008

同上,EXC它包含Service Pack 1(SP1)的更新。如果使用带有Service Pack 1的Visual Studio 2008编译应用程序,请使用此代替上面的代码。

Visual Studio和Service Pack级别的版本可以从IDE中的帮助 - >关于内部进行检查。

3.微软的Visual C++ 2008 Service Pack 1的再发行组件包ATL安全更新发布日期:9/29/2010

4。发布的Microsoft Visual C++ 2008 Service Pack 1的再发行组件包MFC的安全更新时间:2011/6/7

我不能从名字告诉这两个是否只是可选更新上述再发行组件包,或者它们是否包括完整的可再发行组件包可选更新。

无论哪种方式,如果您的应用程序使用ATL或MFC编写,只需要它们。


如果这一切都太混乱,注意,你甚至不需要分发您的应用程序时使用这些可再发行组件安装的。您可以将所需的运行时DLL放在与您的可执行文件相同的文件夹中,它会运行得很好。

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

<Program Files folder>\Microsoft Visual Studio 9.0\VC\redist\x86 
+0

是“*可以将所需的运行时DLL放在与您的可执行文件相同的文件夹*”稳定和*支持*?如果是这样,为什么开发人员似乎从来没有这样做? – Pacerier 2017-02-14 13:09:18

+0

是的,它是稳定和支持。自2000年以来,这可能是之前推荐的做法。我不知道你在想什么开发者。我看到很多人都这么做。在macOS术语中,应用程序的目录是应用程序包。它的所有依赖应该放在应用程序目录中。 *没有*属于系统文件夹 - 这些是系统文件。 @pacerier – 2017-02-14 14:20:16

+0

开始使这个建议变得复杂的唯一的事情是通用CRT,与VS 2015一起提供,它实际上*是一个系统组件,并且由Windows 10中的Windows Update提供服务。但是,这个答案由几个年份。并且通用CRT仍支持应用程序本地部署,如果您需要支持底层操作系统并且不想依赖已安装的更新包(或者必须自己提供更新安装程序),那么这可能是个好主意)。 – 2017-02-14 14:22:10

2

直观的选择是正确的,安装最新版本。这些安装程序还部署了一个发布者策略文件,用于将要求将旧版本升级到新版本的程序重定向。这是他们获得关键错误修复或安全更新激活的基本机制。或者说得更直白些,发布者策略是针对DLL地狱对策的反制措施。他们工作得很好,我从来没有听说过任何人抱怨过这些DLL的版本问题。更典型的DLL Hell问题是用旧版本覆盖DLL,这不会发生在这些并排的DLL上。当你的程序要求一个新版本(查看.manifest文件)时,部署一个旧版本是失败的。

+0

但不是所有东西都向后兼容吗?如果程序假定旧版本,但是你有一个不兼容的新版本,那么不会有问题的机会吗? – Pacerier 2017-02-14 02:11:39

+0

“**完全**向后兼容”我的意思是。 – Pacerier 2017-02-14 12:54:21

+0

微软是一个有趣的公司。如果更新中断了您的程序,那么他们将为您提供解决方法或修补程序。不收费,你会收到你的支持电话费。我亲自利用了那两次。不适用于C/C++库btw。 – 2017-02-14 13:08:53

相关问题