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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте
    Уже мозг сломал, пока ничего не могу придумать, Может вы что подскажете.
    Есть такая задача.
    Регулярно создается большое количество инсталлеров.   Некоторые могут отличаться сильно по секциям и страницам, а в некоторый отличие только в значении переменных.
    к примеру отличаються только названием программы и описанием
    define PRODUCT_NAME "name test"
    переменные задаются при генерации скрипта через ключ /D.
    Стал вопрос можно ли на этот тип инсталлеров  сделать один типовой а остальные данные брать из вне при установке программы. скажем читать черз ini файл?
     пробовал в функции .onInit вызвать другую функцию
    и прочитать эти данные
    ReadINIStr  $R1 "$TEMP\settings.ini" "PRODUCT_NAME" "Text"
    !undef PRODUCT_NAME
    !define  PRODUCT_NAME $R1  
     
    но это работает не так как надо
    значение переменной вроде заменяться
    MessageBox MB_OK|MB_ICONSTOP "${PRODUCT_NAME}"
    выводит именно то значение что прописано в settings.ini  
    но на страницах где должно отображаться PRODUCT_NAME отображается 0.
    реально ли выполнить задачу под эти требования?
    если да буду раз советам
    с ув. Ярослав

    Всего записей: 9 | Зарегистр. 31-05-2006 | Отправлено: 12:12 25-04-2011
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yyv
     
    Можно, через подключение include. Сам такой фортель вечно проделываю и плюс к тому макросы в либах. Я решаю задачу таким приёмом.

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

    Всего записей: 33231 | Зарегистр. 31-07-2002 | Отправлено: 15:02 25-04-2011
    yyv

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

    Цитата:
    Можно, через подключение include

    а как заинклюдить файл которого еще нету?
    я хотел через include, но ничего не вышло
    в начале .onInit  вызываю функцию
        call test
    в test такой код  

    Код:
     ${GetOptions} $CMDLINE "/G=" $0
     ${IfNot}  $0 == ""
     
         !include    $TEMP\settings.nsh
     ${EndIf}

    те подразумевалось что инсталлер будет запускаться с командной строки с параметром
    и если он не пустой то подключить файл из темповой папки пользователя
    но ведь компиляция происходит не на машине пользователя
    и как следствие ошибка

    Код:
    !include: could not find: "$TEMP\settings.nsh"

    вопрос стоит в том можем ли мы вносить изменения в уже созданный инсталлер?
     
     

    Всего записей: 9 | Зарегистр. 31-05-2006 | Отправлено: 15:50 25-04-2011
    kot280379



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    yyv
    Как один многочисленных вариантов - прост и достаточно эффективен
    http://forum.oszone.net/post-1665405-1115.html

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 18:39 25-04-2011 | Исправлено: kot280379, 18:41 25-04-2011
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yyv
     
    Инклюды - это механизм времени компиляции, а вот после - тут надо специальный парсер писать, хотя можно что нибудь и придумать для этого. Просто с таким парсером надо садится с нуля - идея есть, это хорошо, но надо описать его формальный входной язык, а после алгоритмические процедуры для реализации. Хотя это и возможно сделать средствами самого NSIS, но это по большому счёту самостоятельная разработка, что потребует какого-то свободного времени только на неё. А я сейчас во времени ограничен.

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

    Всего записей: 33231 | Зарегистр. 31-07-2002 | Отправлено: 03:43 26-04-2011
    sawerx



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

    Всего записей: 61 | Зарегистр. 21-11-2010 | Отправлено: 18:54 31-05-2011 | Исправлено: sawerx, 16:47 10-06-2011
    SamLab



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NSIS 2.47 Preview (Build 10.06.2011) rev6153 (strlen 8192) with UPX 3.08 Dev
    http://sourceforge.net/projects/remotemonitor/files/nsis-10-Jun-2011-rev6153-strlen-8192-setup.exe

    Цитата:
    Allow multiple !finalize commands
    -------------------------------
    M : /NSIS/trunk/Source/build.cpp  
    M : /NSIS/trunk/Source/build.h  
    M : /NSIS/trunk/Source/script.cpp  
     


    ----------
    SamLab.ws - Программы и русификаторы + SamForum.org - Софтовый форум + Мой Телеграм

    Всего записей: 6597 | Зарегистр. 15-07-2004 | Отправлено: 03:25 11-06-2011 | Исправлено: SamLab, 03:25 11-06-2011
    alroy

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте может кто сталкивался с такой задачей нужно положить файл в папку автозагрузки например пользователя петр а делать я это буду из под другого пользователя как быть может кто уже решал такие задачи??  

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 11:21 07-07-2011
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alroy
     
    А HKU зачем? Отыскиваете юзера по его ID и читаете Shell там и пути к каталогам будут.  Только User ID надо точный знать, либо просто класть поиском по имени через LOCATION. Этот макрос отыщет указанное.

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

    Всего записей: 33231 | Зарегистр. 31-07-2002 | Отправлено: 12:55 07-07-2011
    kot280379



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

    Цитата:
    Только User ID надо точный знать

    себе как то делал так, определение SID пользователя, может кому и сгодится

    Код:
    !include "MUI2.nsh"
     
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_LANGUAGE "Russian"
     
    ShowInstDetails show
    OutFile Test.exe
    Caption "GetUserSID"
     
    !define GetUserSID "!insertmacro CallGetUserSID"
    !macro CallGetUserSID SID
        System::Store S
        System::Call "kernel32::GetComputerName(t.r0, *i1024 r4)i.r2"
        System::Call "advapi32::GetUserName(t.r1, *i1024 r5)i.r3"
        ${Unless} $2 = 0
        ${AndUnless} $3 = 0
               System::Call "*(&t1024)i.r5"
               System::Call "advapi32::LookupAccountName(t'\\$0',tr1,ir5,*i1024,t.r4,*i1024,*i.r0)i.r2"
               ${Unless} $2 = 0
                      System::Call "advapi32::ConvertSidToStringSid(ir5,*t.s)"
               ${Else}
                      Push error
               ${EndUnless}
        ${Else}
               Push error
        ${EndUnless}
        System::Store L
        Pop "${SID}"
    !macroend
     
    Section
      ${GetUserSID} $R5
      MessageBox MB_ICONINFORMATION|MB_OK "$R5" IDOK
    SectionEnd
     

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 20:21 09-07-2011 | Исправлено: kot280379, 20:43 09-07-2011
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kot280379
     
    Если не возражаете, то я бы попросил вашего разрешения добавить это код в мою библиотеку ProcLib - там я собрал написанные мной процедуру диагностики и автоматики, и код определения SID мок бы здорово облегчить людям жизнь. ну и понятно, что Вы автоматически становитесь конрибуитором а если будем либу вдвоём развивать и полноправным соавтором.

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

    Всего записей: 33231 | Зарегистр. 31-07-2002 | Отправлено: 06:10 11-07-2011
    kot280379



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Victor_VG
    я не возражаю, и меня есть готовая либа по процессам (метод CreateToolhelp32Snapshot) которая по функционалу перекрывет возможности существующих плагинов  для работы с процессами и прекрасно дружит с юникодом. либа по работе с пакетами msi - вытягивает из пакета код продукта и имя, т.е таблицу Property, рекурсивный перебор  ключей и значение параметров реестра и удаление ключей по маске и т.д Если интересуют мои наработки - обращайтесь в личку.

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 00:07 12-07-2011
    sawerx



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Шикарный макрос, беру, спасибо!

    Всего записей: 61 | Зарегистр. 21-11-2010 | Отправлено: 18:02 13-07-2011
    doctor_allcome



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто нибудь знает как в NSIS работать с CAB файлами. Есть CabDLL plug-in, но как им пользоваться не понятно.
     
    Добавлено:
    И еще есть один вопрос к знатокам. Есть два файла созданные в NSIS, один запускается из другого. Как сделать так что-бы второй запускаемый файл автоматически считывал путь установки первого? Заранее благодарен

    Всего записей: 14 | Зарегистр. 09-08-2011 | Отправлено: 15:45 09-08-2011
    kot280379



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

    Цитата:
    Кто нибудь знает как в NSIS работать с CAB файлами. Есть CabDLL plug-in, но как им пользоваться не понятно

    Если, честно фигня это, а не плагин... а описание еще хуже
    Если нужно распаковать архив cab...
    CabDLL::CabExtractAll "Путь к архиву.cab" "Путь,папка куда распаковать"
    Причем, папка распаковки архива должна существовать.

    Цитата:
    Как сделать так что-бы второй запускаемый файл автоматически считывал путь установки первого?  

    Элементарно, если свои инсталеры, то первый инсталер пишет путь установки в реестр, второй инсталер считывает путь первого из реестра, если чужой - то ищем следы в реестре - т.е точнее, где наследили

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 17:33 09-08-2011 | Исправлено: kot280379, 17:35 09-08-2011
    doctor_allcome



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kot280379 огромное спасибо.  
     

    Цитата:
    Если, честно фигня это, а не плагин... а описание еще хуже

    А как еще заставить NSIS создавать дистрибутивы больше 2 Гб? Либо с помощью CAB, либо созданием нескольких exe в NSIS и их последовательным запуском одного из другого.  
    Обидно что нет такой возможности как в INNO, встроенными средствами делить дистрибутив на части  

    Всего записей: 14 | Зарегистр. 09-08-2011 | Отправлено: 22:37 09-08-2011
    kot280379



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

    Цитата:
    Либо с помощью CAB

    Возьмите лучше http://nsis.sourceforge.net/Nsis7z_plug-in
    или распаковка arc архивов NSIS
    del

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 23:34 09-08-2011 | Исправлено: kot280379, 19:32 11-08-2011
    doctor_allcome



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kot280379 огромное спасибо за подсказку. NSISArc plug-in не очень понравился. А вот 7z самое то что надо.
     
     

    Всего записей: 14 | Зарегистр. 09-08-2011 | Отправлено: 15:58 10-08-2011
    doctor_allcome



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи! Кто нибудь знает как в MessageBox язык интерфейса сделать отличным от системного (т.е. если даже я в MUI_LANGUAGE ставлю "English" имена кнопок в MessageBox на русском).

    Всего записей: 14 | Зарегистр. 09-08-2011 | Отправлено: 14:31 11-08-2011 | Исправлено: doctor_allcome, 18:53 11-08-2011
    kot280379



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

    Цитата:
    Товарищи! Кто нибудь знает как в MessageBox язык интерфейса сделать отличным от системного

    Это врядли, MessageBox  - вызывается из user32.dll -> следовательно и язык кнопок системный, хотя можно наверно обходными путями делать такое - не пробывал...
    Попробуйте messagebox v0.98 - почему то, исчез из офф.сайта, так что выложил из своих запасов

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 19:31 11-08-2011
    Открыть новую тему     Написать ответ в эту тему

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