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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Ну это решение чисто для себя для любимого.
    А вот что касается инсталляторов, после всех твиков у тебя будет всё ОК, а пользователи скачавшие такую прогу будут мучатся с крякозябрами.
    Поэтому я предпочитаю не трогать ось, чтобы били видны проблемы. В этом случае их можно устранить.
    Теперь у меня проблема решилась наилучшим образом. Помимо того, что я избегаю крякозябров на английской локали, я попутно избавился от длиннющего списка файлов на 6000 строк. В результате получил сценарий из 130-ти строк.
    Странно, что HM NSI Edit не имеет такой функции или же надо глубоко копаться.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 00:13 12-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Нет, он скорее просто редактор текста с доп. возможностями, а потому в нём много чего нет, да и писался он ещё для ANSI NSIS v2.0.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 00:56 12-01-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Как то всё запутано. Подозреваю, что все корифей предпочитают вручную писать сценарии. А ведь казалось бы, ничего не стоит написать помощника для новичков.
    Вот я, сделал несколько сценариев и на их примере уже какие то функции знаю. А копаться в хелпе очень уж утомительно без наглядного примера.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 01:45 12-01-2015
    Kumga

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68 Если уж очень хотите на NSIS быстренько собирать инсталляторы, загляните на ozone (вы там были), но в другую тему Ссылка. Там найдете программу SFX Creator, которую освоить не составит труда. Ее возможности:
    Их много
    Подробнее...
    Есть внятная простая справка...

    Всего записей: 344 | Зарегистр. 22-11-2010 | Отправлено: 03:18 12-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Загляните в NSIS\Examples и HM NIS - там примеров предостаточно. А так на ощупь вы ничего не освоите. Это метод "мальчиков с длинной отвёрткой" - у них знаний ноль, но они всё знают, а вы хотите научится, а значит нужно читать документацию и разбирать примеры. Иного нам с вами не дано...

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 03:51 12-01-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kumga
    Victor_VG
    Спасибо огромное за советы.
    Буду изучать.  
    Сейчас надо над интерфейсом поработать, изменить размеры окна, заголовка и т. д.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 13:17 12-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Вы посмотрите примеры как другие решают аналогичные задачи - наверняка иные приёмы работы и вам пригодятся. Зачем придумывать уже известное?

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



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

    Цитата:
    Вы посмотрите примеры как другие решают аналогичные задачи - наверняка иные приёмы работы и вам пригодятся. Зачем придумывать уже известное?  

    Да я бы с удовольствием.
    Мне вот надо шаблоны для такого сценария:
    1. Выбор языка.
    2. Окно приветствия.
    3. Выбор пользовательских компонентов.
    4. Два чекбокса при переключении один остаётся неактивным.
    5. Выбор директории.
    6. Установка.
    7. Завершение с чекбоксом запуском ярлыка.
     
    Из предложенного сценария, по шаблону HM NIS Edit, я реализовал всё кроме 4-ого пункта.
    Ну если не считать размеры окна и надписей.
     
    Добавлено:

    Цитата:
    ; Welcome page
    !insertmacro MUI_PAGE_WELCOME
    ; Components page
    !insertmacro MUI_PAGE_COMPONENTS
    ; Directory page
    !insertmacro MUI_PAGE_DIRECTORY
    ; Instfiles page
    !insertmacro MUI_PAGE_INSTFILES
    ; Finish page

    Вот как должна обзываться страница у 4-ого пункта после MUI_PAGE_COMPONENTS ?
    Кнопки из этого пункта вроде называются RadioButton.
    Из прочитанного в Help я понял, что добавляется кастомная страница функцией nsDialogs.  

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 21:07 12-01-2015 | Исправлено: megane68, 21:41 12-01-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плиз, где копать функцию с условием - если программа распаковывается в директорию отличную от Program Files и Program Files (x86), то удалить такой то файл из "$INSTDIR"?

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 03:56 13-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    По п.4 я это реализую таким приёмом ( на всплывающие диалоги народ ворчит и справедливо ) - в заголовке скрипта определяем несколько переменных-семафоров и в .onInit ставим их в "0" чтобы исключить любые ложные срабатывания. Затем используем механизмы NSIS с добавлением секций установки группы файлов (в мастере HM NIS), но сами секции у нас будут содержать только команды изменения состояния семафора без каких либо команд установки файлов - они и помогут реализовать логику переключателя. Далее используем установленные нами семафоры для перехода на разные ветки алгоритма. Если надо, то я использую скрытую секцию для анализа срабатывания сенсорных секций и управления состоянием семафоров, а логику по месту пишу...  
     
    Добавлено:
    megane68
     
    Готовой функции с ходу нет, да и задача решается парой строк StrCmp типа такого:
     
    StrCmp $INSTDIR $PROGRAMFILES next
    StrCmp $INSTDIR $PROGRAMFILES64 netx
    Delete $INSTDIR\File1
    ...
    Delete $INSTDIR\FileN
    next:

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Фух... Вчера таки добил RadioButton. Оказалось даже не пршлось делать отдельную страничку. Реализовал эту функция на странице компонентов.
    Правда я думал, что это круглые точки, а это галочки.
     

    Цитата:
    StrCmp $INSTDIR $PROGRAMFILES next
    StrCmp $INSTDIR $PROGRAMFILES64 netx
    Delete $INSTDIR\File1
    ...
    Delete $INSTDIR\FileN
    next:
     

    Ага, спасибо. Буду дальше дожимать.
    С наступающим Старым НГ Вас!

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 15:30 13-01-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    А что такое в вашем примере "next"?
    Функцию Delete FILE я прописал в группе, а вот со StrCmp какая то проблема.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 17:53 13-01-2015 | Исправлено: megane68, 18:58 13-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    next: это метка для перехода. Можно посчитать адрес вручную, но так можно и напутать - сам этом нарывался не раз ибо адреса в NSIS считаются от начала строки команды, например:
     
    goto +4
    not
    not
    StrCmp
     
     
    равносильно записи:
     
    goto next
    not
    not
    next:
    StrCmp
     
    метка и следующая за ней команда имеют один относительный адрес +4.  
     
    С StrCmp наверное придётся немного поколдовать, но я смогу точно сказать позднее когда разверну на своей машине ОС - проблемы с драйверами Nec/Renesas µPD720201 - плата довольно капризная и не всегда подхватывается ими. Пришлось винты обнулять.
     


    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 19:21 13-01-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    На next NSIS ругался.
    Взял из хелпа 0 и +2  
    Пока файл постоянно удаляется, куда бы не устанавливать.
     
      StrCmp $INSTDIR $PROGRAMFILES +2 0
        Delete $INSTDIR\user_profiles_enabled
      StrCmp $INSTDIR $PROGRAMFILES64 +2 0
        Delete $INSTDIR\user_profiles_enabled
     
     
    Добавлено:

    Цитата:
    С StrCmp наверное придётся немного поколдовать, но я смогу точно сказать позднее когда разверну на своей машине ОС

    ОК!
     
     
    Добавлено:
    Понял я в чём дело.
    Мы даём значение $PROGRAMFILES, но путь установки $PROGRAMFILES\foobar2000.
    Отсюда возникает вопрос, как сделать, чтобы в значениях учитывалось наличие в пути $PROGREAMFILES.
    Вот так работает:

    Цитата:
      StrCmp "$INSTDIR" "$PROGRAMFILES\foobar2000" +2 0
        Delete $INSTDIR\user_profiles_enabled


    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 19:25 13-01-2015 | Исправлено: megane68, 21:04 13-01-2015
    Victor_VG



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

    Цитата:
    На next NSIS ругался

    А метка перехода next: у вас в коде определена в той же секции или функции? Давайте глянем ваш код и лог ошибки и вместе исправим её. Наверняка там что-то очень простое что именно из-за простоты вы не заметили.
     
    И по поводу путей - NSIS динамически детектит х86 и х64 среды, но пути к удаляемым элементам надо указывать с точностью до каталога к примеру:
     
    команда Delete $INSTDIR\myapp\*.dll
     
    удалит все *.dll в каталоге $INSTDIR\mapp, а вот его можно динамически переопределить в .onInit или позднее через оператор присваивания StrCpy $INSTDIR $INSTDIR\myapp , но
    во избежание ошибок я бы иначе поступил:
     
    StrCpy $R2 $INSTDIR\myapp
    Delete $R2\*.dll
     
    - тут я учитываю что значения регистров 0 - 9 ($0 -$9) динамически могут изменять и сам NSIS или подключаемые макросы и инклюды, а старшие регистры 11 - 19 ($11 - $19 == $r0 - $r9 == $R0 - $R9) они обычно не трогают.
     
    Вот рабочий код который мне пришлось задействовать для исключения установки 64-х битной SumatraPDF на 32-х битных ОС:

    Цитата:
        ClearErrors
        ReadEnvStr $R0 "PROCESSOR_ARCHITECTURE"
        StrCmp $R0 "AMD64" +6
        ReadEnvStr $R1 "PROCESSOR_ARCHITEW6432"
        StrCmp $R1 "AMD64" +4
        MessageBox MB_ICONSTOP|MB_OK "Error!$\n$\nYou cann't install 64-bit version SumatraPDF on 32-bit OS.$\nPlease, restart Setup at the 64-bit version of Windows XP or$\nServer 2003 or later version OS Windows.$\n$\nThanks!" IDOK +1
        Quit

    он стоит в самом начале функции .onInit() и анализирует переменные среды и гарантирует что программа будет установлена только на платформе AMD64.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 12:07 14-01-2015
    megane68



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

    Цитата:
    Вот рабочий код который мне пришлось задействовать для исключения установки 64-х битной SumatraPDF на 32-х битных ОС:  

    Это пока выше моего понимания. )))))
    Вообще, мне это для самообразования. Так то устраивает и относительно полный путь, ибо программа 32-х битная, и вряд ли кому то придёт в голову изменять директорию в Program Files.
    Но для подстраховки надо будет сделать портабельную установку без прав администратора, тогда она будет невозможна в PF.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 15:27 14-01-2015 | Исправлено: megane68, 15:28 14-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Ну, тогда у вас времени вагон и маленькая тележка и можно не спеша в доках разобраться.

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



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

    Цитата:
    Ну, тогда у вас времени вагон и маленькая тележка и можно не спеша в доках разобраться.

    Времени как у всех не хватает. Просто пока были праздники, задался целью.
    Если бы знать где копать, чтобы не читать весь хелп ища то, что нужно.
    Не подскажите через какую функцию устанавливаются права пользователя на установку разных секций?
    Сейчас два типа установки: стандартная и портабельная. Права заданы на всё или admin, или user, а нужно для стандартной установки права администратора, а для портативной - пользователя.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 17:37 14-01-2015 | Исправлено: megane68, 17:41 14-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Эти возможности "из коробки" отсутствуют, но сиё решаемо через вызов плагинов MoreInfo/XTInfo - смотрим вызов IsAdmin и идём по нужной ветке алгоритма.

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



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

    Цитата:
    MoreInfo/XTInf

    Я так понимаю это MoreInfo.dll 1.0.1.2? Есть такая.
    Буду копать.
    Спасибо!

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 22:49 15-01-2015
    Открыть новую тему     Написать ответ в эту тему

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