Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2.

Ответить
Настройки темы
.: NSIS - все вопросы :. часть 2.

Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: kotkovets
Дата: 07-06-2020
Описание: NSIS 3.05


Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения.


Описание:
читать дальше »
NSIS (Nullsoft Scriptable Install System) - профессиональная система для создания инсталляторов в среде Windows с октрытым исходным кодом. При своем малом размере система очень гибкая, и при с широкими возможностями. Генерируемый ею инсталлятор также имеет очень маленький размер и идеально подходит для распространения продукта через Интернет.


Текущая версия: NSIS 3.05 от 15 декабря 2019 года
Скачать | Архив сборок версии

Первая часть этой темы
Скачать первую часть этой темы одним архивом

ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов:
Справочник по NSIS - создан силами нашего сообщества.
Руководство пользователя. Перевод – Поляков А.В, зеркало

Документация

Утилиты разработчика
Расширение функциональности

Примеры скриптов на нашем форуме
Скрипт NSIS для перепаковки AIMP2+Сборки
Тема для Notepad++(пример парсинга XML)

Достоинства
читать дальше »


◦ Очень маленький размер установочного блока (около 34 Кбайт)
◦ zlib, bzip2 и LZMA-сжатие
◦ Гибкая система скриптов (спецально разработанная для инсталляторов)
◦ Поддержка многоязычности, точнее 53 языка, есть возможность ввода нового языка
◦ Поддержка плагинов
◦ Скрипт Препроцессор
◦ Создание Web-инсталляторов


Ещё немного полезной информации:
читать дальше »

▫ История создания установщика

NSIS создан как альтернатива InstallShield, предназначенного для коммерческих продуктов.

NSIS был создан для распространения Winamp. Он базируется на предыдущем продукте Nullsoft — PiMP (plugin Mini Packager), иначе известным как SuperPiMP. После версии 2.0a0, проект был перемещён на SourceForge.net, где к работе над ним присоединились и сторонние разработчики. NSIS 2.0 был выпущен в свет 2 года спустя.

NSIS версии 1 был очень похож на классический Windows Installer, но он был более управлемым с помощью скриптов и поддерживал другие форматы сжатия. NSIS версии 2 поддерживает новый графический интерфейс пользователя, LZMA-сжатие, многоязычность и имеет хорошую систему плагинов.

Версия 2.01 была первой версией, поддерживающей компиляцию на любой из POSIX-платформ. Это позволило создавать Windows-инсталляторы на GNU/Linux и FreeBSD без использования эмулятора Wine. На данный момент поддерживается компиляция только для Windows.

▫ Описание

Компилятор NSIS — программа makensis — компилирует скрипты в исполняемый код. Каждая строчка скрипта содержит одну команду. Пример:
Код: Выделить весь код
 # Пример скрипта
 Name "Example1"
 OutFile "example1.exe"
 InstallDir "$PROGRAMFILES\Example1"
 Page Directory
 Page InstFiles
 Section
   SetOutPath $INSTDIR
   File ..\makensis.exe
 SectionEnd

Modern User Interface

В версии 2.0 был введён новый графический интерфейс пользователя, названный Modern UI (MUI). MUI очень похож на интерфейс мастеров, он поддерживает splash screen, выбора языка, выбор компонентов для установки и более широкие возможности настройки по сравнению со своим предшественником. Пример:
Код: Выделить весь код
 # Пример скрипта с Modern UI
 !include MUI.nsh
 Name "Example 2"
 OutFile Example2.exe
 !insertmacro MUI_PAGE_WELCOME
 !insertmacro MUI_PAGE_LICENSE "license.rtf"
 !insertmacro MUI_PAGE_DIRECTORY
 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_PAGE_FINISH
 !insertmacro MUI_LANGUAGE "English"
 !insertmacro MUI_LANGUAGE "German"
 !insertmacro MUI_LANGUAGE "French"
 Section "Extract makensis"
  SetOutPath $INSTDIR
  File ..\makensis.exe
 SectionEnd
NSIS может быть расширен при помощи плагинов, которые могут быть написаны на C++, Си, и Delphi. Плагины могут быть использованы для улучшения функциональности и интерфейса инсталлятора. Плагины могут быть вызваны в любой части кода NSIS скрипта.

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

▫ Программы, использующие NSIS


◦ Антивирус Касперского
◦ Qip
◦ 3DNA Desktop
◦ 7-Zip
◦ ATI Display Driver
◦ CDex
◦ Dev-C++
◦ DivX
◦ eMule FileZilla
◦ Google Picasa
◦ Google Talk
◦ Intel C (компилятор)
◦ IrfanView
◦ LightAllow
◦ LyX
◦ Miranda IM Mozilla Firefox 2.0
◦ NASA World Wind
◦ Notepad++
◦ OpenOffice.org для Windows
◦ Pidgin
◦ VLC Player
◦ Winamp

▫ Чем я могу распаковать инсталлятор, созданный в NSIS?

В настоящее время инсталляторы NSIS не могут быть полностью декомпилированы. Сам инсталлятор не содержит в себе никаких функций для того, чтобы извлечь сценарий и/или файлы без инсталляции. Это - выбор разработчика, доступны ли исходный текст и/или файлы для инсталлятора для публики или нет. Есть, однако, внешние инструментальные средства, которые позволяют это сделать. 7-zip поддерживает частичную распаковку NSIS инсталляторов с алгоритмом сжатия lzma или bzip. Так же существует мульти-архивный плагин для TotalCommander.
Небольшая заметка для разработчиков: используйте DCryptDll, если хотите скрыть некоторые файлы в вашей инсталляции.


-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 09-12-2012

 

Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


Цитата K.A.V.:
Не, там фишка с ключем /NOUNLOAD /ASYNC, если их указать, то плаг запустить процесс параллельно установщику »
Цитата K.A.V.:
упёрто отказывается читать в файле справки, в котором ясно написано - второй параметр в команде FindWindow - это класс окна, а он там указывает имя окна »
ну если это фишка...
значит не судьба Vincent7

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Отправлено: 22:45, 01-12-2013 | #821



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 96
Благодарности: 1

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
section "f"
ExecDos::exec /NOUNLOAD /ASYNC /DETAILED '"$SYSDIR\cmd.exe" /c $EXEDIR\sisInstall.exe extractAll I:\sku.sis D:\h'
sleep 3000
FindWindow $0 "ConsoleWindowClass" "$SYSDIR\cmd.exe"
IsWindow $0 +2 0
MessageBox MB_OK|MB_ICONSTOP "not found" idok
System::Call 'user32::GetWindowThreadProcessId(ir0, *l.r0)'
System::Call 'kernel32::AttachConsole(ir0)i.r0'
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
FileWrite $0 "Test"
sectionend
теперь все правильно, вроде как находит окно, но по идее слово test должно появится в nsisном окне установки файлов, а оно не появляется. и установщик переходит в статус 'выполнено'

Отправлено: 01:13, 02-12-2013 | #822


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Цитата Vincent7:
но по идее слово test должно появится в nsisном окне установки файлов »
это с какого такого такого такого...оно должно там появиться, если вы отправляете текст в консоль, а не напрямую в NSIS элемент?

Вы хотите что сделать, чтобы запустить консоль, отправить туда текст, а потом чтобы ваше консольное приложение его прочитало и отобразило в NSIS окне?

Пожалуй, я воздержусь в дальнейшем от ответов на ваши сообщения, сидите тут пудрите нам мозги откровенно говоря, нет чтобы четко и ясно разъснить, что вы хотите сделать

Цитата Vincent7:
и установщик переходит в статус 'выполнено' »
Конечно переходит, вы же сами просили запустить консольное приложение параллельно установщику

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]


Отправлено: 01:31, 02-12-2013 | #823


Пользователь


Сообщения: 96
Благодарности: 1

Профиль | Отправить PM | Цитировать


плагин execDos с параметром /DETAILED отправляет содержимое командной сроки окну установщика

Отправлено: 01:41, 02-12-2013 | #824


Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


Vincent7, скажу просто: не тупите!
а то цирк уехал, а клоуны остались..

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Отправлено: 02:18, 02-12-2013 | #825

MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Вызов диалогового окна выбора файлов

Пример для '*.nsi;*.nsh'

Код: Выделить весь код
Caption "Диалоговоое окно выбора файлов"
OutFile "OpenFile_Test.exe"
SilentInstall silent

!define OFN_READONLY                 0x00000001
!define OFN_OVERWRITEPROMPT          0x00000002
!define OFN_HIDEREADONLY             0x00000004
!define OFN_NOCHANGEDIR              0x00000008
!define OFN_SHOWHELP                 0x00000010
!define OFN_ENABLEHOOK               0x00000020
!define OFN_ENABLETEMPLATE           0x00000040
!define OFN_ENABLETEMPLATEHANDLE     0x00000080
!define OFN_NOVALIDATE               0x00000100
!define OFN_ALLOWMULTISELECT         0x00000200
!define OFN_EXTENSIONDIFFERENT       0x00000400
!define OFN_PATHMUSTEXIST            0x00000800
!define OFN_FILEMUSTEXIST            0x00001000
!define OFN_CREATEPROMPT             0x00002000
!define OFN_SHAREAWARE               0x00004000
!define OFN_NOREADONLYRETURN         0x00008000
!define OFN_NOTESTFILECREATE         0x00010000
!define OFN_NONETWORKBUTTON          0x00020000
!define OFN_NOLONGNAMES              0x00040000
#if(WINVER >= 0x0400)
!define OFN_EXPLORER                 0x00080000     ; new look commdlg
!define OFN_NODEREFERENCELINKS       0x00100000
!define OFN_LONGNAMES                0x00200000
!define OFN_ENABLEINCLUDENOTIFY      0x00400000
!define OFN_ENABLESIZING             0x00800000
#endif /* WINVER >= 0x0400 */
#if (_WIN32_WINNT >= 0x0500)
!define OFN_DONTADDTORECENT          0x02000000
!define OFN_FORCESHOWHIDDEN          0x10000000
#endif // (_WIN32_WINNT >= 0x0500)

!define OPENFILENAME "(i,i,i,i,i,i,i,i,i,i,i,t,t,i,i,i,t,i,i,t,*v,i,i) i"

Section
Push `${OFN_ALLOWMULTISELECT}|${OFN_EXPLORER}`     ;Flags
Push `Откройте файл`    ;lpstrTitle
System::Call "*(&t1024) i .r1"      ;lpstrFile
System::Call "*(&t25 'NSIS файл (*.nsi, *.nsh)', &t12 '*.nsi;*.nsh', &t9 'Все файлы', &t5 '*.*') i .r2"  ;lpstrFilter
System::Call "Kernel32::GetModuleHandle(i) i.s"    ;hInstance
Push $HWNDPARENT   ;hwndOwner
System::Call "*${OPENFILENAME}(76,s,s,r2,,,0,r1,1024,,,,s,s,_) i.r0"
System::Call "Comdlg32::GetOpenFileName(i r0) i.r3"
StrCmp $3 0 0 +3
MessageBox MB_ICONINFORMATION|MB_OK "    Вы не выбрали файл !"
Goto done
System::Call "*$1(&t1024 .r3)"
System::Call "*$0${OPENFILENAME}(,,,,,,,,,,,,,,.r4,_)"
IntOp $4 $4 - 1
StrLen $5 $3
StrCmp $4 $5 +3
MessageBox MB_ICONINFORMATION|MB_OK "Вы выбрали файл: $3"
Goto done
MessageBox MB_ICONINFORMATION|MB_OK "Вы выбрали в каталоге $3 , следующие файлы :"
StrCpy $5 $1
loop:
StrLen $4 $3
IntOp $5 $5 + $4
IntOp $5 $5 + 1
System::Call "*$5(&t1024 .r3)"
StrCmp $3 "" done
MessageBox MB_ICONINFORMATION|MB_OK "$3"    ;Цикл для имен выбранных файлов
Goto loop
done:
System::Free $0
System::Free $1
System::Free $2
SectionEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:12, 06-12-2013 | #826


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Цитата MKN:
Вызов диалогового окна выбора файлов
Пример для '*.nsi;*.nsh' »
Не знаю, как остальные, но лично я противник таких "жирных кодов", какой в них смысл?
Есть замечательные плагины типа Dialogs plug-in, которые позволяют сократить количество строк в коде до пары (1 строка вызов команды + ваш остальной код)
Неужели вас страшит лишние пары десятков Кб из-за добавления DLL плагина в пакет?

Я, конечно, понимаю, что WinAPI это хорошо, но мне кажется только тогда - когда это необходимо и нечем заменить нужный функционал
А использовать тонны кода для простеньких задач это как-то не айс, тем более кто лично в этой теме реально понимает, что ты написал?

Ты, я, Вячеслав и ещё возможно пара человек, которые реально хотят кодить на NSIS и которые полностью прочитали наш справочник, включая описание System.dll и сидящие на MSDN для изучения WinAPI функций, есть вообще такие здесь?

Я, честно признаюсь, раньше не использовал System.dll по одной простой причине - сложно было понять англ.доки по нему и читал описание данного плага из нашего же справочника , благодаря переводу Вячеслава я совсем недавно уже начал иногда применять system.dll в своём же "креаторе", мне раньше было проще написать dll, сейчас уже практически всё наоборот

Ты бы лучше взял и оформил все свои примеры, которые здесь выкладываешь, в стиле нашего справочника, редактить html не так уж и сложно через визуальные редакторы, я , к примеру использую лёгкий NVU - вполне сходит для создания и оформления лёгких страничек для справочников

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:36, 06-12-2013 | #827

MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Цитата K.A.V.:
но лично я противник таких "жирных кодов", какой в них смысл? »
Смысл - в познании нового, в привлечении и развитии интереса пользователей к творческому процессу. Вдруг кто то захочет плагинчик сделать ? Более совершенный чем тот же Dialogs plug, который конечно хорош, но лишён гибкости, в отличии от вышеприведённого кода.
Я тоже не люблю жирных кодов и без нужды не использую. Но любой такой жиряга - это и есть внутренности плагинов и хедеров, которыми все с удовольствием пользуются, потому что этот жиропродукт в итоге позволяет обойтись парой строк кода...
Цитата K.A.V.:
Ты бы лучше взял и оформил все свои примеры, которые здесь выкладываешь »
Имеются ввиду API_шные ? Какой из меня учитель... Я сам только учусь. Если уж кто и сможет грамотно научить , то это Вячеслав...

Последний раз редактировалось MKN, 06-12-2013 в 17:14.


Отправлено: 16:58, 06-12-2013 | #828


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Скажите, можно ли через NSIS сделать выбор типа/режим установки, ПЕРЕД выбором компонентов



чтобы при выборе одного из режимов у него был свой независимый набор файлов / секций / свои настройки деинсталлятора / иконок

можно ли это сделать стандартными средствами (пока не удалось найти как)?, если да/нет то в какую хоть сторону копать?

Отправлено: 11:10, 07-12-2013 | #829


Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


Цитата areafix:
можно ли это сделать стандартными средствами (пока не удалось найти как)?, если да/нет то в какую хоть сторону копать? »
1. » nsDialogs: Создаем собственные страницы инсталлятора
2. » Логические конструкции в скриптах NSIS в справочнике
3. » Создание своего инсталлятора на NSIS. Секции и выбор компонентов
4. » Читаем про свойства флагов секций: скрытие, переименование, отметки
изменяем флаги (свойства секций) в зависимости от отметки радиобутонов
естественно все это делаем до показа странички компонентов.
Код: Выделить весь код
Section
   ${If} $radio1 == 1

        ;куча команд
        ;если отмечен первый флажок

  ${ElseIf} $radio2 == 1

        ;куча команд
        ;если отмечен второй флажок

  ${EndIf}
SectionEnd

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Отправлено: 12:04, 07-12-2013 | #830



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 dimadr Наборы обновлений для Windows XP/2003/Windows 7 267 14-02-2020 08:25
[архив].: NSIS - все вопросы :. kotkovets Автоматическая установка приложений 3387 09-12-2012 11:56
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 jameszero Наборы обновлений для Windows XP/2003/Windows 7 1491 22-07-2011 22:42
Выбор|модернизация процессора .:[все вопросы]:. Часть I Myxa Выбор отдельных компонентов компьютера и конфигурации в целом 1845 01-01-2011 19:18
Вопросы по создателю инсталляций NSIS MaxDELETE Программное обеспечение Windows 14 04-07-2007 10:01




 
Переход