我创建了一个安装程序,它在安装过程中运行vcredist_x86.exe(版本9.0.x.x)。在安装之前,我想知道它是否已经在用户的系统中。我基本上不仅要检测DLL存在,还要检测它们是否具有正确的版本号。有没有可靠的方法呢?
我正在使用NSIS,但欢迎任何解决方案。
答案 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)
没有简单的方法可以做到这一点,所以我最终总是安装包,无论它是否已经安装。因为无论如何它都是一个小的安装,它没有太大的区别。