首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测是否需要安装VCRedist?

如何检测是否需要安装VCRedist?
EN

Stack Overflow用户
提问于 2009-04-08 16:58:22
回答 4查看 45.9K关注 0票数 21

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

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

我提到的重复问题的答案(被接受的问题)对我不起作用,因为每个微小的版本(例如9.0.30729.01和9.0.30729.17)都有合适的GUID,我无法猜测或预测未来的版本。此外,我认为这不会检测到Visual Studios,因此不必要地安装已经在开发人员机器上的VCRedist包。我不想用这个来困扰任何人,当然不是已经安装了DevStudio的人。

现在,另一个答案是我应该查看WinSxs文件夹,比如$WINDIR\WinSxS\x86_Microsoft.VC80.CRT_,但这(还)不能帮助我暗示SP1,或者我在这一点上遗漏了什么?有没有一个包含内部和“外部”版本号的表,所以我可以暗示某个次要版本号?

我不敢相信微软没有为这个场景提供任何东西,但是现在已经在互联网上搜索了太长时间了,这让我又回到了过去:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-08 17:29:54

您可以采用推荐的安装directx的方法:始终运行可再发行文件。由于它是必需的,而且您已经发布了它,所以即使已经安装了它,运行它也没有什么坏处。

票数 8
EN

Stack Overflow用户

发布于 2011-12-18 23:34:45

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

与Visual C++ 2005和2008可再发行软件包不同,有一些注册表项可用于检测是否存在Visual C++ 2010可再发行软件包。

Visual C++ 2010可再发行的包检测注册表值

Visual C++ 2010可再发行组件包(x86)

安装的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86 =1 (REG_DWORD)

Visual C++ 2010可再发行组件包(x64)

安装的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64 =1 (REG_DWORD)

Visual C++ 2010可再发行组件包(ia64)

安装的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\ia64 =1 (REG_DWORD)

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

如果您喜欢较旧的版本,这里有GUID

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

{196BB40D-1578-3D01-B289-BEFC77A11A1E}

  • Visual

  • C++ 2010可再发行软件包(x86) -{196BB40D-1578-3D01-B289-BEFC77A11A1E}

  • Visual

  • 2010可再发行软件包(x64) - {C1A35166-4301-38E9-BA67-02823AD72A1B}

{196BB40D-1578-3D01-B289-BEFC77A11A1E}

  • Visual C++ 2010可再发行软件包(ia64)

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

{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}

  • Visual

  • C++ 2010 SP1可再发行软件包(x86) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}

  • Visual C++ 2010 SP1可再发行软件包(x64) -{1D8E6291-B0D5-35EC-8441-6616F567A0F7}

  • Visual C++ 2010 SP1可再发行软件包(ia64) - Package
票数 14
EN

Stack Overflow用户

发布于 2009-04-09 15:26:32

看起来像是微软开发人员使用MsiQueryProductState API提出了another solution,可惜也依赖于GUID。

更新:代码昨天上线了,看起来运行得很好。这是正在做的事情:检查最新的已知GUID和路径²到应该安装它的位置。如果两者都失败,则会安装它。这似乎工作得很好。

此外,它还安装了命令行参数"/qb“,意思是”无人值守但不是不可见的“。有关这些参数的信息,请参阅this other blog post

微软Visual C++ 2008 / VC90 SP1可再发行版的FWIW、GUIDs x86 9.0.30729

  • 64位30729.17: 8220EEFE-38CD-377E-8595-13398D740ACE
  • 32bit 30729.17: 9A25302D-30C0-39D9-BD6F-21E6EC160475
  • 32bit 30729.01: 6AFCA4E1-9B78-3640-8F72-A7BF33448200

²路径:$WINDIR\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/730889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档