Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Nullsoft Scriptable Install System | NSIS

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

Открыть новую тему     Написать ответ в эту тему

Nep



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

 
NSIS (Nullsoft Scriptable Install System)
Скриптовая система создания инсталляционных пакетов от авторов Winamp

Основные характеристики:
 
  • Размер дистрибутива около 1,5 МБ
  • Наличие в базовом пакете файлов с примерами и подробной справки
  • Чрезвычайная гибкость при создании инсталляций для своих программ
  • Открытый исходный код
  • Использование различных алгоритмов сжатия (ZLIB, BZIP2, LZMA)
  • Наличие различных плагинов
     
    Новейшая версия ветки 2.х: NSIS 2.51 (от 1 апреля 2016 г., статус ветки - Old Releases)
    Новейшая версия ветки 3.х: NSIS 3.10 (от 30 марта 2024 г.)  
     
     
    Ссылки:
    NSIS: страница загрузкирусификатор ветки 2.xx (без гарантии, что подходит!)2.513.10NSIS 3 Pre-releaseNSIS 2 Pre-releaseисходники (SVN)
     
    Дополнительно: [ плагины, примеры и полезности ] • [ форум разрабочиков ] • [ Wiki ]
     
    Редактор для скриптового языка NSIS: [ скачать ] • [ домашняя страница ]
     
    NSIS Unpacker
    7-zip начиная с версии 4.40 beta поддерживает распаковку из некоторых типов инсталляций.  
    Обратите внимание, что 7za не поддерживает распаковку.
     
    Полноценного русификатора пока нет, но кто хочет, может перевести сообщения в исходных текстах NSIS и скомпилировать всё заново – это единственный корректный вариант. Из файлов поддаётся корректному переводу только меню интегратора NSIS, поскольку там HTML, а остальные переводы – это в основном "русификаторы" с непредсказуемыми последствиями применения.
     
    64-х битное развитие идей NSIS. В разработке, аннотация разработчика nsisbi.
     
    Просьба к тем, кто будет править шапку, сначала сверяться с http://nsis.sourceforge.net/Main_Page и не выдавать желаемое за действительное.

  • Всего записей: 41940 | Зарегистр. 24-06-2001 | Отправлено: 14:21 06-10-2001 | Исправлено: DimmY, 11:10 31-03-2024
    Draik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Garrett. Я не из леса И справку читал.
     
    Но не получается сделать именно так, как я описал...
    У меня  почему-то проверка осуществляется уже после нажатия кнопки "Обзор" и уведомляет об отсутствии файла. Совсем не в кассу это)  
    Вот и взываю о помощи у более продвинутых пользователей

    Всего записей: 12 | Зарегистр. 09-03-2009 | Отправлено: 13:05 03-04-2009 | Исправлено: Draik, 13:06 03-04-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Draik
     
    Это генерируется судя по ввиду диалога в MUI. Язык интерфейса какой?. Наверняка там что-то не дописал. Короче, выложи свой код, можно в личку. Так подсказать с ходу сложно, но как я понимаю у тебя используется один язык установки - английский, все его сообщения при сборке программы не компилируются в ресурсную библиотеку содержащую скрипт, а берутся из кода программы установщика - они туда "вшиты" на уровне исходников. Используй как я сказал выше MUI,  как минимум с двумя языками, и тогда он сам подключит необходимые макросы и библиотеки языковой поддержки. Иначе тебе придётся весь это код писать вручную, а это значит возможность сделать лишние ошибки и возня с отладкой. А оно тебе в таком виде надо?
     
    Проверка наличия файла делается элементарно - используем проверку IfFileExists "$INSTDIR\myfile" lbl_if_exists lbl_if_not_exists
     
    Далее если файл существует переходим на ветку алгоритма lbl_if_exists, иначе обрабатываем ситуацию "не существует" по метке lbl_if_not_exists, например выдаём диагностическое сообщение конструкцией вида (при условии использования MUI):

    Код:
     
    Section /o -check  
      IfFileExists "$INSTDIR\myfile" lbl_exists
      StrCmp $LANGUAGE 1049 +2
      MessageBox MB_ICONSTOP|MB_OK "Required file ... not found, installation is aborted." IDOK +2
      MessageBox MB_ICONSTOP|MB_OK "Необходимый для работы программы файл .... не найден, установка прервана." IDOK +1
      Quit
      lbl_exists:
    SectionEnd
     

    Результат будет таков - выведется сообщение в диалоге с иконкой STOP, а после нажатия пользователем единственной кнопки OK в диалоге установка автоматически будет завершена. Этот кусок кода надо вставить в начале программы, сразу за кодом функции .onInit. Тогда секция проверки будет отработана самой первой, до остального кода. Или вариант номер два:

    Код:
    Function check  
      IfFileExists "$INSTDIR\myfile" lbl_exists
      StrCmp $LANGUAGE 1049 +2
      MessageBox MB_ICONSTOP|MB_OK "Required file ... not found, installation is aborted." IDOK +2
      MessageBox MB_ICONSTOP|MB_OK "Необходимый для работы программы файл .... не найден, установка прервана." IDOK +1
      Quit
      lbl_exists:
    FunctionEnd
    Function .onInit
      !insertmacro MUI_LANGDLL_DISPLAY
      Call check
    FunctionEnd

    но, тут могут быть сложности с выбором языка установки - NSIS может выбрать язык автоматически в соответствии с региональными настройками, но диалог не вывести. Меня такой вариант обычно устраивает. Плюс - минус строчка - другая в доке с описанием "фичи".
     
    P.S.
     
    Проверки, если их несколько, можно объединить, а имя файла выводимого в диалоге передать в регистре, например:

    Код:
    Function check  
      IfFileExists "$INSTDIR\myfile" lbl_exists
      StrCpy $R0 "$INSTDIR\myfile"  
      StrCmp $LANGUAGE 1049 +2'
      MessageBox MB_ICONSTOP|MB_OK '"Required file" $R0 "not found, installation is aborted." IDOK +2
      MessageBox MB_ICONSTOP|MB_OK '"Необходимый для работы программы файл" $R0 "не найден, установка прервана."' IDOK +1
      Quit
      lbl_exists:
    FunctionEnd



    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33230 | Зарегистр. 31-07-2002 | Отправлено: 14:10 03-04-2009 | Исправлено: Victor_VG, 15:36 03-04-2009
    Draik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG.
     
    Спасибо за эдакий ликбез)
     
    Вон оно как всё непросто, оказывается.
    Тут, что называется, без пол-литра не разберешься.
     
    Язык у меня русский прописан в скрипте. Поэтому всё по-русски. Всё таки для соотечественников патч делаю. А они ни по-английски, ни по-французски  не ля ля бужур совсем))
    вот так вобщем:
    !insertmacro MUI_LANGUAGE "Russian"
     
    Насчёт проверки файла:
    Я вот только до такого додумался...
     
    Function .onVerifyInstDir
    IfFileExists $INSTDIR\game.exe
    MessageBox MB_RETRYCANCEL "В выбранном Вами каталоге отсутствуют компоненты игры. Выберете другой каталог и нажмите <Повтор>." IDRETRY -1 IDCANCEL 0
    FunctionEnd
     
    Это не совсем то что нужно, но всё равно ж не работает))
    Вот эту хрень прописываю в начале скрипта, в итоге када тока нажимаю кнопку "Обзор", чтоб выбрать папку, то не успеваю я ее выбрать, как мне уже говорится что файло не найдено.
     
    Мне же нужно так. Подробно объясняю:
    1. Юзверь такой запускает инсталлятор.
    2. Доходит до выбора папки установки.
    3. Выбирает папку, нажимает кнопку "Установить"
    4. И вот уже после этого, если файл найден, то установка начнётся как ни в чём не бывало без всяких всплывающих сообщений. А если файл не найден, то вылезает уведомление о том, что игра не найдена в выбранной папке. А нажать можно только кнопку ОК и выбрать другую папку. Никакого аборта, то есть прерывания работы инсталлятора быть не должно. Юзверь спокойно должен нажать ОК и выбрать другую папку и усё.  
     
    Никаких косяков быть тоже не должно) Меня просто растерзают за каждый глюк)
    Либо я делаю эту фичу чётко и без косяков, либо вообще от неё отказываюсь. а отказываца не хоца, т.к штука-то полезная.
     
     
    Вобщем, Victor_VG, давайте еще чучуть с Вами конструктивно поразмыслим. По крайней мере у Вас это прекрасно получается
     
     

    Всего записей: 12 | Зарегистр. 09-03-2009 | Отправлено: 16:50 03-04-2009 | Исправлено: Draik, 17:55 03-04-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Draik
     
    Зайди ко мне на сайт (ссылка в подписи) там есть полный пакет nsis-244.rar, но хостер требует регистрации. В Обновлении в разделе Examples/NSIS есть его собственный скрипт. Так вот, тебе надо не файлы искать, а считывать путь установки из раздела [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall] или иного места в Реестре где он указан в явном виде и через инструкцию InstallDirRegKey определять путь для установки. А файлы искать уже как признак допустимости, иначе придётся сделать много дополнительных проверок. Иное дело, что разбор строки деинсталляции может оказаться громоздким. Это возможно.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33230 | Зарегистр. 31-07-2002 | Отправлено: 22:52 03-04-2009
    Draik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не знаю правильно ли я понял, но реестр мне как таковой не нужен.  
    Игра, на которую патч устанавливается существует в разных версиях - лицензионная, пиратская, причем от разных пиратов. И некоторые версии игры данные о себе в реестр не прописывают. А еще некоторые умники игру просто перекачивают с винта у товарища. Тут тоже ессно никаких данных в реестре не будет. Тем не менее, в скрипте я всё таки прописываю установку по данным реестра, в таком виде (пример):
    InstallDirRegKey HKLM "Software\my games\lalala" "Install Dir"
     
    Так вот, если у пользователя игра найдена на компе, то в поле выбора папки уже сразу отобразится путь к папке с игрой и останеца только нажать "Установить", а если по реестру игра не найдётся, то поле выбора папки будет пустым и юзверь вручную укажет путь к игре. То есть путь из реестра я использую вот таким образом.
    Иными словами проверка на наличие файлов всё таки нужна. И если юзер укажет не правильную папку, то надо чтоб ему об этом вывелось сообщение.
     
    А деинсталляция не нужна в принципе. И её я даже в скрипте не прописываю. В моём случае смысла в ней нет. Так как патч модифицирует оригинальные файлы игры и удалить их можно только, если снести саму игру. Для этого пользователь воспользуется обычным  родным деинсталлятором самой игры.

    Всего записей: 12 | Зарегистр. 09-03-2009 | Отправлено: 15:17 04-04-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Draik
     
    И я в обновлениях деинсталлятор обычно не пишу. Обычно он там по логике вещей не нужен. Тогда можно использовать плугин locate - он есть на офсайте и например у меня в пакете. С его помощью ищем характерные именно для данной программы файлы. Но и в Реестре её следы будут, например в том же [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32] и в других MRU кэшах. Тут надо искать где система эти записи хранит, а потом думать как их оттуда прочитать, и использовать данные пути. Иначе искать замучаешься, особенно коли диски ёмкие.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33230 | Зарегистр. 31-07-2002 | Отправлено: 16:33 04-04-2009 | Исправлено: Victor_VG, 16:33 04-04-2009
    Alex Zaguzin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG - подскажи пожайлуста, чем можно распаковать скрипт инсталлятора NSIS. С инно работал, а с сабжем - никогда практически. Дабы вытащить именно скрипт, а не сами файлы установки. (файлы известны)? Есть такая возможность? Пробовал Universal Extractor 1.6 - распаковывает не всё, и вообще непонятно что....NSIS Unpacker - х.з как подключить к тоталу да и сомневаюсь я насчёт его что-то. Подскажи пожайлуста. Кстати, куда ссылка из шапки на русик пропала? Раньше вроде замечал её там....Заранее спасибо.  


    ----------
    Революция на Ru-board. Присоединяйтесь!

    Всего записей: 3698 | Зарегистр. 21-07-2007 | Отправлено: 16:51 04-04-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex Zaguzin
     
    Используй 7zfm.exe версии 4.65 для распаковки. А вот что касается скрипта, то декомпиллера на него пока нет, во всяком случае я его не знаю. А раз так, то остаётся только визуальный анализ, благо обычно скрипт не зашифрован. А шапку я поправлю.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33230 | Зарегистр. 31-07-2002 | Отправлено: 17:30 04-04-2009
    Alex Zaguzin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG - 7z я файлы и распаковывал оттуда. Давно его юзаю....Но вот как происходит проверка файлов на наличие и версии их, а также версии ОС и путей. Эх, блин, буду думать как сделать....
    Цитата:
    А раз так, то остаётся только визуальный анализ, благо обычно скрипт не зашифрован
    - не понял, как так? Или я туплю с вечера опять
     


    ----------
    Революция на Ru-board. Присоединяйтесь!

    Всего записей: 3698 | Зарегистр. 21-07-2007 | Отправлено: 17:53 04-04-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex Zaguzin
     
    В скрипте используй или плугины MoreInfo для получения версии + XtInfo для сравнения версий либо использовать функции NSIS - GetDLLVersion и GetDLLVersionLocal, тут придётся использовать более громоздкий код.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33230 | Зарегистр. 31-07-2002 | Отправлено: 20:19 04-04-2009
    Alex Zaguzin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG - спасибо за помощь. Буду разбираться с утра (уже пол второго ночи....). Вроде всё просто на первый взгляд.  
     
    Я думаю, ты понял, о чём речь. Нужно распаковать инсталлятор обновления проги и собрать его-же, но встроив кряк и ещё кое-что интересное....Ладно, что-нибудь придумаю. Ещё раз сенкс.


    ----------
    Революция на Ru-board. Присоединяйтесь!

    Всего записей: 3698 | Зарегистр. 21-07-2007 | Отправлено: 20:32 04-04-2009
    Kilyan



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите вот что(желательно с примером):
    Каким образом проверить ОС при инсталяции  
    (если ниже ХР то инсталировать файл gdiplus.dll , если выше то не инсталировать gdiplus.dll)
    Голову уже сломал (версию проверял GetVersion - но как ее правильно применить так и не дошло-в этом случае)
    ISS это  
    Source: gdiplus.dll; DestDir: {app}; MinVersion: 4.0.950,0; OnlyBelowVersion: 4.9.3000,0

    Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 15:15 09-04-2009 | Исправлено: Kilyan, 15:33 09-04-2009
    Maikl65

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите скрипт или плагин для передачи домена, логина и пароля с целью подключения/отключения сетевой папки, из которой нужно запустить программу (т.е. из скрипта временно подключиться (а затем отключиться) к папке другого домена и пользователь этой папки не зарегистрирован  на текущем компьютере).
    В настоящее время использую консольную команду "NET USE <параметры>" через ExecWait , но, во-первых, при подключении/отключении выскакивает консольное окно (что некрасиво), в во-вторых это в отдельных случаях не работает в доменах.

    Всего записей: 1988 | Зарегистр. 01-11-2004 | Отправлено: 10:56 22-04-2009
    Nike000



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Готового скрипта для NSIS у меня нет, но через System:Call можно сделать с использованием вот ф-ции WNetAddConnection2:
     
    скрипт

    Всего записей: 248 | Зарегистр. 19-10-2006 | Отправлено: 11:54 22-04-2009
    ANDY2112



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как решить вот какую задачу - нужно вырезать из очень большого файла очень большой кусок и сохранить его в отдельный файл. Размеры и исходного файла и вырезаемого куска порядка нескольких гигабайт. Файлы двоичные.

    Всего записей: 1474 | Зарегистр. 25-01-2004 | Отправлено: 23:27 02-05-2009
    SpoinT



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как отловить нажатие кнопки в своей форме?

    Всего записей: 840 | Зарегистр. 31-01-2007 | Отправлено: 13:22 10-05-2009
    lrcom

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NSIS умеет выставлять права на папки? Ситуация:
    под вистой в Program Files создается каталог и туда разворачивается некая сборка. В конце инсталляции появляется запрос с предложением запустить установленную программу. Если сказать "да", всё отлично отрабатывает, прога запускается и работает. До закрытия.
    Оказывается, виста распознает нсису и при отработке инсталлятора автоматом присваивает ему уровень привилегий admin (соответственно если прогу запустить из-под инсталлятора, то права унаследуются на одну сессию). Дальнейшие попытки запустить программу не из инсталлятора приводят к появлению дебильного для висты запроса "непонятная прога.. чо делать бум? запускать?" А всё потому, что у юзера нет прав на полноценную работу с этим каталогом.

    Всего записей: 15 | Зарегистр. 04-01-2006 | Отправлено: 07:00 24-05-2009
    Hiken



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что-то завязло дело с выпуском новых версий. Надеюсь, это оттого, что большой апдейт готовят..

    Всего записей: 1343 | Зарегистр. 14-01-2006 | Отправлено: 14:26 29-05-2009
    alroy

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нее скорее всего кризис и до них добрался !

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 18:37 29-05-2009
    Hiken



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Великий Nullsoft на пороге разорения? То-то же: надо было развиваться, выпускать новые продукты, а не разгонять разработчиков и продавать бизнес кому-попало.

    Всего записей: 1343 | Зарегистр. 14-01-2006 | Отправлено: 06:42 02-06-2009
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Компьютеры » Программы » Nullsoft Scriptable Install System | NSIS


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru