wolkow70, Получать версию файла умеете?
ну так сравните исходно устанавливаемую версию с полученной версией файла, при наличии файла,
иначе ставим файл какой есть в установщике.
читать дальше »
Код:

!include "filefunc.nsh"
!include "WordFunc.nsh"
!define VERSION_FILE "3.7.61b" ;(исходная) версия файла в скрипте, которая будет "ставится"
${If} ${FileExists} "$WINDIR\notepad.exe"
${GetFileVersion} "$WINDIR\notepad.exe" "$0"
;конвертируем версию в "циферки" при наличии указанных символов
${VersionConvert} "$0" "abcdefghijklmnopqrstuvwxyz+" "$0"
;конвертируем версию файла в установщике
${VersionConvert} "${VERSION_FILE}" "abcdefghijklmnopqrstuvwxyz+" "$1"
;сравниваем исходно полученную и исходно устанавливаемую версии файлов
;-----------------------------------------------------
;${VersionCompare} "[Version1]" "[Version2]" $var
;-----------------------------------------------------
;"[Version1]" ; первая версия
;"[Version2]" ; вторая версия
;$var ; результат:
;$var=0 версии равны
;$var=1 первая версия новее второй
;$var=2 вторая версия новее первой
;-----------------------------------------------------
${VersionCompare} "$0" "$1" $2
${If} $2 == 0
MessageBox MB_OK "Версии равны!$\n$0 = $1" IDOK
${ElseIf} $2 == 1
MessageBox MB_OK "Полученная версия новее исходной(устанавливаемой)$\n$\t $0 > $1" IDOK
${ElseIf} $2 == 2
MessageBox MB_OK "Исходная(устанавливаемая)версия новее полученной$\n$\t $0 < $1" IDOK
${EndIf}
${Else}
;тут всегда ставим, файла нету!!!
${EndIf}
Здесь легко потренироваться, подставляя циферки в константу