1

作为安装的一部分,我创建了一个运行 vcredist_x86.exe(版本 9.0.xx)的安装程序。但是,在安装它之前,我想知道它是否已经在用户的系统中。我基本上不仅需要检测 DLL 是否存在,而且它们是否具有正确的版本号。有没有可靠的方法来做到这一点?

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

4

2 回答 2

1

尝试这个:

!包括“x64.nsh”

部分
  var /GLOBAL hasCRT
  !define CRTCHECKDLL msvcr80.dll
  !define CRTCHECKNAME 'Microsoft.VC80.CRT,version="8.0.50727.6195",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"'
  推'$ {CRTCHECKDLL}'
  推“${CRTCHECKNAME}”
  调用 WinSxS_HasAssembly
  弹出 $hasCRT
  DetailPrint ${CRTCHECKDLL}=$hasCRT
部分结束
于 2012-01-11T07:36:31.377 回答
0

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

于 2011-12-18T09:14:39.563 回答