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

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :.

Закрытая тема
Настройки темы
[архив].: NSIS - все вопросы :.

Аватара для kotkovets

Ветеран


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


Конфигурация

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


Изменения
Автор: volk1234
Дата: 09-12-2012
Описание: перевод темы в архив.
Тема закрыта!
Лимит страниц.
Продолжение тут:
.: NSIS - все вопросы :. часть 2.
Старая шапка:
читать дальше »

Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения.

Описание:
читать дальше »
NSIS (Nullsoft Scriptable Install System) - профессиональная система для создания инсталляторов в среде Windows с октрытым исходным кодом. При своем малом размере система очень гибкая, и при с широкими возможностями. Генерируемый ею инсталлятор также имеет очень маленький размер и идеально подходит для распространения продукта через Интернет.


Текущая версия: 2.46 от 6 декабря 2009 года
Скачать | Архив сборок версии 2 | Архив сборок версии 1

ВНИМАНИЕ! Созданный в NSIS инсталлятор является ANSI-приложением. Есть возможность использовать UNICODE-сборку системы, но при этом ваши дистрибутивы не будут работать в ANSI-системах, таких, как Windows 9x. Для загрузки UNICODE-сборки системы посетите сайт: http://www.scratchpaper.com/

ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов:
Справочник по NSIS - создан силами нашего сообщества.
Руководство пользователя. Перевод – Поляков А.В, зеркало

Документация

Утилиты разработчика
Расширение функциональности
читать дальше »

Плагины и полезности к NSIS: http://nsis.sourceforge.net/Category:Plugins

Интерфейс Venis GUI: http://www.spaceblue.com/products/venis
Интерфейс ExperienceUI GUI http://experienceui.xx0r.info/oldeng...erienceui/home
Пример:


Интерфейс SkinCrafter Plugin - http://www.skincrafter.com/
Пример:

Инструкция по использованию от K.A.V.

Примеры скриптов на нашем форуме
Скрипт NSIS для перепаковки AIMP2+Сборки
Тема для Notepad++(пример парсинга XML)

Достоинства
читать дальше »


◦ Очень маленький размер установочного блока (около 34 Кбайт)
◦ zlib, bzip2 и LZMA-сжатие
◦ Гибкая система скриптов (спецально разработанная для инсталляторов)
◦ Поддержка многоязычности, точнее 53 языка, есть возможность ввода нового языка
◦ Поддержка плагинов
◦ Скрипт Препроцессор
◦ Создание Web-инсталляторов

Ещё немного полезной информации:
читать дальше »

▫ История создания установщика

NSIS создан как альтернатива InstallShield, предназначенного для коммерческих продуктов.

NSIS был создан для распространения Winamp. Он базируется на предыдущем продукте Nullsoft — PiMP (plugin Mini Packager), иначе известным как SuperPiMP. После версии 2.0a0, проект был перемещён на SourceForge.net, где к работе над ним присоединились и сторонние разработчики. NSIS 2.0 был выпущен в свет 2 года спустя.

NSIS версии 1 был очень похож на классический Windows Installer, но он был более управлемым с помощью скриптов и поддерживал другие форматы сжатия. NSIS версии 2 поддерживает новый графический интерфейс пользователя, LZMA-сжатие, многоязычность и имеет хорошую систему плагинов.

Версия 2.01 была первой версией, поддерживающей компиляцию на любой из POSIX-платформ. Это позволило создавать Windows-инсталляторы на GNU/Linux и FreeBSD без использования эмулятора Wine. На данный момент поддерживается компиляция только для Windows.

▫ Описание

Компилятор NSIS — программа makensis — компилирует скрипты в исполняемый код. Каждая строчка скрипта содержит одну команду. Пример:
Код: Выделить весь код
 # Пример скрипта
 Name "Example1"
 OutFile "example1.exe"
 InstallDir "$PROGRAMFILES\Example1"
 Page Directory
 Page InstFiles
 Section
   SetOutPath $INSTDIR
   File ..\makensis.exe
 SectionEnd

Modern User Interface

В версии 2.0 был введён новый графический интерфейс пользователя, названный Modern UI (MUI). MUI очень похож на интерфейс мастеров, он поддерживает splash screen, выбора языка, выбор компонентов для установки и более широкие возможности настройки по сравнению со своим предшественником. Пример:
Код: Выделить весь код
 # Пример скрипта с Modern UI
 !include MUI.nsh
 Name "Example 2"
 OutFile Example2.exe
 !insertmacro MUI_PAGE_WELCOME
 !insertmacro MUI_PAGE_LICENSE "license.rtf"
 !insertmacro MUI_PAGE_DIRECTORY
 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_PAGE_FINISH
 !insertmacro MUI_LANGUAGE "English"
 !insertmacro MUI_LANGUAGE "German"
 !insertmacro MUI_LANGUAGE "French"
 Section "Extract makensis"
  SetOutPath $INSTDIR
  File ..\makensis.exe
 SectionEnd
NSIS может быть расширен при помощи плагинов, которые могут быть написаны на C++, Си, и Delphi. Плагины могут быть использованы для улучшения функциональности и интерфейса инсталлятора. Плагины могут быть вызваны в любой части кода NSIS скрипта.

С пакетом NSIS поставляются несколько плагинов, позволяющих добавлять новые страницы, заменять фоновые изображения, скачивать файлы из Интернета, выполнять математические вычисления, обновлять файлы и многое другое.

▫ Программы, использующие NSIS


◦ Антивирус Касперского
◦ Qip
◦ 3DNA Desktop
◦ 7-Zip
◦ ATI Display Driver
◦ CDex
◦ Dev-C++
◦ DivX
◦ eMule FileZilla
◦ Google Picasa
◦ Google Talk
◦ Intel C (компилятор)
◦ IrfanView
◦ LightAllow
◦ LyX
◦ Miranda IM Mozilla Firefox 2.0
◦ NASA World Wind
◦ Notepad++
◦ OpenOffice.org для Windows
◦ Pidgin
◦ VLC Player
◦ Winamp

● Чем я могу распаковать инсталлятор, созданный в NSIS?

В настоящее время инсталляторы NSIS не могут быть полностью декомпилированы. Сам инсталлятор не содержит в себе никаких функций для того, чтобы извлечь сценарий и/или файлы без инсталляции. Это - выбор разработчика, доступны ли исходный текст и/или файлы для инсталлятора для публики или нет. Есть, однако, внешние инструментальные средства, которые позволяют это сделать. 7-zip поддерживает частичную распаковку NSIS инсталляторов с алгоритмом сжатия lzma или bzip. Так же существует мульти-архивный плагин для TotalCommander.
Небольшая заметка для разработчиков: используйте DCryptDll, если хотите скрыть некоторые файлы в вашей инсталляции.


===========
тема прикрепляется, шапка будет дорабатыватся... Volk1234, hb860

Отправлено: 23:35, 17-06-2006

 

Аватара для wolkow70

Ветеран


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

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


kotkovets,

Пришлось некоторым образом изменить функцию, но вроде все работает...

Код: Выделить весь код
UninstPage custom un.INSTFILES_LEAVE
;
Section Uninstall  Uninstall
SectionIn 1 RO
;
RMDir /r "$INSTDIR"
SetAutoClose true
SectionEnd
;
Section /o "Un.Перезагрузка Проводника Windows"  RestartExplorer
SectionIn 1
ExecWait 'taskkill /F /IM explorer.exe' $0
DetailPrint "taskkill exit: [ $0 ]"
Sleep 500
StrCmp $0 0 0 +2
Exec "explorer.exe"
Delete "$INSTDIR\DefragglerShell.dll"
RMDir /r "$INSTDIR"
SectionEnd
;
Function un.INSTFILES_LEAVE
${If} ${FileExists} "$INSTDIR\DefragglerShell.dll" 
RMDir /r /REBOOTOK "$INSTDIR"
SetRebootFlag true
${Else}
SetRebootFlag false 
${EndIf}
FunctionEnd
То есть, перенес комманду RMDir /r /REBOOTOK "$INSTDIR" из Uninstall в саму функцию un.INSTFILES_LEAVE. Таким образом, если Пользователь не выбрал секцию RestartExplorer, то залоченный файл остается на месте и не прописывается на удаление. Зато, затем он все равно удаляется с перезагрузкой через комманду функции. Получается как бы вариант стандартного удаления.
Но если, пользователь выбрал секцию RestartExplorer, то залоченный файл удаляется без перезагрузки. А флаг REBOOTOK в этом случае не срабатывает, в результате файл не прописывается на удаление после перезагрузки.
Только вот не знаю имеет ли смысл в функции рядом ставить комманды
RMDir /r /REBOOTOK "$INSTDIR"
SetRebootFlag true
Может SetRebootFlag true можно тогда и не использовать?

-------
Человек человеку - друг, товарищ и волк!


Последний раз редактировалось wolkow70, 17-11-2011 в 18:12.


Отправлено: 18:02, 17-11-2011 | #1901



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kotkovets

Ветеран


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

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


wolkow70, функция un.INSTFILES_LEAVE выполняется ВСЕГДА!
Проверяет наличие файлика DefragglerShell.dll и на основе проверки "решает" показывать стр. перезагрузки сейчас или нет!
И принудительно устанавливает флаги перезагрузки - банальная перестраховка.
Код: Выделить весь код
${If} ${FileExists} "$INSTDIR\DefragglerShell.dll" 
      Delete /REBOOTOK "$INSTDIR\DefragglerShell.dll"
      SetRebootFlag true
${Else}
      SetRebootFlag false 
${EndIf}
И еще один момент, если удаление задано с флагом /REBOOTOK, но файлы или файл удалились удачно,
установщик устанавливает флаг перезагрузки - false,
если неудачное удаление(по каким то причинам) установщик устанавливает флаг перезагрузки - true
Это легко проверить инсценировкой ситуации, например создать архив и держать архив открытым программой архиватором, то вы не сможете удалить архив, файл занят:
Код: Выделить весь код
  Delete /REBOOTOK "$EXEDIR\Linker.zip"
  Ifrebootflag 0 +2
      MessageBox MB_OK "true" IDOK
  Ifrebootflag +2
     MessageBox MB_OK "false" IDOK
---
А уже на страничке финиша, если true - установщик предложит перезагрузку.
если false - установщик не предложит перезагрузку.
---
И еще важный аспект, если вы ловите в скрипте флаг пререзагрузки, не забудьте снова установить
предыдущий флаг перезагрузки при необходимости, потому что команда Ifrebootflag
определяет состояние флага и после определения сбрасывает в false или в неопределенное состояние.
Код: Выделить весь код
  Delete /REBOOTOK "$EXEDIR\Linker.zip"
  Ifrebootflag 0 +3
      MessageBox MB_OK "true" IDOK
      SetRebootFlag true
  Ifrebootflag +3
      MessageBox MB_OK "false" IDOK
      SetRebootFlag false
Что вам нужно, решаете сами, поэтому поводу я вам разжевал все и повторяться не буду.

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Последний раз редактировалось kotkovets, 17-11-2011 в 19:40.

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

Отправлено: 19:20, 17-11-2011 | #1902


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
функция un.INSTFILES_LEAVE выполняется ВСЕГДА! »
Это и замечательно! Это и позволило перенести в нее флаг /REBOOTOK.
Проблема заключалась в том, что при наличии флага /REBOOTOK в самой секции инсталляции после удаления программы с применением RestartExplorer файлик прописывался в реестре на удаление. И в с случае переустановки программы (без перезагрузки) удалялся после перезагрузки уже из папки новой установки. Удаление же этого ключа приводило к тому, что при удалении без применения RestartExplorer папка с залоченным файлом оставалась на месте после перезагрузки.
Перенос флага /REBOOTOK в функцию позволил применять RestartExplorer для удаления файла вообще без флага /REBOOTOK (так как при уже при фактическом отсутствии файлика срабатывает второе условие (Else). В результате файл на удаление в реестре не прописывается и можно сразу переустанавливать программу без опасения удаления файлика после перезагрузки.
Вот в чем заключалась проблема, которую пришлось решать.

Delete /REBOOTOK "$INSTDIR\DefragglerShell.dll"
SetRebootFlag true
Перестраховки здесь, на мой взгляд, нет. Так как SetRebootFlag true ставит флаг перезагрузки для финишной страницы, но не прописывает в реестр запись на удаление файла после перезагрузки. Как я понял это делает только флаг /REBOOTOK. поэтому он нужен, но пришлось перенести его в другое место для сохранения возможности двух вариантов деинсталляции.

-------
Человек человеку - друг, товарищ и волк!


Последний раз редактировалось wolkow70, 18-11-2011 в 10:25.


Отправлено: 10:17, 18-11-2011 | #1903


Аватара для wolkow70

Ветеран


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

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


Товарищи, подскажите как вылезти из засады:

Function .onInit
;
MessageBox MB_YESNO|MB_ICONQUESTION "ВНИМАНИЕ!$\n\
$\nЕсли у вас открыты окна браузеров Internet Explorer, Mozilla Firefox, Opera, Chrome закройте их перед продолжением установки. \
$\nВ противном случае, они будут закрыты принудительно! \
$\nЭто избавит от конфликтов интеграции программы. \
$\n$\nПРОДОЛЖИТЬ ?" /SD IDYES IDNO Note
;
KillProcDLL::KillProc "opera.exe"
Sleep 700
KillProcDLL::KillProc "firefox.exe"
Sleep 700
KillProcDLL::KillProc "chrome.exe"
Sleep 700
KillProcDLL::KillProc "IEXPLORE.EXE"
Sleep 700
Note:
Abort # выйти из программы.
FunctionEnd

По любому происходит аборт. Без /SD еще получается перевести стрелки. А с ним фиг. Справка не помогла.

-------
Человек человеку - друг, товарищ и волк!


Отправлено: 18:42, 20-11-2011 | #1904


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
А с ним фиг. Справка не помогла »
Хреново Вы ее читаете:
Цитата:
Если в команде не указан ни один из идентификаторов, установщик возвращает их в 0 (по умолчанию).
Максимум возможно задать два идентификатора кнопок, не указанный индетификатор кнопки возвратится в 0.
Цитата wolkow70:
По любому происходит аборт »
А вы всегда на эту команду выйдете однозначно, подумайте почему!?
Такое впечатление, что вы не понимаете, че и пишите то
---
При тихом режиме нажмется кнопка "нет" :
Код: Выделить весь код
  IfSilent NOTE
  MessageBox MB_YESNO 'Какую кнопку нажать?' IDNO NOTE
      MessageBox MB_OK 'Вы нажали кнопку "да"'
      Goto END
  NOTE:
      MessageBox MB_OK 'Вы нажали кнопку "нет"'
      Abort
  END:
или так аналогично:
Код: Выделить весь код
MessageBox MB_YESNO 'Какую кнопку нажать?' /SD IDNO IDYES YES
    MessageBox MB_OK 'Вы нажали кнопку "нет"'
    Quit
YES:
    MessageBox MB_OK 'Вы нажали кнопку "да"'
Цитата wolkow70:
Если у вас открыты окна браузеров Internet Explorer, Mozilla Firefox, Opera, Chrome»
Так вы их проверяйте, что они открыты(открыт один из них), а то тупо просто мочится - вообще жесть!
Такой кодинг неприемлем ИМХО
Такое мочилово неприятно грубыми последствиями, достаточно предупреждать юзера, если у вас открыты окна браузеров Internet Explorer, Mozilla Firefox, Opera, Chrome, и все! иначе выход! Юзер сам закроет, что ему нужно и когда!

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Последний раз редактировалось kotkovets, 21-11-2011 в 19:07. Причина: правка сообщения в соотвествии с правилами форума


Отправлено: 21:29, 20-11-2011 | #1905


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
А вы всегда на эту команду выйдете однозначно, подумайте почему!? »
Abort # выйти из программы.
FunctionEnd

Это мне понятно. Мне не понятно как обойти abort в данном случае.

Цитата kotkovets:
Так вы их проверяйте, что они открыты (открыт один из них), а то тупо просто мочится - вообще жесть!
За такой кодинг я бы я**а натянул на одно место
Такое мочилово неприятно грубыми последствиями, достаточно предупреждать юзера, если у вас открыты окна браузеров Internet Explorer, Mozilla Firefox, Opera, Chrome, и все! иначе выход! Юзер сам закроет, что ему нужно и когда! »
Юзеры бывают разные, и я не себя имею в виду. Кроме того, речь идет об адаптации под тихую установку, значит принудительное закрытие окон допустимо, если юзер сам их не закрыл.
Никаких грубых последствий такого мочилова я не наблюдал.

-------
Человек человеку - друг, товарищ и волк!


Последний раз редактировалось wolkow70, 22-11-2011 в 15:32.


Отправлено: 09:21, 21-11-2011 | #1906


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
Кроме того, Вы следите за своей фразеологией, »
Если я столь грубо выразился, то приношу извинения...
выражаюсь вполне чотко и ясно
Цитата wolkow70:
Юзеры бывают разные »
Это ясно, не нужно думать головой установщика и навязывать это юзеру.
Цитата wolkow70:
Мне не понятно как обойти abort в данном случае »
последовательность, уважаемый забыли и прыжок,
если не нужно прерывание, примеры выше

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Отправлено: 11:07, 21-11-2011 | #1907


Новый участник


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

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


Добрый день. Есть вопрос по программе NSIS.
Возникла следующая проблемка с функцией проверки файла.
Только, пожалуйста, не отправляйте меня читать справку, т.к я с ней ознакомился, там действительно есть описание функции проверки файла, но мне это не помогло. И я хотел бы попросить вас, если такое возможно, написать мне чёткий пример кода, который решил бы мою проблему. Заранее благодарю!

А суть вопроса следующая:
Необходимо внедрить в установщик функцию проверки на наличие конкретного файла (а лучше двух или нескольких конкретных файлов) в той папке, которую пользователь указал в окне "выбор папки для установки". Т.е пользователь выбирает папку, заметьте именно ВЫБИРАЕТ папку, т.е инсталлятор должен ему позволить выбрать папку и нажать ОК. Итак папка выбрана. Теперь пользователь нажимает кнопку "Далее" (заметьте кнопка "Далее" должна быть АКТИВНА в любом случае (ранее у меня почему-то получалось так, что если в выбранной папке нет файла, то кнопка "Далее" неактивна, т.е нажать её нельзя). И вот именно в этом месте, после того как пользователь выбрал папку и нажал кнопку "Далее" и должна срабатывать функция проверки файлов. Если файлы в указанной папке найдены, то установка продолжится и перейдёт на след.страницу инсталлера, если же файлов в папке не обнаружено, то необходимо чтобы появлялось уведомляющее окно с сообщением вида "В указанном Вами каталоге отстуствуют компоненты игры YYY. Пожалуйста, укажите правильный каталог". Уведомление должно быть только с кнопкой ОK, после нажатия которой пользователь мог бы изменить каталог для установки и вновь нажать "Далее". Такая проверка мне нужна для того, чтобы пользователь не смог распаковать мой дистрибутив ни в какой другой каталог, кроме как в каталог с игрой YYY.

Это ещё не всё, так как помимо указанной проверки, мне ещё нужна другая проверка - проверка на какую версию игры пользователь собирается установить мой дистрибутив. Необходимо чтобы проверка выявляла наличие у пользователя чистой (неперепатченной) версии игры, т.е чтобы пользователь мог установить мой дистрибутив только на чистую версию игры. Принцип должен быть такой. Необходимо, чтобы проверка срабатывала в тот же момент, что и предыдущая, т.е после выбора папки для установки и нажатия кнопки "Далее". Принцип: проверка должна выявить наличие в выбранной папке конкретных файлов (других файлов, никак не связанных с предыдущей проверкой) и если файлы обнаружены - должно всплывать уведомление вида "Компоненты игры YYY были ранее изменены. Установка приложение возможна только поверх оригинального дистрибутива. Пожалуйста, переустановите игру".

И последнее, наверное, самое простое.
Необходимо, чтобы при запуске инсталлятора, совершалась ориентация на ключ реестра.
Т.е если ключ реестра обнаружен - инсталлятор запускается. Если нет - появлялось бы всплывающее окно с кнопками ДА и НЕТ, вида: "На вашем компьютере не обнаружено установленной игры YYY. Убедитесь, что устанавливали дистрибутив игры. Продолжить установку?" Суть: инсталлятор выявляет есть ли у пользователя вообще установленная игра. Однако, ключ реесстра может и отсуствовать, если юзер качал игру с винта на винт, поэтому даже если ключ не обнаружен, должна быть возможность продолжить установку.

Надеюсь на Вашу помощь, ребят. Уважаю ваш труд, справка по NSIS действительно внушительная и виден громадный объём проделанной работы.
Что касается моих вопросов, на мой взгляд вопросы про этим проверкам также могли бы быть наиболее подробно описаны в вашей справке. Думаю, это было бы интересно.

Благодарю за внимание.
С уважением, Aster.

Последний раз редактировалось Aster, 21-11-2011 в 14:29.


Отправлено: 14:22, 21-11-2011 | #1908


Аватара для kotkovets

Ветеран


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

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


Цитата 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 и сверьте хэш-сумму оригинала, если не сходится прерывание.

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.

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

Отправлено: 15:25, 21-11-2011 | #1909


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
последовательность, уважаемый забыли и прыжок,
если не нужно прерывание, примеры выше »
Оба ваших примера в моем случае не работают, точнее говоря работают при обычной установке. но при тихой не работают. Потому как, мне в тихом режиме нужно нажать кнопку "да", а не "нет, что реализуют приведенные вами примеры. А это и не удается сделать, так как в этом случае abort не перепрыгнуть.

-------
Человек человеку - друг, товарищ и волк!


Отправлено: 17:29, 21-11-2011 | #1910



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. ssaram Программное обеспечение Windows 406 12-02-2022 19:45
WinstyleMonitor .:[все вопросы]:. Mr dUSHA Проект WinStyle 331 12-02-2014 13:15
Delphi - Delphi .: [все вопросы] :. Serega Программирование и базы данных 94 04-05-2013 18:45
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. Microsoft Windows 2000/XP 105 30-06-2010 11:58
Вопросы по создателю инсталляций NSIS MaxDELETE Программное обеспечение Windows 14 04-07-2007 10:01




 
Переход