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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Baltazar500
     
    А кто мешает написать SFX модуль на NSIS? Я для себя на нем небольшие утилитки часто пишу - удобно.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:26 01-01-2023
    WiperX



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Приветствую! С новым годом! А можно твой SFX модуль в студию?

    Всего записей: 961 | Зарегистр. 17-03-2009 | Отправлено: 16:35 01-01-2023
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG, эм, ОК. Ну т.е. сценарий (или что-то подобное) из этого exe-ка никак не выцепить ?

    Всего записей: 2105 | Зарегистр. 19-09-2011 | Отправлено: 16:36 01-01-2023
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    WiperX
     
    Ну, например кусок тулкита:

    Код:
    OutFile "phrmake\pmake.exe"
    SetCompressor /SOLID /FINAL LZMA
    ShowInstDetails hide
    !define HAVE_UPX
    !ifdef HAVE_UPX
      !packhdr tmpexe.tmp "upx --ultra-brute --compress-icons=0 -q tmpexe.tmp"
    !endif
    VIProductVersion "1.4.2.0"
    VIAddVersionKey "ProductName" "PHRmake toolkit"
    VIAddVersionKey "Comments" "PHRmake toolkit v1.4.2.0 for Process Hacker v3.0 Russian translation by KLASS"
    VIAddVersionKey "CompanyName" "VictorVG @ VikSoft.Ru"
    VIAddVersionKey "LegalTrademarks" "VictorVG @ VikSoft.Ru"
    VIAddVersionKey "LegalCopyright" "VictorVG @ VikSoft.Ru, 1996 - 2020, Russia, Moscow. All Right Reserved."
    VIAddVersionKey "FileDescription" "Compiled at ${__DATE__} on ${__TIME__}."
    VIAddVersionKey "FileVersion" "1.4.2.0"
    VIAddVersionKey "ProductVersion" "1.4.2"
    VIAddVersionKey "InternalName" "pmake"
    VIAddVersionKey "OriginalFilename" "pmake"
    Function .onInit
    HideWindow
    StrCpy $R1 0
    StrCpy $R2 0
    FunctionEnd
    Section -main
    HideWindow
    FileOpen $R1 "$EXEDIR\version.txt" r
    FileRead $R1 $R2
    StrCpy $R3 $R2 4 4
    StrCpy $R4 $R2 4 9
    FileClose $R1
    IfFileExists "$EXEDIR\include\phrev.h" +1 +2
    Delete "$EXEDIR\include\phrev.h"
    FileOpen $R1 "$EXEDIR\include\phrev.h" a
    FileWrite $R1 "#ifndef PHREV_H$\r$\n#define PHREV_H$\r$\n$\r$\n#define PHAPP_VERSION_BUILD $R3$\r$\n#define PHAPP_VERSION_REVISION $R4$\r$\n$\n#endif$\r"
    FileClose $R1
    SetAutoClose true
    SectionEnd

    Baltazar500
     
    Судя по всему стуб модифицирован и Observer его не берёт.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:37 01-01-2023
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG, ок, а в немодифицированном будет [NSIS].nsi или что-то другое ?

    Всего записей: 2105 | Зарегистр. 19-09-2011 | Отправлено: 17:56 01-01-2023
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Цитата:
    А кто мешает написать SFX модуль на NSIS?
    А зачем? Вроде ж до сих пор живы модифицированные SFX модули для 7z архивов, даже периодически архив перезаливаю. Со своей задачей справляются.

    Всего записей: 16744 | Зарегистр. 04-11-2010 | Отправлено: 19:57 01-01-2023
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Baltazar500
     
    В NSIS 2/3 будет, в этом не знаю. Я этот модуль живьём не видел, но кто мешает автору закамуфлировать его под NSIS или что-то иное?

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 21:10 01-01-2023 | Исправлено: Victor_VG, 21:11 01-01-2023
    Bannan



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

    Цитата:
    Есть вот такой nsis - установщик из которого я попытался старыми ревизиями  7zip'a вытянуть .nsi скрипт установки, да вот только обломался

    Baltazar500, этот установщик создан кастомной сборкой NSIS, в которой был модифицирован заголовок с информацией о структуре данных (это можно сделать в файле fileform.h, о чем и указывает в комментариях разработчик). По этой причине стандартные инструменты не могут извлечь сценарий, т.к. им ничего не известно о данной сборке NSIS.
     
    Но раз нельзя работать стандартными методами, то можно применить нестандартные.  
    В общем держите декомпилированый сценарий: скачать (пароль стандартный)
    В архиве два файла:  
     * UA_Main.1-script.bin - распакованный сценарий в двоичном формате (RAW);
     * UA_Main.1-script.nsi - декомпилированный сценарий (текстовый формат).  
     
    Но как было замечено ранее, полное восстановление сценариев NSIS - невозможно. К тому же, из-за того что применялась нестандартная сборка NSIS, полученный сценарий содержит множество ошибок. Но если вы хорошо разбираетесь в NSIS, то на базе полученных сведений написать собственный сценарий не составит труда.
     
    Удачи!

    Всего записей: 507 | Зарегистр. 30-07-2011 | Отправлено: 02:28 02-01-2023
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bannan,
    Цитата:
    Но раз нельзя работать стандартными методами, то можно применить нестандартные.
    А вот отсюда можно поподробнее ? ))) Думаю, не мне одному это бы пригодилось
    Цитата:
    В общем держите декомпилированый сценарий: скачать (пароль стандартный)
    В архиве два файла:  
     * UA_Main.1-script.bin - распакованный сценарий в двоичном формате (RAW);
     * UA_Main.1-script.nsi - декомпилированный сценарий (текстовый формат).  
    Спасибо Потроха .nsi кстати местами сильно напоминают извлечённую 7zip'ом " двойку" но т.к. там практически сплошная бинарщина, ничего разобрать кроме спецсимволов невозможно.
    Цитата:
    Но как было замечено ранее, полное восстановление сценариев NSIS - невозможно. К тому же, из-за того что применялась нестандартная сборка NSIS, полученный сценарий содержит множество ошибок. Но если вы хорошо разбираетесь в NSIS, то на базе полученных сведений написать собственный сценарий не составит труда.
    Да собственно тут дело было в определении компонентов, что содержит этот "установщик", а не в генерации собственного сценария. Даже сценарий содержащий ошибки уже неплохое подспорье при разборе ресурсов. Осталось лишь сопоставить то, что было ранее наанпачено через "-t#" (там пачка 7z архивов разных габаритов получилась) с информацией полученной из сценария.

    Всего записей: 2105 | Зарегистр. 19-09-2011 | Отправлено: 07:00 02-01-2023
    Bannan



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

    Цитата:
    А вот отсюда можно поподробнее ?

    1) Запускаете объект исследования под отладчиком и доходите до точки, когда в память будет распакован код сценария (бинарный формат).
    2) Запускаете под отладчиком распаковку любого простейшего инсталлятора NSIS официальной версии (например любого скомпилированного примера, включенного в поставку, см. папку "Examples") и также доходите до точки, когда в память будет распакован код сценария (бинарный формат).
    3) Теперь берете код сценария исследуемого объекта (из первого пункта) и подменяете им код примера (из второго пункта).
    4) После продолжаете распаковку инсталлятора из второго пункта.
    5) Получаете декомпилированный код сценария исследуемого объекта.
    Профит!
     
    P.S. Точки распаковки сценариев под отладчиком можно найти по обращению к сигнатуре "пs-ЮNullsoftInst" (0хEFBEADDE4E756C6C736F6674496E7374 - читается блоками по 4 байта).
    P.P.S. Есть инсталляторы, собранные в кастомных сборках NSIS со "сбитым заголовком", т.е. вместо "пs-ЮNullsoftInst" может быть что угодно, но под отладчиком код код распаковки заголовка все время один и тот же. Поэтому если под отладчиком хорошо изучить стандартные инсталляторы NSIS, то с кастомными NSIS не промажете (даже если они были скомпилированы в разных версиях MSVS).

    Всего записей: 507 | Зарегистр. 30-07-2011 | Отправлено: 15:53 02-01-2023 | Исправлено: Bannan, 15:56 02-01-2023
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bannan, спасибо за инструкцию и информацию, но боюсь для подобных ковыряний у меня скилл маловат и не хватит (кхе-кхе) компетенции на проворачивание подобного Хотя я и не прочь на досуге поизучать вопрос, если обозначите используемый софт и задействованные в процессе анализа инструменты )))

    Всего записей: 2105 | Зарегистр. 19-09-2011 | Отправлено: 04:53 03-01-2023
    bigcrown



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, впервые в этой ветке.
    Сделал автозапуск после инсталляции:

    Код:
    !define MUI_FINISHPAGE_RUN "$InstDir\Chess\Chess.exe"
    !insertmacro MUI_PAGE_FINISH

    но не срабатывает, потому что не находит файл Chess.ini в папке.
     
    Понятно что нужно перед запуском сменить директорию на $InstDir. Но как это сделать простой командой в скрипте?
     
    Порылся немного в теме, кто-то написал, что надо батник создавать. Что-то мне корявое решение с батником не нравится.
     
    Добавлено:
    Всё, нашёл решение.
     

    Код:
    Function ChangeDir
      SetOutPath "$InstDir\Chess"
      Exec "$InstDir\Chess\Chess.exe"
    FunctionEnd
     
    !define MUI_FINISHPAGE_RUN
    !define MUI_FINISHPAGE_RUN_FUNCTION "ChangeDir"


    Всего записей: 328 | Зарегистр. 28-11-2005 | Отправлено: 00:01 05-02-2023 | Исправлено: bigcrown, 00:30 05-02-2023
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bigcrown
     
    1) Достаточно почитать справку NSIS по ключевому слову SetOutPath где сказано, что SetOutPath меняет текущий каталог до своего следующего появления с новым аргументом.
     
    2) Смысла городить огород с ChangeDir() нет - лишняя морока. Добавляете SetOutPath в секцию -post:

    Код:
    Section -post
    ...... /* ваш код */
    SetOutPath "$InstDir\Chess"
    Exec "$InstDir\Chess\Chess.exe"
    SetAutoClose true
    SectionEnd  

    этого хватит, а инсталлер после запуска Chess сам закроется.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 05:34 05-02-2023
    WiperX



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую! А русской версии 3.08 никто не встречал?

    Всего записей: 961 | Зарегистр. 17-03-2009 | Отправлено: 09:16 05-02-2023
    VSS

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

    Всего записей: 48 | Зарегистр. 17-12-2005 | Отправлено: 13:19 11-02-2023
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VSS
    Такие вопросы лучше решать коллективно-публично. Опиши задачу и проблему, приведи свой код(пусть и не рабочий).

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 13:25 12-02-2023 | Исправлено: MKN, 13:26 12-02-2023
    VSS

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
    Благодарю за совет, но добрые люди уже объяснили причину проблемы.
    Тема закрыта.

    Всего записей: 48 | Зарегистр. 17-12-2005 | Отправлено: 21:27 13-02-2023
    MKN



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

    Цитата:
    Тема закрыта.

    Тема и не открывалась даже... Форумы для того и создаются, чтобы публично решать проблемы -вопросы, а не втихаря через ПМ. Представь, у кого нибудь такая же проблема, как и у тебя, человек читает форум, видит радостного VSS, но решения вопроса ессно не видит, т.к. VSS помогли конспиративно-инкогнито... Вот тебе и форум...

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 12:49 14-02-2023
    VSS

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
    Если интересно, то специально для Вас.
    В ExecWait используется WaitForSingleObject, а запускаемая программа создавала множество потоков.
    В данном случае нужно использовать WaitForMultipleObjects. Но для NSIS такого варианта нет. Точнее - есть попытка решить проблему скриптами (https://nsis.sourceforge.io/ExecWait_and_waiting_for_child_processes_with_Job_Objects). У меня этот вариант не работает. Найти плагин, увы, не удалось.
    Есть объяснение проблемы (за это спасибо), но решения нет. И чему тут радоваться?

    Всего записей: 48 | Зарегистр. 17-12-2005 | Отправлено: 13:09 14-02-2023 | Исправлено: VSS, 13:26 14-02-2023
    MKN



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

    Цитата:
    У меня этот вариант не работает.

    Применял когда то этот макрос для ожидания завершения процесса с созданными параллельно несколькими дочерними. В моём случае макрос делал своё дело.
    А что тебе посоветовали для решения этого вопроса ? Конкретный код есть ?

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 16:08 14-02-2023
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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