Цитата Aster:
Уважаю ваш труд, справка по NSIS действительно внушительная и виден громадный объём проделанной работы »
|
Спасибо на добром слове.
Цитата Aster:
Такая проверка мне нужна для того, чтобы пользователь не смог распаковать мой дистрибутив ни в какой другой каталог, кроме как в каталог с игрой YYY. »
|
В таком случае страничка выбора директории неуместна.
на примере 7-zip девятой версии
читать дальше »
Код:
!include "MUI2.nsh"
!include "FileFunc.nsh"
InstallDirRegKey HKCU "Software\7-Zip" "Path" ;берем путь из реестра, в противном случае ниже код.
InstallDir "$PROGRAMFILES\7-zip"
!insertmacro MUI_PAGE_WELCOME
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE LEAVE_COMPONENTS ;функция будет выполнена при закрытии странички компонентов
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English
Name "Test"
OutFile "Test.exe"
ShowInstDetails show
Function LEAVE_COMPONENTS
${IfNot} ${FileExists} "$INSTDIR\7z.exe"
${OrIfNot} ${FileExists} "$INSTDIR\7z.dll" ;логика ИЛИ-НЕ ;при необходимости пишем еще раз на указанный ваш файл
MessageBox MB_OK "Не найден один из файлов!" IDOK
Abort ;прерывание
${Else}
;Здесь можно писать код проверки версии файлов и изменения файлов
${GetFileVersion} "$INSTDIR\7z.exe" $0 ; выявляем версию файла
StrCpy $0 $0 1 ;берем из версии первую циферку(один первый символ)
;сравниваем версию
${If} $0 != 9
MessageBox MB_OK "Это не 9 версия файла 7z" IDOK
Abort
${EndIf}
;сравниваем пропатченный файл или нет плагом MD5
;;
;;
${EndIf}
FunctionEnd
Section MAIN
SectionEnd
Section MAIN_1
SectionEnd
Цитата Aster:
Принцип: проверка должна выявить наличие в выбранной папке конкретных файлов (других файлов, никак не связанных с предыдущей проверкой) и если файлы обнаружены - должно всплывать уведомление вида "Компоненты игры YYY были ранее изменены »
|
На офф. сайте найдите плагин MD5 и сверьте хэш-сумму оригинала, если не сходится прерывание.