Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


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

Если версия установленного обновления больше, чем в инсталляторе, обновление не будет установлено.
Если версия установленного обновления равна версии в инсталляторе, пользователю будет предложено дальнейшее действие.
Реализован запрет обновления на версию определенную в скрипте.

Последний раз редактировалось kotkovets, 03-09-2010 в 02:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:00, 03-09-2010 | #728