asetin_9207
Давайте так, я вам пример, вы изучате мой пример и делаете выводы!
А то получается, сделайте мне эту фичу,
вставьте мне код этой фичи в мой скрипт, а то я не знаю как!
Если вы пишите в эту тему, то предполагается, что вы изучили, шапку темы,
и основы работы со скриптовым языком NSIS, но у вас появился вопрос...
По этому поводу я писал вам в PM !!!!
Тут нужна дополнительная библиотека.
Берем библиотеку
здесь
Копируем
VersionCheck.nsh в папку
${NSISDIR}\Include
В самом начале скрипта добавляем:
Код:
!include "WordFunc.nsh"
!include "VersionCheck.nsh" ; подключаем библиотеку
!define NEW_Version "2.0.3.5" ;здесь пишем версию обновления в инсталляторе
!define OLD_Version "2.0.3.4" #здесь пишем предыдущую версию обновления
!define NOT_Version "2.0.3.0" ;здесь пишем версию, которую нельзя обновлять
читать дальше »
Код:
Section "!Обновление игры" secUpdate
SectionIn 1 2
IfFileExists "Путь к файлу\steam.inf" 0 Next
ClearErrors
FileOpen $R3 "Путь к файлу\steam.inf" r #открываем файл в режиме чтения
IfErrors Next
loop:
FileRead $R3 $R4
StrCmp $R4 "" Next #если искомая строка не найдена
StrCpy $R5 $R4 12 #хитрая команда, типа обрезания
StrCmp $R5 "PatchVersion" 0 +2 #сравнениие если $R5=PatchVersion переход к Yes
Goto +2
Goto loop #переход к loop (получается цикл пока не будет найдена искомая строка)
FileClose $R3 #закрываем файл
StrCpy $R6 $R4 "" 13
${StrFilter} "${NOT_Version}" "1" "" "." $R0 ;фильтруем строку, оставляем цифры
${StrFilter} $R6 "1" "" "." $R8
${VersionCheck} ${NEW_Version} $R6 $R7 ;если ${NEW_Version}=$R6, то $R7=0
;если ${NEW_Version}>$R6, то $R7=1
;если ${NEW_Version}<$R6, то $R7=2
StrCmp $R8 $R0 0 +3
MessageBox MB_ICONSTOP|MB_OK "Упсс! Этот патч нужно ставить на версию игры ${OLD_Version} ! Ваша версия игры - $R6"
Quit ;тут так надежней! с Abort иногда бывают глюки
StrCmp $R7 0 0 +3
MessageBox MB_ICONEXCLAMATION|MB_YESNO "Версия обновления игры и инсталлятора равны!$\r$\nПродолжить установку?" IDYES +2
Quit
StrCmp $R7 2 0 +3
MessageBox MB_ICONSTOP|MB_OK "Версия обновления игры новее, чем в инсталляторе!"
Quit
Next:
SetOutPath "$INSTDIR"
;продолжение скрипта
SectionEnd
Если версия установленного обновления больше, чем в инсталляторе, обновление не будет установлено.
Если версия установленного обновления равна версии в инсталляторе, пользователю будет предложено дальнейшее действие.
Реализован запрет обновления на версию определенную в скрипте.