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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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.08 (от 25 сентября 2021 г.)  
     
     
    Ссылки:
    NSIS: страница загрузкирусификатор ветки 2.xx (без гарантии, что подходит!)2.513.02.1NSIS 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 | Исправлено: Maz, 20:31 01-01-2023
    AlekseyPopovv



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как создать MUI_PAGE_DIRECTORY custom?
    И как задать разные InstallDir для обычной и портативной версий?

    Всего записей: 257 | Зарегистр. 25-03-2013 | Отправлено: 17:56 04-10-2019 | Исправлено: AlekseyPopovv, 17:59 04-10-2019
    Bannan



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

    Цитата:
    Как создать MUI_PAGE_DIRECTORY custom?

    Сам диалог можно создать с помощью программы NSIS Dialog Designer. Затем самостоятельно наполнить его нужным функционалом (определить события и связать с ними соответствующие действия).
     

    Цитата:
    И как задать разные InstallDir для обычной и портативной версий?

    Просто назначайте разные значения переменной $INSTDIR в зависимости от сделанного пользователем выбора. Например, сделайте страницу с двумя радиокнопками: "Стандартная установка" и "Портативная установка". Вот на этом этапе, в зависимости от того, что выберет пользователь, переназначайте в сценарии переменную $INSTDIR. Типа
    если "Стандартная установка", то  

    Код:
    StrCpy $INSTDIR "<путь установки по умолчанию>"  

    если "Портативная установка", то  

    Код:
    StrCpy $INSTDIR "<путь портативной установки>"  

    Всего записей: 506 | Зарегистр. 30-07-2011 | Отправлено: 18:57 04-10-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlekseyPopovv
     
    Переменную среды $INSTDIR можно изменить в любой момент, но это может оказаться не желательным с точки зрения ошибок. Поэтому можно использовать регистры или свою переменную и скопировав туда значение $INSTDIR менять его по месту. А задать разные значения, точнее переопределить $INSTDIR можно к примеру в секции выбора типа установки проверки условия что она выбрана на стартовом экране:
     
    Section "-Standalone" SEC01
     StrCpy $s1 1
    SectionEnd
    Section /o "Install as portable" SEC02
      StrCpy $s2 1
    SectionEnd
     
    и выполнения в ней желаемых действий, например установки переменной-семафора определяющей дальнейшие шаги алгоритма.

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

    Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 19:02 04-10-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно сделать создание ярлыков только при наличии соответствующих файлов после установки?
    Предполагается собрать единую установку с различными версиями эмулятора DosBox (каждый в своей папке) и созданием ярлыка на рабочий стол.
    Соответственно, в результате нужно корректно создать ярлыки так, чтобы на не распакованные ехе они не создавались.

    Всего записей: 15785 | Зарегистр. 04-11-2010 | Отправлено: 00:33 06-10-2019
    Victor_VG



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

    Цитата:
    Как можно сделать создание ярлыков только при наличии соответствующих файлов после установки?

    Легко - пара строк в секции -post (она  всегда выполняется последней), зато на каждый ярлык :  

    Код:
    Section -post
    IfFileExists "$INSTTDIR\filename" +1 +2
    CreateShortcut ....
    SetAutoClose {true|false} /* (по умолчанию SetAutoClose  false и его можно опустить) */
    SectionEnd


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

    Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 03:14 06-10-2019 | Исправлено: Victor_VG, 23:09 06-10-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Спасибо. Только очепятка вкралась: IfFileExists.

    Всего записей: 15785 | Зарегистр. 04-11-2010 | Отправлено: 16:08 06-10-2019 | Исправлено: insorg, 16:49 06-10-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    insorg
     
    Исправил.  
     
    P.S.
     
    Это KBD Lenovo L-500K так чудит - батарейки сели, а А4ТECH GR-85 в таких случаях непрерывно повторяет один и тот же символ. Поменял.


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

    Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 23:15 06-10-2019
    insorg



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    что характерно, по тому слову тоже гуглилось что-то связанное с 1С

    Всего записей: 15785 | Зарегистр. 04-11-2010 | Отправлено: 08:13 07-10-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Утро доброе. Не подскажите, где можно увидеть пример сценария, либо инструкции по созданию смешанного 32/64 разрядного инсталлятора? Подобные инсталляторы создаются за несколько шагов в Advanced Installer. Ни в справках по NSIS, ни в сети, я не нашел ничего по данному вопросу.

    Всего записей: 244 | Зарегистр. 17-05-2019 | Отправлено: 08:22 21-10-2019
    iglezz

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

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 11:34 21-10-2019
    heloy2010

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

    Цитата:
    Пример есть в справке в описании SetRegView

    А при чем здесь справка по ключам и разделам реестра и создание 32/64 разрядного инсталлятора? Или вы предлагаете мне на основе данной справки заниматься "изобретением велосипеда", в то время, когда всё давно уже решено и работает? Если у вас нет, либо вы по каким-то своим причинам не хотите предоставить образец конкретного сценария по заданному вопросу, то просто игнорируйте подобные вопросы.

    Всего записей: 244 | Зарегистр. 17-05-2019 | Отправлено: 16:06 21-10-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
    NSIS не для тех, кто хочет пару раз мышкой тыкнуть и получить готовый результат.
    Цитата:
    Подобные инсталляторы создаются за несколько шагов в Advanced Installer
    Ну так зачем мучать себя и NSIS, когда, оказывается, есть Advanced Installer?
     
    Готовый образец предоставлять не хочу, т.к. у меня его нет. Помогать писать его для человека, который сразу выкатывает претензии, желания тоже нет.
     

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 16:18 21-10-2019
    AlekseyPopovv



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

    Код:
    !define APPEXE "86.exe"
    !define APPEXE64 "64.exe"
     
    !include x64.nsh
     
    Function
    ${If} ${RunningX64}
    ExecWait "${APPEXE64}"
    ${Else}
    ExecWait "${APPEXE}"
    ${EndIf}
    FunctionEnd

    Всего записей: 257 | Зарегистр. 25-03-2013 | Отправлено: 10:57 22-10-2019 | Исправлено: AlekseyPopovv, 11:17 22-10-2019
    AlekseyPopovv



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Мне вот больше всего нравится, что многие знают как защитить инсталлятор от распаковки, т.к. сами этим пользуются. Отправляют искать на просторах интернета, а потом говорят что ты этого ни где не найдёшь, и теперь даже не купишь. Это что, секретная разработка какая то? Или вы это купили по цене квартиры? Прям всё желание отбивает что то писать...

    Всего записей: 257 | Зарегистр. 25-03-2013 | Отправлено: 19:35 22-10-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlekseyPopovv
     
    Лично я этим не пользуюсь ибо самому мешает, а проверки "подходит" - эти по месту ставлю. В основном там, где моя структура каталогов отличается от прототипа. И их задача понятна - дров не наломать. А так смысл в этом "чтобы враг не догадался!" - сами-то в итоге не могут свои же ошибки поправить. Ведь самая простая проверка на "Я дров не наломал?" требует открыл - прочитал - исправил, а не ставить, молится всему пантеону и одновременно задней левой ногой репу чесать "Сработает!?".  
     
    Пароль на распаковку годится лишь халтуру прятать аль людям пыль в глаза пускать. Иначе это на минном поле без порток приплясывать крича "Я главный по дурке!".

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

    Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 20:10 22-10-2019 | Исправлено: Victor_VG, 16:54 23-10-2019
    Bannan



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

    Цитата:
    Мне вот больше всего нравится, что многие знают как защитить инсталлятор от распаковки

    AlekseyPopovv, а секрета никакого нет. Об этом в справке NSIS написано. Программа бесплатна, а её исходники выложены в свободном доступе. Берите и делайте "по себя". Авторы, даже подписали, где и что нужно изменить.

    Всего записей: 506 | Зарегистр. 30-07-2011 | Отправлено: 22:17 22-10-2019
    heloy2010

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

    Цитата:
    который сразу выкатывает претензии

    Это вы лихо однако уважаемый, перекладываете с больной головы на здоровую! Вместо конкретного ответа на вопрос, выдаете "левую" ссылку на реестр и что мне вас за это благодарить? И писать персонально для меня сценарии, я никого не просил. Так что не нужно передергивать смысл моего вопроса. И еще раз повторю: если вы не в теме - проходите мимо и не забивайте форум порожниной.
    Что касается самого вопроса, то ответ на него я нашел через Гугл и собрал на его основе пару репаков смешанной разрядности для проверки. Выкладываю его основную часть для сценария 32/64 разрядного инсталлятора, возможно кому и пригодится:
     

    Код:
    !include LogicLib.nsh
    !include x64.nsh
     
    Function .onInit
    ${If} $InstDir == ""
    ${If} ${RunningX64}
    StrCpy $InstDir "$PROGRAMFILES64\MyCompany\MyApp"
    ${Else}
    StrCpy $InstDir "$PROGRAMFILES32\MyCompany\MyApp"
    ${EndIf}
    ${EndIf}
    FunctionEnd
     
    Section
    SetOutPath $InstDir
    ${If} ${RunningX64}
    File "AMD64\myapp.exe"
    ${Else}
    File "i386\myapp.exe"
    ${EndIf}
    SectionEnd
     
    Section "Total"
    SetOutPath "$INSTDIR"
    File ; Общее содержимое
    SectionEnd
     
    Section -reg
    SetRegView 64
    WriteRegStr HKLM "SOFTWARE\... ; Запись в реестр (при необходимости).
    SectionEnd

    Всего записей: 244 | Зарегистр. 17-05-2019 | Отправлено: 09:53 26-10-2019 | Исправлено: heloy2010, 09:56 26-10-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
     
    Чуток поправил ваш пример что скомпилился в NSIS 2.x и при запуске дров не наломал:

    Код:
    !include LogicLib.nsh
    !include x64.nsh
    OutFile test.exe
     
    Function .onInit
    ${If} $InstDir == ""
    ${If} ${RunningX64}
    StrCpy $InstDir "$PROGRAMFILES64\MyCompany\MyApp"
    ${Else}
    StrCpy $InstDir "$PROGRAMFILES32\MyCompany\MyApp"
    ${EndIf}
    ${EndIf}
    FunctionEnd
     
    Section
    SetOutPath $InstDir
    ${If} ${RunningX64}
    IfFileExists "AMD64\myapp.exe" +1 +2
    File /nonfatal "AMD64\myapp.exe"
    ${Else}
    IfFileExists "AMD64\myapp.exe" +1 +2
    File /nonfatal "i386\myapp.exe"
    ${EndIf}
    SectionEnd
     
    Section "Total"
    SetOutPath "$INSTDIR"
    ; Общее содержимое
    SectionEnd
     
    Section -reg
    SetRegView 64
    ; WriteRegStr HKLM "SOFTWARE\... ; Запись в реестр (при необходимости).
    SectionEnd

    DetailPrint ставить не стал - ибо не сработает.

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

    Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 19:54 26-10-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Благодарю вас за дополнение и поправку в сценарии.  
    У меня тут возникла еще одна проблема при конвертировании файла реестра в NSIS-скрипт, в результате которой не работает редактирование *msi через контекстное меню.
     
    1. Оригинальное значение в файле реестра:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Msi.Package\shell\Редактировать\command]
    @="\"C:\\86\\ad.exe\" \"%1\""
     
    2. Значение реестра после конвертирования Reg2Nsis в NSIS-скрипт:
    WriteRegStr HKLM "SOFTWARE\Classes\Msi.Package\shell\Редактировать\command" "" "\$\"C:\86\ad.exe\$\" \$\"%1\$\""
     
    3. Фактически записанное значения реестра установщиком из NSIS-скрипта в реестр (экспортированное в *reg):
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Msi.Package\shell\Редактировать\command]
    @="\\\"C:\\86\\ad.exe\\\" \\\"%1\\\""
     
    Подскажите пожалуйста, что мне нужно изменить в NSIS-скрипте для получения правильного значения в реестре после инсталляции?

    Всего записей: 244 | Зарегистр. 17-05-2019 | Отправлено: 22:55 09-11-2019 | Исправлено: heloy2010, 19:38 10-11-2019
    iglezz

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

    Код:
    WriteRegStr HKLM "SOFTWARE\Classes\Msi.Package\shell\Редактировать\command" "" '"C:\86\ad.exe" "%1"'

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 23:07 09-11-2019 | Исправлено: iglezz, 23:07 09-11-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