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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dodakaedr
     
    Вы про переменные среды или UNIX нотацию? Я же не под форточками живу, а в демоне. Отсюда и привычная запись.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:59 20-01-2015 | Исправлено: Victor_VG, 21:33 20-01-2015
    dodakaedr



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

    Цитата:
    Отсюда и привычная запись.

    а как правильно написать?

    Всего записей: 178 | Зарегистр. 31-01-2014 | Отправлено: 21:03 20-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dodakaedr
     
    Для CMD переменные среды указываются в %ENVERONENAME%, но в данном случае имеет место опечатка - двойной \\:
     
    ExecDos:exec /DISABLEFSR 'md "$LOCALAPPDATA\App\IFX"&&move /y $EXEDIR\App\IFX $LOCALAPPDATA\\App\IFX'
     
     
    убираем, видим:
     
    ExecDos:exec /DISABLEFSR 'md "$LOCALAPPDATA\App\IFX"&&move /y $EXEDIR\App\IFX $LOCALAPPDATA\App\IFX'
     
    а конструкции вида команда1&команда2& ... &командаN или команда1&&команда2&& ... &&командаN допустимы спецификациями ОС и носят название "конвейер команд". Разница в них одна:
     
    одиночный & - после завершения текущей команды выполнить следующую не проверяя успешность её выполнения;
     
    двойной && - выполнить следующую команду при успешном выполнении текущей, иначе прервать выполнение последовательности команд.
     
    Вы можете использовать данный приём в плагинах NSIS предусматривающих выполнение команд CMD или пакетных (.bat/.btm/.cmd) файлах сценариев ОС. Файлы .btm выполняются только командными процессорами JP Software 4NT/TCC/TCMD и имеют расширенный формат похожий на формат UNIX оболочки bash. Условие выдвигаемое 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:32 20-01-2015
    dodakaedr



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Опять же что-то не понятное... Объясните свой пример, что к чему? С описания ясно что плагин для вызова консольных программ в скрытном режиме, где это в примере?
     
    ExecDos::exec /DISABLEFSR 'md "$LOCALAPPDATA\App\IFX"&&move /y $EXEDIR\App\IFX $LOCALAPPDATA\App\IFX'
     
    ExecDos:: - вызов плагина (с одной : не работает(ошибка));
    exec - функция плагина;
    /DISABLEFSR - откл. переключения на 64-bit систему(наверное не уверен);
    md - ?;
    "$LOCALAPPDATA\App\IFX" - ? (для чего?);
    &&move /y - это понятно;
    $EXEDIR\App\IFX - как бы от куда(правильно?);
    $LOCALAPPDATA\App\IFX - как бы куда(правильно?);
     
    Добавлено:
    И вообще плагин подходит для работы на Windows 7?

    Всего записей: 178 | Зарегистр. 31-01-2014 | Отправлено: 22:21 20-01-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dodakaedr
     
    Вам мелькание окна нужно? Думаю что нет, плагин его уберёт, синтаксис дан в описании плагина, /DISABLEFSR запретим редиректор на х64 системах иначе он мешает, остальное просто и понятно - move не создаст каталог, значит это сделает команда md (mkdir), переменные среды раскроет сам NSIS, с остальным верно. На Win7 это работает, даже под вайном срабатывает, а там эмуляция винды идёт.


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



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

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Там нет, но можно это сделать через выборочную установку как компоненту - в 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 | Отправлено: 04:32 15-03-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    HM NIS создал мне секцию, но если её подставить в мой сценарий, то NSIS спотыкается на !insermarco MUI...

    Цитата:
    Section -AdditionalIcons
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd


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



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

    Цитата:
    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "component description"
    ...
    !insertmacro MUI_FUNCTION_DESCRIPTION_END

    для каждой выбираемой секции. иначе никак. И примерно такой код:

    Цитата:
    var $sem1
     
    Function .onInit
      StrCpy $sem1 0
    FunctionEnd
     
    Section "Desktop" sec04
      StrCpy $sem1 1
    SectionEnd
     
    Section -main
      CreateShortCut "$SMPROGRAMS\<mygroup>\<myprogram>.lnk" "$INSTDIR\<myprogram>..exe"
    а остальное что мастер сгенерил ибо он только заготовку нам предоставляет, а всё прочее уже мы руками пишем....
      StrCmp $sem1 0 +2
      CreateShortCut "$DESKTOP\<myprogram>.>.lnk" "$INSTDIR\<myprogram>..exe"
    SectionEnd
     
    Section -Post
     
      SetAutoClose true
    SectionEnd
     
    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
      ...
      !insertmacro MUI_DESCRIPTION_TEXT ${sec04} "Create Desktop shortcut"
    !insertmacro MUI_FUNCTION_DESCRIPTION_END
     
     


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



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

    Цитата:
    Function: ".onInit"
    Error: Function named ".onInit" already exists.

     потому, что раньше есть

    Цитата:
    Function .onInit
      !insertmacro MUI_LANGDLL_DISPLAY
    FunctionEnd

    И у Вас очепятка в переменной var $sec1, а надо var sec1

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 15:57 15-03-2015 | Исправлено: megane68, 16:07 15-03-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:07 15-03-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Честно говоря я думал, что можно чекбокс сделать под полем выбора компонентов, а у нас получился просто ещё один компонент.
    Ну хоть так. Хотя и хочется его отдельным чекбоксом выделить.
    Идеально было бы на странице завершения установки сделать, там где чекбокс запуска программы.

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 16:09 15-03-2015 | Исправлено: megane68, 16:11 15-03-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:10 15-03-2015
    megane68



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

    Цитата:
    Выбор проще - меньше возни и головной боли.

    Это да... Я ещё в январе начал делать свою страницу выбора типа установки Standart & Portable с двумя радиобатонами, но до сих пор так и не доделал.  
     
    Добавлено:
    Victor_VG
    А вот у меня вопрос, а можно где- то посмотреть сценарии стандартных страниц мастера установки?

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    В MUI и стандартном UI 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 | Отправлено: 18:00 15-03-2015
    Purple Elf



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день
     
    Есть следующий вопрос (наверное глупый). А есть ли к NSIS Wizard какой-нибудь (ну типа как в Inno Setup)?

    Всего записей: 555 | Зарегистр. 13-09-2005 | Отправлено: 10:05 20-03-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Purple Elf
     
    HM NIS, среда Eclips - к ней есть специальный модуль, IDM UEStudio. Первый самый простой, но древний, хотя в большинстве случаев его хватает.

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

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

    Цитата:
    Изучаю потихоньку, но мне как профану сложновато вычленить, что- то нужное из сего чтива. Видимо пока не добрался до этого места.  
    Со сценарием в ANSI проблема, если пользуешься HM NIS Edit. Я уже выше присал, что у меня названия логотипов есть с португальскими и прочими прибамбасами, например буква А с умляутом над буквой. И таких примеров много. HM NIS такой сценарий преобразовывает в ANSI и получается буква А без умляута. Когда сценарий уже готов, вычислить такой файл можно только по ошибкам при компиляции. И вот сидишь и пятьдесят названий после каждой ошибки компиляции правишь.  
    Занятие я бы сказал не для слабонервных. )))  
    ...
     
    Victor_VG  
    Проблемы с кодировками неизлечимы до тех пор, пока все разработчики осей и софта не соберутся вместе и не придут к единому решению. До тех пор либо будут крякозябры в отдельных  продуктах, либо оси будут глючить от твиков и костылей.  
    Поэтому я изначально хочу побороть этот вопрос. На корню так сказать.

    Для нац., алфавитов и их символов вам нужно использовать версию NSIS UNICODE, все остальное будет выводить разношерстные тексты в виде кракозябр..
     

    Цитата:
    Теперь надеюсь могу не обращать внимание на кодировку сценария. Просто после редактирования конвертирую его в юникод и порядок - не надо править названия файлов.

    Юникодная версия сама все форматит перед компиляцией в надлежащий ей вид, если код в Анси..
    Но, стоит помнить что для сложных скриптов с использование всяких функций длл/апи и прочего, потребуются изменения в названиях функций и т.д. и т.п..
     

    Цитата:
    С договорённостью вы правы, но и человеческий фактор не надо скидывать со счетов. Я не раз встречал переводы сделанные с кодировкой ресурсов в ANSI (для Win9x/ME) и с костылями в виде правки большинства кодовых страниц ОС на СР-1251 которые прикручивали к UNICODE ОС платформы WINNT под предлогом "Всё работает! Просто поставьте этот твик реестра и кракозябров не будет!" вместо перевода ресурсов в UNICODE - налицо откровенная лень горе-переводчика и вся ОС стоит на ушах.

    Зачем что-то и где-то править если все давно сделано?!

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 05:04 25-03-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    Есть особенности ОС. Например файловая система NTFS внутри работает с именами в UTF-16 LE, но позволяет ОС писать имена файлов и однобайтных кодировках, а после иди разбирайся что там записано. Сам не раз с этим встречался когда получал имена объектов с ФС в OEM или ANSI, особенно после их записи локализованными программами. Если мы их читаем в той же копии ОС то они обычно читаемы, а коли их считывать к примеру через UNIX драйвер ntfs-3g, будет и чтение и запись, но проблемы с кодировками гарантированы. Приходится ставить локалью системы UTF-8 и тогда кракозябров не будет.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу помощи.  
    В скрипте для конструктора AkelPad я использую для запуска утилит  команду вида:

    Код:
     ExecWait 'hidcon.exe takeown.exe /F "$R8"'

    Я решил не применять hidcon.exe для скрытия консольных окон, а использовать nsExec::Exec. На Win 8.1 инсталлятор после замены стал вылетать с ошибкой. Исследуя логи определил, что прекращение работы инсталлятора происходит при обработке следующего куска скрипта:

    Код:
      loop:
      ${Locate} "$WINDIR\WINSxS\" "/L=F /M=notepad.exe" "WINSxS"
      IfErrors loop 0
    .
    .
    Function WINSxS
      System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2"
      nsExec::Exec 'takeown.exe /F "$R9"'
      nsExec::Exec 'icacls.exe "$R9" /grant $0:F'
      nsExec::Exec 'takeown.exe /F "$R8"'
      nsExec::Exec 'icacls.exe "$R8" /grant $0:F'
     
      ${GetSize} "$WINDIR\" "/M=notepad.exe /S=0K /G=0" $R0 $R2 $R3
      ${GetSize} "$R8" "/M=notepad.exe /S=0K /G=0" $R1 $R2 $R3
      ${If} $R0 == $R1
        StrCpy $Path2 '$Path2,$R8'
      ${Else}
        StrCpy $Path3 '$R8'
      ${EndIf}
      Push $0
    FunctionEnd

    Вылет происходит после команды Push $0. Если вместо  nsExec::Exec использовать команду ExecWait 'hidcon.exe .....' ,  то всё нормально.  
    В чем может быть проблема

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 00:32 10-04-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