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

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

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 23:37 17-09-2013
    Limonica



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет, нуждаюсь в помощи. Задача, завершить все процессы в данный момент использующие библиотеку dll, c помощью tasskill выглядит так:
     
     nsExec::exec '"taskkill.exe" /f /fi "modules eq name.dll"'  
     
    завершить все процессы в данный момент использующие библиотеку dll не используя утилиту taskkill, то есть силами самого NSIS или плагинов.

    Всего записей: 64 | Зарегистр. 02-12-2012 | Отправлено: 11:56 12-10-2013
    Sanch8



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

    Всего записей: 125 | Зарегистр. 29-01-2012 | Отправлено: 13:30 12-10-2013
    Limonica



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sanch8
    KillProcDLL::KillProc "process_name.exe"
     
    В моей задаче не поможет, имена exe занимающих dll неизвесны, нужен чисто альтернатива
     
    '"taskkill.exe" /f /fi "modules eq name.dll"'   на NSIS

    Всего записей: 64 | Зарегистр. 02-12-2012 | Отправлено: 13:34 12-10-2013
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Limonica
     
    Задача решаема плагинами, только чуток иначе - через вызовы System::<WinAPI> по имени DLL ищем её и вызывающий её процесс по его хендлам, а после его уже и прибить тем же NsProcess. С ходу код не напишу - подумать надо, но задача на уровне логики решаема.

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Исходники taskkill http://doxygen.reactos.org/dc/d79/taskkill_8c_source.html

    Всего записей: 64 | Зарегистр. 02-12-2012 | Отправлено: 21:12 12-10-2013
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Limonica
     
    Надо бы поглядеть.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:30 12-10-2013 | Исправлено: Victor_VG, 21:30 12-10-2013
    Dunkeshu

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

    Цитата:
    завершить все процессы в данный момент использующие библиотеку dll
    IMHO, плохая идея, так как приводит к нарушению стабильности системы! Если возникла потребность подмены какой-то программы (не файла с тем же именем), то логично и правильно совершить, например подмену ассоциаций

    Всего записей: 621 | Зарегистр. 25-01-2010 | Отправлено: 01:00 15-10-2013
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dunkeshu
     
    Это один вариант, но более грамотное решение задачи замены DLL указано в MSDN:

    Цитата:
    Путь поиска, используемый Windows для обнаружения библиотеки DLL (http://msdn.microsoft.com/ru-ru/library/7d83bc18.aspx)
     
    Используя механизмы явного и неявного связывания, Windows сначала выполняет поиск "известных библиотек DLL", таких как Kernel32.dll и User32.dll. Затем Windows выполняет поиск библиотек DLL в следующей последовательности:
     
    1)    Каталог, в котором находится исполняемый модуль текущего процесса.
    2)    Текущий каталог.
    3)    Системный каталог Windows. Путь к этому каталогу извлекается с помощью функции GetSystemDirectory.
    4)    Каталог Windows. Путь к этому каталогу извлекается с помощью функции GetWindowsDirectory.
    5)    Каталоги, указанные в переменной среды PATH.
     
    Примечание
     
        Переменная среды LIBPATH не используется.

    при этом допустимо наличие в системе различных версий DLL требуемых приложениями, и единственное ограничение налагаемое на них это их соответствие текущей реализации WinAPI в части импортируемых ими функций (секция .Import модуля) - они должны быть реализованы в данной версии WinAPI т.е. их вызов не должен завершаться ответом nul (функция не реализована и вместо неё стоит заглушка) или Entry_Point_Not_Faund (функция не существует).

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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 | Отправлено: 01:32 15-10-2013 | Исправлено: Victor_VG, 01:33 15-10-2013
    afinik



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Друзья, ситуация такая:
     

    Код:
        
    !include nsDialogs.nsh
    !include LogicLib.nsh
    !include zipdll.nsh
    !include MUI2.nsh
    !include NSISArray.nsh
     
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_LANGUAGE English
     
    Name "Формирование установочных файлов -"
    OutFile testik.exe
     
    XPStyle on
     
    Var Dialog
    Var Label1
    Var Label2
     
    Page custom Test0 Test0Leave
    Page custom Test1 Test1Leave
    Page custom Test2 Test2Leave
    Page instfiles  
     
    Function Test0
        nsDialogs::Create 1018
        
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
        
        ${NSD_CreateLabel} 0 0 100% 12u "Тестирование №0"
        Pop $Label1
        ${NSD_CreateLabel} 0 13u 100% 12u "Задаем количество менеджерских"
        Pop $Label2
        ${NSD_CreateText} 0 25u 100% 13u "1"  
        Pop $R4
        
        nsDialogs::Show
     
    FunctionEnd
     
    Function Test0Leave
        ${NSD_GetText} $R4 $R4
        MessageBox MB_OK "R4=$R4" ;выдает R4=1
    FunctionEnd
     
    Function Test1
        nsDialogs::Create 1018
            
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
        
        nsDialogs::Show
    FunctionEnd
     
    Function Test1Leave
    ${NSD_GetText} $R4 $R4
    FunctionEnd
     
    Function Test2  
     
        nsDialogs::Create 1018
        
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
        
        nsDialogs::Show
     
    FunctionEnd
     
    Function Test2Leave
        ${NSD_GetText} $R4 $R4
        MessageBox MB_OK "R4=$R4" ;выдает R4=
    FunctionEnd
     
    Section  
    SectionEnd
     

    Не знаю как сделать, чтобы переменная выдавала R4=1 в функции Test2Leave
    Писал на другом форуме, вроде никто не знает - не отвечают Вроде задача простая. Пробовал возиться с var /global вставленным перед функциями - не помогло...
    Спасибо.

    Всего записей: 16 | Зарегистр. 21-01-2010 | Отправлено: 12:56 21-10-2013
    Sanch8



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    afinik
    Скрипт бредовый, вы создаёте страницу с пустой переменной в функции Test2.
    Надо делать по аналогии Test0:  

    Код:
    !include nsDialogs.nsh
    !include LogicLib.nsh
    !include zipdll.nsh
    !include MUI2.nsh
    !include NSISArray.nsh
     
    ;!insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_LANGUAGE English
     
    Name "Формирование установочных файлов -"
    OutFile testik.exe
     
    XPStyle on
     
    Var Dialog
    Var Label1
    Var Label2
     
    Page custom Test0 Test0Leave
    Page custom Test1 Test1Leave
    Page custom Test2 Test2Leave
    Page instfiles  
     
    Function Test0
        nsDialogs::Create 1018
         
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
         
        ${NSD_CreateLabel} 0 0 100% 12u "Тестирование №0"
        Pop $Label1
        ${NSD_CreateLabel} 0 13u 100% 12u "Задаем количество менеджерских"
        Pop $Label2
        ${NSD_CreateText} 0 25u 100% 13u "1"  
        Pop $R4
         
        nsDialogs::Show
     
    FunctionEnd
     
    Function Test0Leave
        ${NSD_GetText} $R4 $R4
        MessageBox MB_OK "R4=$R4"
    FunctionEnd
     
    Function Test1
        nsDialogs::Create 1018
             
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
            
            ${NSD_CreateLabel} 0 0 100% 12u "Тестирование №2"
        Pop $Label1
        ${NSD_CreateLabel} 0 13u 100% 12u "Задаем количество менеджерских"
        Pop $Label2
        ${NSD_CreateText} 0 25u 100% 13u "2"  
        Pop $R4
         
        nsDialogs::Show
    FunctionEnd
     
    Function Test1Leave
    ${NSD_GetText} $R4 $R4
    MessageBox MB_OK "R4=$R4"
    FunctionEnd
     
    Function Test2  
     
        nsDialogs::Create 1018
         
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
            
            ${NSD_CreateLabel} 0 0 100% 12u "Тестирование №3"
        Pop $Label1
        ${NSD_CreateLabel} 0 13u 100% 12u "Задаем количество менеджерских"
        Pop $Label2
        ${NSD_CreateText} 0 25u 100% 13u "3"  
        Pop $R4
         
        nsDialogs::Show
     
    FunctionEnd
     
    Function Test2Leave
        ${NSD_GetText} $R4 $R4
        MessageBox MB_OK "R4=$R4"  
    FunctionEnd
     
    Section  
    SectionEnd  


    Всего записей: 125 | Зарегистр. 29-01-2012 | Отправлено: 13:44 21-10-2013 | Исправлено: Sanch8, 13:50 21-10-2013
    afinik



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sanch8, проблема в том, что мой скрипт - это рыба. Как вы - я могу. А вот получить значение $R4 в Test2Leave, заданное в Test0 - вот это не могу.
     
    Добавлено:
    Sanch8
    Спасибо, разобрался. Лишние Gettext поставил...
     

    Код:
     
        
    !include nsDialogs.nsh
    !include LogicLib.nsh
    !include zipdll.nsh
    !include MUI2.nsh
    !include NSISArray.nsh
     
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_LANGUAGE English
     
    Name "Формирование установочных файлов -"
    OutFile testik.exe
     
    XPStyle on
     
    Var Dialog
    Var Label1
    Var Label2
     
    Page custom Test0 Test0Leave
    Page custom Test1 Test1Leave
    Page custom Test2 Test2Leave
    Page instfiles  
     
    Function Test0
        nsDialogs::Create 1018
        
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
        
        ${NSD_CreateLabel} 0 0 100% 12u "Тестирование №0"
        Pop $Label1
        ${NSD_CreateLabel} 0 13u 100% 12u "Задаем количество менеджерских"
        Pop $Label2
        ${NSD_CreateText} 0 25u 100% 13u "1"  
        Pop $9
        
        nsDialogs::Show
     
    FunctionEnd
     
    Function Test0Leave
        ${NSD_GetText} $9 $9
        MessageBox MB_OK "Переменная=$9" ;выдает Переменная=1
    FunctionEnd
     
    Function Test1
        nsDialogs::Create 1018
            
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
        
        nsDialogs::Show
    FunctionEnd
     
    Function Test1Leave
    ;${NSD_GetText} $9 $9
    FunctionEnd
     
    Function Test2  
     
        nsDialogs::Create 1018
        
        Pop $Dialog
        ${If} $Dialog == error
            Abort
        ${EndIf}
        
        nsDialogs::Show
     
    FunctionEnd
     
    Function Test2Leave
        ;${NSD_GetText} $9 $9
        MessageBox MB_OK "Переменная=$9" ;выдает Переменная=
    FunctionEnd
     
    Section  
    SectionEnd
     

    Всего записей: 16 | Зарегистр. 21-01-2010 | Отправлено: 13:50 21-10-2013
    kirillkr



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как проверить, что система x86 или x64?
    Чтобы записать нужные файлы.

    ----------
    http://www.kraeg.ru

    Всего записей: 538 | Зарегистр. 08-03-2006 | Отправлено: 09:53 23-10-2013
    afinik



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kirillkr
    Может быть подойдет вот это? http://nsis.sourceforge.net/Get_Windows_version

    Всего записей: 16 | Зарегистр. 21-01-2010 | Отправлено: 14:18 23-10-2013
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kirillkr
    Нужен обыкновенный штатный include  -   x64.nsh
    Что и как - в сети тонны инфы.

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 15:20 23-10-2013
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kirillkr
     
    А плагин  GetVersion:

    Цитата:
    GetVersion::WindowsPlatformArchitecture
       Pop $R0
     
       Gets the architecture of the installed Windows
       (e.g. 32, 64)

    чем не устраивает?

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:48 23-10-2013
    KloneBADGuY



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

    Цитата:
    Как проверить, что система x86 или x64?

     

    Код:
      !include "x64.nsh"
     
     ${If} ${RunningX64}
       MessageBox MB_OK|MB_ICONINFORMATION "x64"
     ${Else}
       MessageBox MB_OK|MB_ICONINFORMATION "x86"
     ${EndIf}

    Всего записей: 723 | Зарегистр. 13-01-2010 | Отправлено: 19:52 23-10-2013
    kirillkr



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KloneBADGuY
     
    Без инклуда ругалось на ${If} долго не мог понять - спасибо.

    ----------
    http://www.kraeg.ru

    Всего записей: 538 | Зарегистр. 08-03-2006 | Отправлено: 20:32 25-10-2013
    Victor_VG



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

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    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:53 25-10-2013
    Pegalet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет.
    Для NSIS есть плагин NsWeb, который позволяет отображать HTML файлы, как на одном из шагов установки, так и во всплывающем окне.
    Использую этот плагин для отображения баннера в инсталляторе.
    При клике на баннер, открывается internen explorer с адресом куда ведет ссылка в баннере.
    Вопросов 2:
    1. Как заставить открывать новую страницу не в internen explorer, а в браузере, установленный по умолчанию в системе юзера?
    2. Как поменять размеры всплывающего окна, вызываемым ShowWebInPopUp?
     
    Как я понял, без правок исходников NsWeb, оба вопроса не решаемы?
    Может кто-нибудь что-то посоветует подходящее для реализации моей идеи с баннерами?

    Всего записей: 4 | Зарегистр. 09-11-2013 | Отправлено: 18:21 12-12-2013
    Открыть новую тему     Написать ответ в эту тему

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