当前位置:  开发笔记 > 后端 > 正文

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

如何解决《如何检测是否需要安装VCRedist?》经验,为你挑选了3个好方法。

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

软件我维护设置取决于VC++ 2008(精确地说是SP1),因此我需要找到一个安装VCRedist的解决方案(如果尚未安装).我理解正确的方法是用合并模块构建msi,但它不在我手上.

我所指的重复问题(被接受的问题)的答案对我不起作用,因为每个小版本(例如9.0.30729.01 vs 9.0.30729.17)都有适当的GUID,我无法猜测或预测未来的版本.此外,我认为这不会检测Visual Studios,因此当它已经在开发者机器上时不必要地安装VCRedist Package.我不想用这个来惹恼任何人,当然不是那些已经安装了DevStudio的人.

现在另一个答案说我应该看看WinSxs文件夹,$WINDIR\WinSxS\x86_Microsoft.VC80.CRT_但是这还没有(但)帮助我暗示SP1,或者此时我还缺少什么?是否有一个带有内部和"外部"版本号的表,所以我可以暗示某个次要版本号?

我无法相信微软没有为这种情况提供任何东西,但是现在搜索互联网的时间已经太久了,现在让我回到了好的地方.



1> Jedidja..:

对于Visual Studio C++ 2010,事情变得容易一些.

与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 \微软....)

如果你喜欢旧版本,这里是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}


谢谢!,这部分真的对我有帮助...注意:您需要在64位操作系统上检查Wow6432Node.(HKLM\SOFTWARE\Wow6432Node \微软....)

2> Arnshea..:

您可以采用建议的方法来安装directx:始终运行可再发行组件.由于它是必需的并且您已经发货,即使已经安装它也没有任何损害.


始终运行redist需要花费大量时间.
如果这样做,请务必接受并忽略错误代码5100("已安装较新版本").我们最近在PostgreSQL安装程序中遇到了一些麻烦.

3> lImbus..:

看起来像Microsoft-Developer提出的另一个解决方案,使用MsiQueryProductState API,唉也依赖于GUID.

更新:代码昨天上线,似乎工作正常.以下是完成的工作:检查最新的已知GUID和路径²到哪里应该安装.如果两者都失败,则安装它.这似乎工作正常.

此外,它使用命令行参数"/ qb"安装,这意味着"无人看管但不可见".查看关于这些参数的其他博客文章.

FWIW,Microsoft Visual C++ 2008/VC90 SP1可再发行组件的GUID - x86 9.0.30729

64位30729.17:8220EEFE-38CD-377E-8595-13398D740ACE

32位30729.17:9A25302D-30C0-39D9-BD6F-21E6EC160475

32位30729.01:6AFCA4E1-9B78-3640-8F72-A7BF33448200

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

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有