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

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



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

    Цитата:
    программа использует ini-файл, который создается при первом запуске, с параметрами по умолчанию. По умолчанию всегда стоит английский. Нужно в скрипте реализовать или, допустим, копирование ini с нужными настройками, может даже его создание установщиком, но только если выбран определенный язык.

    Т.е. сама программа не затрагивается, а надо только подправить установку (конкретно файл INI) , чтобы установился русский язык ?
     
    Если так, то , как вариант, можно запустить скрипт, который в свою очередь запускает твою программу, затем детектирует создание INI, а после его обнаружения быстренько правит нужный языковой параметр в INI.  
    Конечно, если механизм установки этой программы, позволит так сделать...  
    В идеале, заморозить бы процесс установки проги, на время манипуляций с INI, но возможно ли это в данной ситуации...

     
    Есть конечно спец утиль, типа Command Line Process Viewer/Killer/Suspender for Windows NT/2000/XP  ,
    в котором можно приостановить процесс установки на время (suspend Process), командой : "Process.exe -s setup.exe"
    Но я не пробовал этого в NSIS.
    Есть ещё интересная утилитка : http://www.windows7download.com/win7-free-process-freezer/drabnwda.html
    Возможно поможет : http://www.codeproject.com/Articles/2964/Win32-process-suspend-resume-tool    или
    http://nsis.sourceforge.net/Nopey_-_system_setting_tool

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 16:08 08-08-2012 | Исправлено: MKN, 16:31 08-08-2012
    Victor_VG



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

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:37 08-08-2012
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Обработать INI - оно понятно как. Но позволит ли это установщик проги ? Доступ к INI файлу может быть заблокирован на время установки Или, пока скрипт NSIS шевелится, прога уже пропишет языковые параметры раньше, чем будут внесены изменения в INI... Потому и надёжнее - заморозить процесс установки проги на время обработки INI.
     
    PS А $LANGUAGE вообще может оказаться не при делах, скрипту ведь придётся работать с посторонним INI. И мало ли какой ещё язык захочет пользователь и мало ли какая у него окажется локаль Винды...
     
    А выбор необходимого языка, куда уж проще организовать через выбор компонентов перед началом установки. (для данного случая)

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 16:43 08-08-2012 | Исправлено: MKN, 16:50 08-08-2012
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
     
    Да не, это проще - я уже с Far TE3 имел бяку - Far.exe запущен - не переписался - ругань со стороны плагинов на старый Far. Задачка решается на раз и даже без два и танцев с бубном. Подобный же парсер и в ProcLib.nsh есть, и там даже свою ругань добавлять нет нужды - уже готовая есть.
     
    А с локалью и того проще - а кто мне помешает поставить в INI язык путём расшифровки текущего значения $LANGUGE? Только придётся написать кучу StrCmp $LANGUAGE <lbl> и проваливаться вниз по мере их не выполнения поставив в конце дефолтный язык. И насчёт блокировки ты не совсем прав - если файл заблокирован для исключения потери данных лучше прервать установку, это грамотно, а иначе - риск может оказаться и 100%, и только для исключительных случаев использовать перезапись в режиме onReboot.
     
     


    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:33 08-08-2012 | Исправлено: Victor_VG, 17:42 08-08-2012
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Процесс нельзя завершать. Процесс надо приостановить, заморозить на время и возобновить вновь без потери данных.

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 18:01 08-08-2012 | Исправлено: MKN, 18:07 08-08-2012
    Tokc

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем спасибо, еще раз.
     
    Использовал функцию сравнения и запись в ини. Всего две строки для языка, а программа уже считывает записанную настройку из ини, остальные параметры записываются программой при запуске.
     
    Продолжаю дальнейшую модификацию установщика.

    Всего записей: 12 | Зарегистр. 09-02-2006 | Отправлено: 18:14 08-08-2012
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tokc
    Ну вот и отлично.  Жаль , что не удалось поэксперементировать с заморозкой процесса.  
    Интересная штука. Но видно прога твоя не затейливая, ей и простого редактирования INI достаточно.

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 18:23 08-08-2012
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
     
    Приостановить процесс ты не сумеешь - гранаты не той системы. Это возможно только на уровне низкоуровневых вызовов ядра либо в отладчике, а они от простого пользователя убраны куда подальше, и даже прав админа для доступа к ним мало - в их ACL стоит уровень доступа Local System  
     
    А что до "приостановить" то, такое можно сделать только с демоном, и то не всяким через вызовы SCM, раз, или используя команды net stop/pause/start - два. И ещё после того, как ты возобновил процесс из стояния "Пауза" далеко не всякий процесс заново перепроверяет свои конфиги на предмет поиска возможных изменений и принятия их "на лету". "Заморозка" как механизм это простое копирование дампа всей области ОЗУ процесса вместе с его MSW (Machine Stamens Word), адресом текущей машинной команды (точка приостановки выполнения) и регистрами ЦП на внешнюю память с последующим освобождением занимаемого им ОЗУ и пометкой в таблицах задач ОС "состояние исполнения - пауза", а при его возобновлении копирование их же обратно и передача управления на точку приостановки выполнения и снятие флага "Пауза" в таблицах планировщика задач.
     
    Так, что это не так-то просто как кажется на первый взгляд....

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

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

    Всего записей: 50 | Зарегистр. 26-09-2012 | Отправлено: 20:27 26-09-2012 | Исправлено: raer000r, 20:29 26-09-2012
    kot280379



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

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 14:22 14-10-2012 | Исправлено: kot280379, 11:25 16-10-2012
    raer000r

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kot280379
    спасибо, разобрался.  
    можно ли каждой секции назначить папку по молчанию? еще я испльзую команду addsize и у меня не получается задать каждой секции СВОЙ размер. общий получается

    Всего записей: 50 | Зарегистр. 26-09-2012 | Отправлено: 00:28 15-10-2012
    kot280379



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

    Цитата:
    можно ли каждой секции назначить папку по молчанию?

    SetOutPath "папка"
    это команда назначит папку установки...
    прописываешь в каждой секции.. т.е столько раз, сколько необходимо...
    контролируешь папку установки (для отладки) переменной:

    Код:
    MessageBox MB_OK "$OUTDIR" IDOK

    в различных частях кода...

    Цитата:
    еще я испльзую команду addsize

    я ее не использую... не нужна мне по задачам...

    Цитата:
    задать каждой секции СВОЙ размер

    nsis "сам рассчитывает" размер устанавливаемых файлов из странички компонентов (секции)
    и складывает общий размер устанавливаемых файлов из отмеченных секций...
    т.е в скрипте в каждой из секций прописываешь файлы...

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 01:07 15-10-2012
    raer000r

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

    Цитата:
    SetOutPath "папка"  

    SetOutPath "$INSTDIR" вот так у меня. иначе папка по умолчанию будет использоваться всегда, даже если выбрать другую для установки. Или я не прав?
    Цитата:
    nsis "сам рассчитывает" размер устанавливаемых файлов из странички компонентов (секции)  

    Очевидно, на стандартной странице выбора компонентов. А у меня самодельная страница. Логический вес - 4 мегабайта. Хоть первый флажок, хоть второй - все по 4. На самом деле  
    первый - 1,92м второй - 2,16.

    Всего записей: 50 | Зарегистр. 26-09-2012 | Отправлено: 13:21 15-10-2012
    kot280379



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

    Цитата:
    А у меня самодельная страница

    делаете CreateLabel c нужной надписью, при переключении изменяете содержимое надписи...
    событием ${NSD_OnClick} для каждого радиобутона своя функция изменения надписи.
    ---
    Addsize - только для стандартной странички компонентов.

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 11:22 16-10-2012 | Исправлено: kot280379, 11:28 16-10-2012
    raer000r

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kot280379
    ясна. А если я решил реализовать тихую установку и у меня самодельная страница, то тоже надо дополнительные команды вписывать? а то чет у меня на работает.  
    и хотелось бы узнать как свои ключи для тихой установки сделать. например /S - для программа 1 (1 флажок), /I - для программа 2 (второй флажок). видал такое

    Всего записей: 50 | Зарегистр. 26-09-2012 | Отправлено: 13:49 16-10-2012
    qqwwrr

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

     
    такого сайта давно нет вживых...

    Всего записей: 407 | Зарегистр. 16-10-2007 | Отправлено: 16:27 16-10-2012
    raer000r

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

    Всего записей: 50 | Зарегистр. 26-09-2012 | Отправлено: 17:09 16-10-2012
    kot280379



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

    Цитата:
    А если я решил реализовать тихую установку и у меня самодельная страница

    самопалки в тихую и с ключами не работают...
    но можно заставить и очень просто... добавьте выше выложенный код кусок скрипта:
    пример
    т.е при запуске /S /proga=2 будет "нажат" 2 радиобутон... ну далее ясно...

    Всего записей: 185 | Зарегистр. 01-11-2009 | Отправлено: 22:35 16-10-2012 | Исправлено: kot280379, 22:38 16-10-2012
    raer000r

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

    Цитата:
    самопалки в тихую и с ключами не работают

    В каком смысле??
     читать
    Здесь какая то черная магия, недоступная простолюдинам? очень жалко
    А что ты понимаешь под самопалкой?
     
    ааа. заработала. только проблемка. я указал в инсталляторе прописать кучку значений в реестре и Зделать ярлыки (ага, я сделал еще пару штук чекбоксов)
    Чувствую это все надо прописать в функцию тихой установки? что же он такой тупенький.
     
     
    иеще. пришлось .onInit перенести ниже переменных Var. иначе фн. не может их найти. а нельзя другую функцию использовать а onInit оставить выше?

    Всего записей: 50 | Зарегистр. 26-09-2012 | Отправлено: 23:19 16-10-2012 | Исправлено: raer000r, 23:59 16-10-2012
    kot280379



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

    Цитата:
    .onInit

    в любом удобном месте... в этой функции очень удобна

    Цитата:
    Чувствую это все надо прописать в функцию тихой установки?

    конечно! только это не функция тихой установки...а на принципе флага тихой установки
    смысл здесь - меняем значения статусов радиобатонов,  
    как будто на  кастомной страничке мышкой жмякаем...
    далее в секциях простоя проверка:

    Код:
    Section
         ${If} $RadioButton1_State == 1 ;если радиобатон 1 отмечен (1 глобальное условие)
     
             ;пишем сюда все нужные команды (местные условия по чекбоксам) и т.д
             ;радибутон 1 отмечен!
     
         ${ElseIf} $RadioButton2_State == 1 ;если радиобатон 2 отмечен (2 глобальное условие)
     
            ;пишем сюда все нужные команды (местные условия по чекбоксам) и т.д
            ;радибутон 2 отмечен!
         ${EndIf}
    SectionEnd

    Подсказку я вам дал офигительную... дерзайте

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

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