Как определить, установлена ​​ли конкретная версия vcredist_x86.exe? - PullRequest
1 голос
/ 15 сентября 2011

Я создал установщик, который запускает vcredist_x86.exe (версия 9.0.x.x) как часть установки. Однако перед установкой я бы хотел узнать, находится ли он уже в системе пользователя. Мне нужно определить не только наличие библиотек DLL, но и правильный номер версии. Есть ли надежный способ сделать это?

Я использую NSIS, но любое решение будет приветствоваться.

Ответы [ 2 ]

1 голос
/ 11 января 2012

Попробуйте это:

!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
0 голосов
/ 18 декабря 2011

Нет простого способа сделать это, поэтому я всегда устанавливал пакет независимо от того, установлен он или нет.Так как в любом случае это небольшая установка, это не имеет большого значения.

...