是否有一个注册表设置,我可以查找以确定是否已安装Visual C++可再发行组件,无论是独立还是作为Visual Studio 2008的一部分?我知道我可以启动VC++ 2008可再发行安装程序并让它处理检测,但是如果我可以检查它并且如果可再发行组件已经在系统上则不打扰启动安装程序它看起来会更清晰.
如果没有可搜索的设置,这并不重要,因为这仅适用于我们软件新版本的初步安装程序.对于我们正在开发的基于Windows Installer的新安装程序,我们不需要它来替换旧的技术安装程序,并将使用合并模块.
当您使用不同的操作系统时,我认为这些解决方案中的任何一个都无法提 例如,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}
检查注册表:
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}
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
又快又脏:
if (LoadLibrary(L"msvcrt80.dll")!=NULL) { // it is installed }
Loadlibrary将处理为您搜索路径.