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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak

    Цитата:
    Да там ничего не нужно ловить.  

    Ага, а все процессы в системе один единственный PID используют. Неверно, и потому нужно найти/знать желаемый.

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

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
    Батником извне управлять, и зачем это извращенство. Может проще изнутри?

    Всего записей: 1645 | Зарегистр. 02-10-2014 | Отправлено: 02:47 03-06-2015
    820815



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

    Цитата:
    Видимо придётся autoit-ом сделать

    Зачем тогда мучиться с NSIS? Ради экономии нескольких сотен KB?
     

    Цитата:
    Нужно упаковать пару файлов и запустить в том же консольном окне

    А до этого то что в этом окне происходит?

    Всего записей: 645 | Зарегистр. 18-12-2006 | Отправлено: 04:02 03-06-2015 | Исправлено: 820815, 04:17 03-06-2015
    Victor_VG



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

    Цитата:
    Нужно упаковать пару файлов и запустить в том же консольном окне  

    Эта задача откуда? Я не отыскал её на последних страницах. Но, по идее решается так -  
    через WinAPI получаем хендл нужного окна, по нему отыскиваем PID породившего его процесса и ему передаём команды, наблюдаем результат. Тут да, NSIS вообще не нужен т.к. задача решается стандартными языками программирования, к примеру ассемблером, C/C++/C#, Lua, PL/1, но не средствами инсталляторов.

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



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

    Цитата:
    Ради экономии нескольких сотен KB?  

    Да.  

    Цитата:
    А до этого то что в этом окне происходит?

    Ничего. Открытое окно CMD.
    Victor_VG

    Цитата:
    Эта задача откуда?

    Это я писал выше..

    Цитата:
    задача решается стандартными языками программирования, к примеру ассемблером, C/C++/C#, Lua, PL/1, но не средствами инсталляторов.

    В главном exe  должны лежать несколько консольных exe и спецскриптов. При вызове главного exe с параметрами - происходит запуск консольных различных exe с другими параметрами.
    Подобную задачу обычно решал с помощью nsis или 7sfx, но в данном случае это не катит, так как консольное exe должно показать результат в стандартный поток вывода и главный exe звершает работу и его можно вызвать с другими параметрами. А читать и перенаправлять вывод нежелательно.
    Может сумбурно написал, но я не программер. Для уменьшения размера сейчас пытаюсь использовать PureBasic. Осталось понять как всунуть другие exe в его exe-шник... Теоретически это возможно видимо.  
     
    Добавлено:
    В PureBasic всё оказалось просто. Проблема решена.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 13:17 03-06-2015 | Исправлено: dialmak, 13:19 03-06-2015
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
     
    Да, тут стоит подумать. С наскоку идей нет.

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



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

    Цитата:
    С наскоку идей нет

    Можно использовать любой язык. Я использовал pureBaic. Exe-шники всунул в ресурсы(код ниже) и скомпилил как консольное приложение.

    Код:
    DataSection
    DN:  
    IncludeBinary "my.exe"
    End_DN:
    EndDataSection
     
    CreateFile(0, "MY.EXE")
    WriteData(0, ?DN, ?End_DN - ?DN)
    CloseFile(0)

     
    Далее можно запускать MY.EXE через RunProgram.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 15:05 03-06-2015
    Victor_VG



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

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:07 03-06-2015
    dialmak



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

    Цитата:
    Дык вопрос не в языке программирования, а в том как именно должен работать алгоритм для решения данной задачи с минимальными затратами.

    Ну так и я об этом же. Незнаком с C/C++, поэтому выбрал PureBasic.  

    Цитата:
    Можно использовать любой язык.

    Полезное, что вынес из ситуации - на NSIS подобную задачу решить тяжело.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 17:29 03-06-2015
    Victor_VG



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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех приветствую!
    Решил сделать в установщике закрытие программы при обновлении. Если программа запущена, она должна закрыться, после чего происходит обновление.
    Использую:
    ExecWait "$INSTDIR\tv.exe -close"
    но программа выдаёт ошибку на процесс одной библиотеки DLL. Видимо он не успевает завершиться до обновления.
       
    Как установить таймер после закрытия tv.exe, а лучше дождаться завершения процесса DLL?

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    А зачем так сложно!? ProcLib.nsh в ./Include, ставите плагин NsProcess и пользуйтесь из неё любым макросом ${TermProc} _PROCNAME _TXTFILE или ${TrmPrcc} _ProcName которые всё сделают и системную диагностику вдобавок расшифруют.
     


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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Да, я читал в хелпе про этот плагин.
    Дело в том, что программа портативная и не хотелось бы убивать процесс этой DLL-ки, потому как он должен выключаться именно при закрытии программы tv.exe.
    В данном случае, если три раза прописать ExecWait '"$INSTDIR\tv.exe" -close', то процесс успевает кильнуться, поэтому хотелось бы именно назначить время ожидания после закрытия tv.exe.

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    В общем раз никаких больше предложений не поступило, то пришлось воспользоваться таки функцией ожидания завершения процесса из nsProcess"
    ${ProcessWait} "tv.exe" "5000" $0  
     
    Спасибо!

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Вызова ${ProcessWait} в NsProcess нет, есть только ${nsProcess::CloseProcess} ждущий три секунды до выдачи KillProcess(). И с DLL всё не так просто - сама по себе она не может быть загружена и её зовёт ЕХЕ, но бывает что из-за внутренней ошибки может не выгружаться, тогда можем попробовать так:
     
    m1:
    ${nsProcess::CloseProcess} TV.exe $R9
    StrCmp $R9 602 +1
    ${nsProcess::FindProcess} TV.exe $R9
    StrCmp $R9 0 m1

     
    вот такая логика даст команду TV.exe завершится, и если это не произойдёт будет повторять её до бесконечности пока не закроет процесс.

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Прошу прощения, это ProcessFunc.nsh из хелпа NSIS.
    Мне как то больше подошло.
     
    Добавлено:

    Цитата:
    И с DLL всё не так просто - сама по себе она не может быть загружена и её зовёт ЕХЕ, но бывает что из-за внутренней ошибки может не выгружаться, тогда можем попробовать так:  

    Вот тут как раз мне этого не нужно, ибо если ошибка при закрытии EXE, то это должно лечиться в дистрибутиве (tv.exe), а не принудительным киллянием процесса.
    Именно поэтому была нужна функция ожидания завершения процесса.

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Я это вообще отыскал только на PortableApps.com, но ни в сорцах 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 | Отправлено: 17:38 14-07-2015
    megane68



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Так он прям из хелпа скачивается жмаком по Загрузить.
    http://i60.fastpic.ru/big/2015/0714/48/586cc37a2e10e198ddfc3f68a06c5c48.png

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    megane68
     
    Это не оригинальная справка 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:23 14-07-2015
    megane68



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

    Всего записей: 485 | Зарегистр. 14-09-2008 | Отправлено: 19:04 14-07-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