如何检测是否已安装特定版本的vcredist_x86.exe?

时间:2011-09-15 13:54:17

标签: visual-studio nsis detection vcredist

我创建了一个安装程序,它在安装过程中运行vcredist_x86.exe(版本9.0.x.x)。在安装之前,我想知道它是否已经在用户的系统中。我基本上不仅要检测DLL存在,还要检测它们是否具有正确的版本号。有没有可靠的方法呢?

我正在使用NSIS,但欢迎任何解决方案。

2 个答案:

答案 0 :(得分:1)

试试这个:

!include "x64.nsh"

Section
  var /GLOBAL hasCRT
  !define CRTCHECKDLL msvcr80.dll
  !define CRTCHECKNAME 'Microsoft.VC80.CRT,version="8.0.50727.6195",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"'
  push '${CRTCHECKDLL}'
  push '${CRTCHECKNAME}'
  call WinSxS_HasAssembly
  pop $hasCRT
  DetailPrint ${CRTCHECKDLL}=$hasCRT
SectionEnd

答案 1 :(得分:0)

没有简单的方法可以做到这一点,所以我最终总是安装包,无论它是否已经安装。因为无论如何它都是一个小的安装,它没有太大的区别。