visual-c++ - 如何检测是否需要安装VCRedist?

标签 visual-c++ installation redistributable

我有一个与 this one 非常相似的问题但答案对我不起作用。

我维护的安装软件依赖于 VC++ 2008(准确地说是 SP1),因此我需要找到一个解决方案来安装 VCRedist(如果尚未安装)。 我知道正确的方法是使用合并模块构建 msi,但这不在我的手中。

我提到的重复问题(已接受的问题)的答案对我不起作用,因为每个小版本(例如 9.0.30729.01 与 9.0.30729.17)都有正确的 GUID,我无法猜测或预测对于 future 的版本。此外,我认为这不会检测到 Visual Studio,因此当 VCRedist 包已经在开发人员计算机上时,就不需要安装它。我不想用这个来打扰任何人,当然不是已经安装了 DevStudio 的人。

现在另一个答案说我应该在 WinSxs 文件夹中查找,例如 $WINDIR\WinSxS\x86_Microsoft.VC80.CRT_ 但这(还)不能帮助我暗示 SP1,或者有什么我现在失踪了?是否有一个包含内部和“外部”版本号的表格,以便我可以暗示某个次要版本号?

我不敢相信微软没有为这种情况提供任何东西,但是在互联网上搜索已经太久了,现在让我回到了好的ol'SO:)

最佳答案

对于 Visual Studio C++ 2010,things got a bit easier .

Unlike the Visual C++ 2005 and 2008 redistributable packages, there are registry keys that can be used to detect the presence of the Visual C++ 2010 redistributable package.

Visual C++ 2010 redistributable package detection registry values

Visual C++ 2010 Redistributable Package (x86)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86] Installed = 1 (REG_DWORD)

Visual C++ 2010 Redistributable Package (x64)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64] Installed = 1 (REG_DWORD)

Visual C++ 2010 Redistributable Package (ia64)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\ia64] Installed = 1 (REG_DWORD)

注意:您需要在 64 位操作系统上检查 Wow6432Node。 (HKLM\Software\Wow6432Node\Microsoft...)

如果您喜欢旧版本,这里是 GUID

Visual C++ 2010 可再发行包产品代码

  • Visual C++ 2010 可再发行软件包 (x86) - {196BB40D-1578-3D01-B289-BEFC77A11A1E}
  • Visual C++ 2010 可再发行软件包 (x64) - {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}
  • Visual C++ 2010 可再发行软件包 (ia64) - {C1A35166-4301-38E9-BA67-02823AD72A1B}

Visual C++ 2010 SP1 可再发行包产品代码

  • Visual C++ 2010 SP1 可再发行软件包 (x86) - {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
  • Visual C++ 2010 SP1 可再发行软件包 (x64) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}
  • Visual C++ 2010 SP1 可再发行软件包 (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}

关于visual-c++ - 如何检测是否需要安装VCRedist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730889/

相关文章:

visual-c++ - 我们可以在非管理员有权访问的自定义位置安装 VC++ 2015 Redistributable Package 吗?

c++ - 错误 LNK2020 : unresolved token (0A000015) IID_IPropertySetStorage

c++ - Release .exe for vs2012 c++ 请求MSVCR110.dll

windows-7 - Windows SxS 可再发行版本问题

windows - 构建后如何在 Windows 上安装 Qt?

java - 如何为我的 java swing 应用程序准备 Mac 安装程序

visual-studio - 如何检查我是否需要安装 VCRedist?

java - 哪个编译器用于通过 ndk 移植 C++?

visual-c++ - MFC 文件夹浏览器 IFileOpenDialog

git - 如何从本地创建远程 Git 存储库?