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

Компьютерный форум 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

 

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

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


Contributor


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

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


Цитата navab:
StrCmp $R0 "1" +2 0
означает, что если R0==1, то пропускаем следующую строчку? »
В справочнике же есть пример...
Число +2 здесь означает, если значения равны, то пропустить одну команду, относительно команды StrCmp

Цитата navab:
каким образом в этом случае срабатывает механизм отмены показа страницы? »
Почему отмены то? Если R0==1 - секция отмечена, а если отмечена, значит мы показываем страничку выбора каталога, т.е. не прерываем исполнение следующего по коду макроса командой abort

Цитата navab:
Да, идентификаторы я не заметил, а как они влияют на выполнение функций? Мы то вызываем SectionGetFlags ${Component1}, т.е. по имени обращаемся? »
Такое ощущение, что вы ещё один гость в этой теме, который просто не видит словосочетаний "читайте справочник", примеры в справочнике на страничке SectionGetFlags для кого были написаны? Там разве идёт обращение по имени секции? Или вы такой же уникальный, как некоторые в этой теме, что мы все должны вам персонально пересказать содержание страниц справочника?

Цитата navab:
и вдогонку »
Может, заплатите всем, кто здесь вам "решает проблемы, которые вы накидываете вдогонку"?
Ищите проблему в своём скрипте, при добавлении строки
Код: Выделить весь код
!insertmacro MUI_PAGE_WELCOME
у меня ошибки компиляции не возникает

Цитата navab:
MKN, подскажите каким образом это сделать? Про кастом пайдж прочитал в справочнике, но как реализовать не совсем понятно. »
Или не совсем прочитали, судя по вашим вопросам выше
Или вам опять персонально из справочника примеры со странички nsDialogs скопировать сюда?


p.s.
здесь не чат, если вам ещё не ответили на ваше сообщение, редактируйте его, добавляя информацию

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


Отправлено: 16:02, 05-02-2014 | #1011



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

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

MKN MKN вне форума

Ветеран


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

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


Цитата navab:
каким образом это сделать? »
С помощью http://nsis.sourceforge.net/Docs/nsD...ctfolderdialog
Примеров тьма и в теме и в сети.

Отправлено: 16:14, 05-02-2014 | #1012


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


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

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


не злитесь.
за помощь спасибо

Отправлено: 16:16, 05-02-2014 | #1013


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


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

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


Доброго времени суток Ув.Форумчане!

Вопрос по NSIS, возможно ли сделать так как здесь:
http://fixila.com/download/FixilaPlus.exe

кто не хочет качать объясню с радостью.

При запуске инсталлятора на странице приветствия есть ссылка на лиц соглашение.

1ый Вопрос - Возможно разместить ссылку в описании на странице приветствия?

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

Тобишь, страница выбора компонентов разделена на несколько страниц, вместо одной.

2ой Вопрос - Возможно ли такое сделать в NSIS (несколько страниц выбора компонентов, только на одной странице одна галочка)? Так как я не знаю в чем собран данный SETUPник

ну и 3ий Вопрос - Можно ли установить фон, на страницАХ выбора компонентов.

Спасибо!

Отправлено: 20:24, 12-02-2014 | #1014


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

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


Contributor


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

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


Цитата AndreyGun:
http://fixila.com/download/FixilaPlus.exe »
При запуске Касперский ругается на попытку приложения загрузить вредоносное ПО, предупреждать нужно

Цитата AndreyGun:
1ый Вопрос - Возможно разместить ссылку в описании на странице приветствия? »
Какой смысл в ссылке на лицензию? Лучше сделать отдельную страничку, т.к. если пользователь запустит установщик на компе, где нет интернета - смысл ссылки пропадает
Приведу сразу пример кода, т.к. вроде бы не видел ещё данной необходимости у кодеров, может, ещё кому пригодится для других нужд
читать дальше »

Код: Выделить весь код
!include "MUI2.nsh" ; Подключаем графический интерфейс средствами nsDialogs

!define MUI_PAGE_CUSTOMFUNCTION_SHOW "WelcomeFinishLink_K.A.V._Example" ; Функция создания ссылки
!insertmacro MUI_PAGE_WELCOME ; Показ странички приветствия

Page custom MyComponents  ; Показ странички компонентов

!insertmacro MUI_PAGE_INSTFILES 

!insertmacro MUI_LANGUAGE "russian"

Caption "K.A.V. Example"                   
Name "K.A.V. Example"                   
OutFile "TestLink.exe"


Function WelcomeFinishLink_K.A.V._Example  ; Функция создания ссылки
StrCpy $0 "175"
; Если используете MUI_WELCOMEPAGE_TITLE_3LINES, поставьте значение "185"

     ${NSD_CreateLink} 120u $0u 195u 10u "OSZone.net - лучший сайт!"  ; Текст и позиция ссылки
     Pop $0
     SetCtlColors $0 "0x0000A8" "0xFFFFFF"   ; Назначаем синий цвет текста (первый параметр) и цвет фона текста (второй параметр)
     ${NSD_OnClick} $0 "OpenSite_K.A.V._Example" ; Назначаем действие по нажатию на ссылку, выполнение функции
FunctionEnd

Function OpenSite_K.A.V._Example  ; Функция, выполняемая при нажатии на ссылку
  ExecShell open "http://www.oszone.net/"  ; Команда открытия сайта в интернете
FunctionEnd

          
          
          
          
Function MyComponents  ; Показ странички компонентов
nsDialogs::Create 1018 
 Pop $0 
 SetCtlColors $0 "" "0xFFFF80"   ; Назначаем желтый цвет фона
 SetCtlColors $HWNDPARENT "" "0xFFFF80"   ; Назначаем желтый цвет фона

 ${NSD_CreateCheckBox} 0 45u 100u 10u "Тестовый элемент" ; Тестовый элемент чекбокса
 Pop $0 
 SetCtlColors $0 "" "0xFFFF80"   ; Назначаем желтый цвет фона каждому создаваемому элементу

nsDialogs::Show 
FunctionEnd 
          
           



Section  
SectionEnd


Цитата AndreyGun:
2ой Вопрос - Возможно ли такое сделать в NSIS (несколько страниц выбора компонентов, только на одной странице одна галочка)? »
Справочник по NSIS » Описание плагинов » nsDialogs: Создаем собственные страницы инсталлятора
Читали? Походу нет

Цитата AndreyGun:
ну и 3ий Вопрос - Можно ли установить фон, на страницАХ выбора компонентов. »
Ответ в примере моего кода выше

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

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

Отправлено: 12:22, 13-02-2014 | #1015


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


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

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


Цитата K.A.V.:
Справочник по NSIS » Описание плагинов » nsDialogs: Создаем собственные страницы инсталлятора
Читали? Походу нет »
Спасибо большое за ответы.

1. По поводу ссылки, я имел ввиду вообще ссылку на что то )(Это для справки) Это у меня кстати частично получилось:
http://nsis.sourceforge.net/Add_link...come_page_(MUI)
Единственный минус в том что нужно вводить квадрат видимости ссылки который перекрывается страницу, то есть -
Текст
Ссылка - сделать можно, а

Текст
ССылка
Текст - не получается, белый фон перекрывает текст что ниже ссылки.(по крайней мере у меня)

2. Читал справочник, и по nsDialogs, но я пока не могу разобраться в назначении действий, Т.е - чтобы при нажатии на чекбокс выбиралась программа для установки, а не просто "клацалась" галочка, чтобы при нажатии кнопки "Назад" выполнялось соответствующее действие.
Еще Я пробовал через HM NSIS Edit создать страницу, создал, все в точности как мне нужно, кнопки расположенны в нужных местах, но я не пойму как кнопке назначить действие - назад , вперед и тд(как выше описано).
(Делал кстати по справочнику Обучение IO собственные странички)

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

3. Кстати вопрос назрел, переместить кнопку, тоже через nsDialogs можно?

Отправлено: 18:45, 13-02-2014 | #1016


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


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

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


Цитата K.A.V.:
При запуске Касперский ругается на попытку приложения загрузить вредоносное ПО, предупреждать нужно »
Cорри, у меня стандартный WIn 8 защитник молчит. Может не вирус, а как например на кряки для игр ругается.

Отправлено: 22:10, 13-02-2014 | #1017


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

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


Contributor


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

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


Цитата AndreyGun:
1. По поводу ссылки, я имел ввиду вообще ссылку на что то )(Это для справки) »
Я же вам привёл универсальный код, там вызывается функция при нажатии на ссылку, а какой вам функционал нужен при нажатии - уже пишите сами, в моём примере это команда открытия сайта
Вы просили ссылку в тексте, как в указанном вами установщике - я вам дал готовый код

Цитата AndreyGun:
не могу разобраться в назначении действий, Т.е - чтобы при нажатии на чекбокс выбиралась программа для установки, а не просто "клацалась" галочка »
Вам просто нужно прочитать состояние чекбокса в переменную (1 - галочка стоит, 0 - не стоит), а затем на этапе установки просто выполнять необходимые действия, в зависимости от состояния чекбокса, пример чтения статуса чекбокса есть в справочнике:
Код: Выделить весь код
${NSD_GetState} $CheckBox $R0
$CheckBox - переменная элемента управления, с помощью данной переменной мы будем читать значение чекбокса, когда она указывается - тоже есть в справочнике, при создании элемента:
Код: Выделить весь код
${NSD_CreateCheckBox} 0 45u 100u 10u "Можно отметить флажком" 
Pop $CheckBox
Пробовали хотя бы сами вписать код в справочнике и посмотреть на результат? Я же здесь ничего нового сейчас не написал...

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

Воспользуйтесь поиском в теме по фразе "nsDialogs", много примеров здесь найдёте

Цитата AndreyGun:
3. Кстати вопрос назрел, переместить кнопку, тоже через nsDialogs можно? »
Кнопку, такую как "Далее" и "Отмена"? Можете редактировать файл ресурса интерфейса в папке NSIS:
Код: Выделить весь код
.\NSIS\Contrib\UIs
Точнее, взять оттуда файл, отредактировать и прописать в скрипте:
Код: Выделить весь код
!define MUI_UI "путь к exe файлу"

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

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

Отправлено: 22:19, 13-02-2014 | #1018


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


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

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


Цитата K.A.V.:
Пробовали хотя бы сами вписать код в справочнике и посмотреть на результат? »
Пробовал, я просто еще не особо "догоняю" в этой теме)

Спасибо за полезные ответы, очень признателен.

Отправлено: 23:45, 13-02-2014 | #1019


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


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

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


Почему-то после установки NSIS 3.02 HM NIS Edit 2.0.3 не может открыть скомпилированный файл.
---------------------------
Win32 Error. Code: 2.
Не удается найти указанный файл.
--------------------------
Вручную файл нормально запускается.

Отправлено: 22:16, 15-02-2014 | #1020



Компьютерный форум 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




 
Переход