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

如何检测VC++ 2008可再发行?

如何解决《如何检测VC++2008可再发行?》经验,为你挑选了4个好方法。

是否有一个注册表设置,我可以查找以确定是否已安装Visual C++可再发行组件,无论是独立还是作为Visual Studio 2008的一部分?我知道我可以启动VC++ 2008可再发行安装程序并让它处理检测,但是如果我可以检查它并且如果可再发行组件已经在系统上则不打扰启动安装程序它看起来会更清晰.

如果没有可搜索的设置,这并不重要,因为这仅适用于我们软件新版本的初步安装程序.对于我们正在开发的基于Windows Installer的新安装程序,我们不需要它来替换旧的技术安装程序,并将使用合并模块.



1> 小智..:

当您使用不同的操作系统时,我认为这些解决方案中的任何一个都无法提 例如,MsiQueryProductState将始终使用Vista VC8.0返回-1

对于带有Windows 7的VC8.0/8.0 SP1/9.0,为-1!所以微软提供的GUID解决方案并不适用于所有情况

所以我想我被迫坚持%windir%\ winsxs方法并搜索

x86_Microsoft.VC80.CRT*

x86_Microsoft.VC90.CRT*

对于那些正在寻找所有GUID的人,这是我创建的列表:

Visual C++ 2005运行时文件

* VC 8.0 (x86) - {A49F249F-0C91-497F-86DF-B2585E8E76B7}
* VC 8.0 (x64) - {6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}
* VC 8.0 (ia64) - {03ED71EA-F531-4927-AABD-1C31BCE8E187}

Visual C++ 2005 SP1运行时文件

* VC 8.0 SP1 (x86) - {7299052B-02A4-4627-81F2-1818DA5D550D}
* VC 8.0 SP1 (x64) - {071C9B48-7C32-4621-A0AC-3F809523288F}
* VC 8.0 SP1 (ia64) - {0F8FB34E-675E-42ED-850B-29D98C2ECE08}

Visual C++ 2005 SP1 ATL安全更新运行时文件

* VC 8.0 SP1 ATL Patch (x86) - {837B34E3-7C30-493C-8F6A-2B0F04E2912C}
* VC 8.0 SP1 ATL Patch (x64) - {6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}
* VC 8.0 SP1 ATL Patch (ia64) - {85025851-A784-46D8-950D-05CB3CA43A13}

Visual C++ 2008运行时文件

* VC 9.0 (x86) - {FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}
* VC 9.0 (x64) - {350AA351-21FA-3270-8B7A-835434E766AD}
* VC 9.0 (ia64) - {2B547B43-DB50-3139-9EBE-37D419E0F5FA} 

Visual C++ 2008 SP1运行时文件

* VC 9.0 SP1 (x86) - {9A25302D-30C0-39D9-BD6F-21E6EC160475}
* VC 9.0 SP1 (x64) - {8220EEFE-38CD-377E-8595-13398D740ACE}
* VC 9.0 SP1 (ia64) - {5827ECE1-AEB0-328E-B813-6FC68622C1F9}

Visual C++ 2008 SP1 ATL安全更新运行时文件

* VC 9.0 SP1 ATL (x86) - {1F1C2DFC-2D24-3E06-BCB8-725134ADF989}
* VC 9.0 SP1 ATL (x64) - {4B6C7001-C7D6-3710-913E-5BC23FCE91E6}
* VC 9.0 SP1 ATL (ia64) - {977AD349-C2A8-39DD-9273-285C08987C7B}



2> 小智..:

检查注册表:

VC++ 2008(sp1):HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3C3D696B-0DB7-3C6D-A356-3DB8CE541918}

要么

VC++ 2008(原创):HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}


不要使用guids检查安装!在我的XP机器上,我刚刚安装的VC2008 SP1 redist与列出的不同.
我发现这是一个不好的假设,因为这样的版本有不同的版本(以及GUID).

3> kenjiuno..:

VC2005的最新版本:

Visual C++ 2005 Service Pack 1可再发行组件包MFC安全更新

* VC 8.0 SP1 MFCLOC Patch (x86) - {710F4C1C-CC18-4C49-8CBF-51240C89A1A2}
* VC 8.0 SP1 MFCLOC Patch (x64) - {AD8A2FA1-06E7-4B0D-927D-6E54B3D31028}
* VC 8.0 SP1 MFCLOC Patch (ia64) - {C2F60BDA-462A-4A72-8E4D-CA431A56E9EA}

8.0.50727.6195

http://www.microsoft.com/downloads/details.aspx?familyid=AE2E1A40-7B45-4FE9-A20F-2ED2923ACA62



4> 1800 INFORMA..:

又快又脏:

if (LoadLibrary(L"msvcrt80.dll")!=NULL)
{
  // it is installed
}

Loadlibrary将处理为您搜索路径.


那会聪明吗?如果你问我,这似乎是一件愚蠢的事情
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有