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

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



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
    Аналогично можно получить и какая ОС (например по номеру билда) и разрядность из Win32_OperatingSystem
     
    Sanch8
    Ваш код будет некорректен, если ноут с двумя видео
    WMI.nsh не очень удачный вариант в данном случае, если на выходе будет коллекция
    Он насколько помню с коллекциями не умеет работать, впрочем может и ошибаюсь, давно его смотрел

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 17:40 18-07-2019 | Исправлено: dialmak, 18:01 18-07-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно собрать NSIS установку из существующего 7Zip архива без его распаковки и пережатия?

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 14:31 04-08-2019 | Исправлено: insorg, 14:32 04-08-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg, примерно так:

    Код:
        InitPluginsDir
        File "/oname=$PLUGINSDIR\7za.exe" "7za.exe"
        File "/oname=$PLUGINSDIR\app.7z" "app.7z"
        
        SetOutPath $INSTDIR
        nsExec::Exec '"$PLUGINSDIR\7zr.exe" x -y -o"$INSTDIR" "$PLUGINSDIR\app.7z"'
        RMDir /r /REBOOTOK "$PLUGINSDIR"  

     
    В качестве полного примера - старый код моего установщика Inkscape:Подробнее...

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 14:43 04-08-2019 | Исправлено: iglezz, 14:52 04-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
    Здесь 7za, по ссылке - 7zr. Что за звери?

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 14:58 04-08-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
    7za - стандартная консольная самодостаточная версия из одного .exe (https://www.7-zip.org/a/7z1900-extra.7z)
    7zr - урезанный по методам сжатия вариант 7za, компилировал из исходников самостоятельно.  
    Для версии 18.01 экономия 7za/7zr ~240Kb (100Kb для пожатого при помощи upx)

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 15:06 04-08-2019 | Исправлено: iglezz, 15:13 04-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
    Т.е. я могу вместо 7zr указать 7za?
    Урезанный мне не светит, надо нормальная поддержка lzma, bcj, delta.

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 21:18 04-08-2019 | Исправлено: insorg, 21:19 04-08-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
    Любой вариант годится
     
    Из readme:
    Цитата:
    7za.exe: Standalone version of 7-Zip console that supports only 7z/xz/cab/zip/gzip/bzip2/tar.
    7zr.exe: Standalone version of 7-Zip console that supports only 7z (reduced version)

     
    Если интересно будет глянуть, то вот скомпилированный мной вариант - 7zr 19.00

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 22:05 04-08-2019 | Исправлено: iglezz, 23:53 04-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
    По образцу из комплекта дописываю строки из сообщения, 7za.exe вроде бы отрабатывает нормально. Спасибо.

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 23:51 04-08-2019 | Исправлено: insorg, 23:51 04-08-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
     
    Вы не точно выразились - 7za.exe да, standalone - т.е. не требующий иных кроме ADVAPI32.dll, KERNEL32.dll, msvcrt.dll, OLEAUT32.dll и USER32.dll зависимостей вариант 7-Zip обеспечивающий поддержку ограниченного подмножества форматов - это указано в  7z*-extra.7z::readme.txt :
     
    7za.exe - is a standalone console version of 7-Zip with reduced formats support.
     
      Extra: 7za.exe             : support for only some formats of 7-Zip.
      7-Zip: 7z.exe with 7z.dll  : support for all formats of 7-Zip.
      7zr.exe      - 7-Zip console program (reduced version) - это указано в lzma*.7z/DOC/lzma-sdk.txt  - LZMA SDK description

     
    Что касается применения компрессоров исполняемых модулей, то смысла в них не много - место на диске файл займёт меньше, но запросит дополнительное ОЗУ для своей распаковки. Обычно распаковщику требуется до 20 Мб ОЗУ на стадии загрузки и 5 - 7 Мб ОЗУ во время исполнения сжатой программы. Кстати UPX в среднем увеличивает объём занимаемой программой памяти примерно на 6 - 8 Мб для каждого сжатого им бинарника. Я специально с этим разбирался при подготовке методики испытаний разрабатываемого ЦП.
     
    insorg
     
    Если вам нужны все возможности 7-Zip в консоли, то вам придётся использовать связку 7z.exe и 7z.dll. Без неё данный бинарник бесполезен.

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

    Всего записей: 33217 | Зарегистр. 31-07-2002 | Отправлено: 03:08 05-08-2019
    insorg



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

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 08:08 05-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А из одного общего 7z архива внутри как можно сделать варианты распаковки по компонентам?
    Надо через разные Section указывать соответствующие команды для 7za?
    Или логика работы немного иная?

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 14:05 05-08-2019 | Исправлено: insorg, 14:06 05-08-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
    Команда
    Код:
    7za x -y -o"$INSTDIR" -ir!"folder 2\subfolder" arch.7z
    извлечёт каталог "folder 2\subfolder" в "$INSTDIR\folder 2\subfolder"
    За подробностями и ньюансами работы с ключами 7-Zip лучше пройти в тему 7-Zip
     
    Для solid архива лучше будет по секциям собрать список распаковываемых каталогов. Как-то так
    Для сложных сценариев распаковки возможно придётся перепаковывать архив.

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 15:03 05-08-2019 | Исправлено: iglezz, 15:05 05-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрался до VIAddVersionKey, и внезапно удивился, что номера версий и автобилда нам предлагают писать цифрами в текстовом виде.
    Старый классический вариант в виде Year.Month.Day.Build делается автоматом?
    По идее, как-то должна быть прописана дата, от которой считать номер автобилда, чтобы посчитать значение. Год/месяц/день - брать текущие.

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 20:42 05-08-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
    Предполагается, что скриптописатель сам позаботится от этом и сформирует строку необходимым ему образом. Для этого у него есть раздел справки "Chapter 5: Compile Time Commands" и такие ключи makensis как /D и /X

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 21:19 05-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
    В упор не пойму. Дату там можно вывести легко, но как заставить посчитать номер билда (классика - количество дней между датами) - в упор не вижу.
    Можно пример, или ссылку на образец?

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 21:53 05-08-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
     
    Вы легонько в MSDN посмотрите. Структура VERSION_INFO.
     
    С собственной автобилдовкой по дате - IntOp вроде считать не разучилась, но разумнее использовать счётчик коммитов вашей системы контроля версий (Git, Hg, SVN) и не изобретать себе проблемы. После с такой нумерацией версий сами запутаетесь.

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

    Всего записей: 33217 | Зарегистр. 31-07-2002 | Отправлено: 05:51 06-08-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    К чему упоминание MSDN не совсем понял, ну да ладно.
    Нумерация билда установки в моих случаях должна отличаться от цифр содержимого внутри софта. Особенно в мелких патч-обновках, где даже exe и dll запросто может не бывать, лишь ресурсы или текстовики с конфигами.
    Модные gitы и svnы для таких случаев отпадают, приходится мудрить с тем, чтобы это решить силами NSIS, благо посчитать количество дней между указываемой датой и сегодняшней - задача крайне тривиальная.

    Цитата:
    IntOp вроде считать не разучилась
    Интересует подробнее. В мануале nsis такая функция описана, но не по обработке дней, а просто в качестве подобия калькулятора.
    Какой-то пример, как получить разницу между нужной датой и сегодня, при помощи этой функции можно?
    Или даже готовое сразу? Может, по готовому понятнее станет.

    Всего записей: 16668 | Зарегистр. 04-11-2010 | Отправлено: 00:44 07-08-2019 | Исправлено: insorg, 00:44 07-08-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
     
    MSDN (сейчас он зовётся Microsoft docs) штука лишняя, и её не стоит читать - VERSIONINFO resource.

    Цитата:
    Модные gitы и svnы для таких случаев отпадают

    Мода существует на штаны с перекосом, а СКВ (Системы Контроля Версий) появились далеко не вчера и зело выручают в работе. Но вам видно это не нужно, ладно, жизнь заставит - воспользуетесь, чего вас торопить?
     
    Читайте https://nsis.sourceforge.io/Docs/Chapter4.html#intinst пункт 4.9.10.3 IntOp и пишите свой календарный калькулятор учитывающий число дней по месяцам, а после вычисляйте что вам хочется. Хотя вариант с датой в качестве номе билда бред т.к. build это номер сборки с момента создания основной версии - согласно Windows SDK версия любого бинарника определяется четырьмя цифровыми значениями: Major.Minor.Build.Revison. Ну, расшифровку сами найдёте, не сложно.  
     
    А прописать дату-время сборки в VERSION_INFO элементарно:
     
    VIProductVersion "${PRODUCT_VERSION}.0.0"
    VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Nullsoft Scriptable Install System ${PRODUCT_VERSION}. Add-Ons Components Kit."
    VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "Install Add-Ons components for Nullsoft Scriptable Install System ${PRODUCT_VERSION}, include plugins, special compiler build for support 8192 byte string light and examples. Windows Vista compatible."
    VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Nullsoft, Inc."
    VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright © 1999-2016 Nullsoft, Inc., VictorVG by © VikSoft.Ru, 1996 - 2016. All Right Reserved."
    VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Install Add-Ons Components for NSIS ${PRODUCT_VERSION} or higest. Compiled at ${__DATE__} on ${__TIME__}."
    VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${IMin}.${IMaj}.${IBld}.${IRev}-${IVar}"
    VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${PRODUCT_VERSION}"
    VIAddVersionKey /LANG=${LANG_ENGLISH} "InternalName" "update"
    VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Nullsoft, Inc."
    VIAddVersionKey /LANG=${LANG_ENGLISH} "OriginalFilename" "setup"
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "ProductName" "Nullsoft Scriptable Install System ${PRODUCT_VERSION} Add-Ons Components Kit."
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "Comments" "Установка дополнений для Nullsoft Scriptable Install System ${PRODUCT_VERSION} включая дополнения, специальную сборку компилятора с поддержкой строк длинной до 8192 байт и примеры. Совместимо с Windows Vista."
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "CompanyName" "Nullsoft, Inc."
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalCopyright" "Копирайт © 1999 - 2016 Nullsoft, Inc., VictorVG by © VikSoft.Ru, 1996 - 2016. Все права защищены."
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileDescription" "Установка дополнительных компонент для NSIS ${PRODUCT_VERSION} и выше. Откомпилированно ${__DATE__} в ${__TIME__}."
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileVersion" "${IMin}.${IMaj}.${IBld}.${IRev}-${IVar}"
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "ProductVersion" "${PRODUCT_VERSION}"
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "InternalName" "update"
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalTrademarks" "Nullsoft, Inc."
    VIAddVersionKey /LANG=${LANG_RUSSIAN} "OriginalFilename" "setup"
     
    в VIProductVersion должны быть только цифры или получите сбой компиляции!


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

    Всего записей: 33217 | Зарегистр. 31-07-2002 | Отправлено: 04:34 07-08-2019
    Andrea



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Может обращаюсь не в тему, но решил спросить здесь, у знатоков. Существует ли способ узнать, реально опасен или нет экзешник, собранный (кем то) в NSIS. Скачал сегодня портативную программу формата PortableApps, упакованную в NSIS, но на неё ругается Каспер и примерно 40% антивирусов на сервисе VirusTotal. Но что самое интересное, если этот экзешник распаковать 7-Zip-ом или Universal Extractor-ом, то его содержимое определяется антивирусами как безопасное. Почему так, может антивири недолюбливают упаковки NSIS?

    Всего записей: 1094 | Зарегистр. 24-12-2015 | Отправлено: 12:54 16-08-2019 | Исправлено: Andrea, 13:11 16-08-2019
    MKN



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

    Цитата:
    может антивири недолюбливают NSIS?

    Антивирусы недолюбливают не только NSIS... А разработчики ПО частенько "дразнят" антивирей, не соблюдая некоторые моменты в инсталляторах и др.
    https://habr.com/ru/post/228059/
    Из комментов :

    Цитата:
    Война протекторов с антивирусами напоминает анекдот "И как там наши?". В том смысле, что и антивирусы чума, и протекторы на проприетарный софт — холера. Что лучше — а шут его знает.

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

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 13:11 16-08-2019 | Исправлено: MKN, 13:16 16-08-2019
    Открыть новую тему     Написать ответ в эту тему

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