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

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

 

Старожил


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

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


Цитата MaGoth:
можно ли привязать »
Код: Выделить весь код
!insertmacro MUI_PAGE_WELCOME
!define MUI_PAGE_CUSTOMFUNCTION_SHOW "LICENSE_SHOW" 
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\COPYING" 
!insertmacro MUI_PAGE_FINISH

Function LICENSE_SHOW
  InitPluginsDir
  ${If} $LANGUAGE == 1049 ;если русский язык установщику
      File "/oname=$PLUGINSDIR\info.rtf" "${NSISDIR}\COPYING.rtf"
  ${ElseIf} $LANGUAGE == 1033 ;если английский язык установщика
      File "/oname=$PLUGINSDIR\info.rtf" "${NSISDIR}\COPYING1.rtf"
       ${ElseIf} $LANGUAGE == 1058 ;если украинский язык установщика
      File "/oname=$PLUGINSDIR\info.rtf" "${NSISDIR}\COPYING2.rtf"
  ${EndIf}

  FindWindow $0 "#32770" "" $HWNDPARENT
  GetDlgItem $0 $0 1000
  CustomLicense::LoadFile "$PLUGINSDIR\info.rtf" $0
FunctionEnd

Последний раз редактировалось diakov, 23-12-2012 в 19:05.

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

Отправлено: 18:07, 23-12-2012 | #51



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

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


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


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

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


diakov, Спасибо.
Вариант твой конечно интересный, но слишком громоздкий + много чего не нужного и лишнего используется...
Относительно, и пока на половину решил проблему так:

Код: Выделить весь код
;Для блока страниц MUI_PAGE
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(license)"
!insertmacro MUI_PAGE_README "$(Readme)"

...

;Далее, после блока MUI_LANGUAGE:
!insertmacro MUI_LANGUAGE "ENGLISH"
!insertmacro MUI_LANGUAGE "ROMANIAN"
!insertmacro MUI_LANGUAGE "GERMAN"
!insertmacro MUI_LANGUAGE "RUSSIAN"

...

;Прописал это:
LicenseLangString license ${LANG_ENGLISH}	".\setup\en\Text_License.rtf"
LicenseLangString license ${LANG_ROMANIAN}	".\setup\ro\Text_License.rtf"
LicenseLangString license ${LANG_GERMAN}	".\setup\de\Text_License.rtf"
LicenseLangString license ${LANG_RUSSIAN}	".\setup\ru\Text_License.rtf"

...
Протестировал вывод файла на трех языковых версиях, все отображается как нужно и в требуемом языке. Осталось только провернуть то же самое со строкой выделенной красным, есть у кого мысли на сей счет? Куда и что копать ?!

Последний раз редактировалось MaGoth, 23-12-2012 в 21:09.


Отправлено: 20:23, 23-12-2012 | #52


Аватара для kotkovets

Ветеран


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

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


Цитата MaGoth:
Куда и что копать ?! »
точно также

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


Отправлено: 13:10, 24-12-2012 | #53


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


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

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


kotkovets, Было бы также не спрашивал, первым делом проверил, не работает. Похоже что присвоение второго значения для этой переменной не светит, ибо в "единицу времени" она может быть только одна, когда у меня их уже 2, и больше... Еще мысли есть?

Зы, И как напоминание, использую NSIS UTF.

Последний раз редактировалось MaGoth, 24-12-2012 в 15:12.


Отправлено: 14:50, 24-12-2012 | #54


Аватара для kotkovets

Ветеран


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

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


Цитата MaGoth:
Похоже что присвоение второго значения для этой переменной »
само собой, я имел ввиду: по такой же схеме с другими названиями переменных и функции, наипросто просто!

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


Отправлено: 15:34, 24-12-2012 | #55


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


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

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


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


Зы, Если ничего не получится, то хоть польза будет от наших трудов, в справочнике откроешь новый раздел "Функции Нсис":
1. Простые.
2. Преопределенные (как используемая мною в примере, изменять ее, кстати тоже нельзя).

Последний раз редактировалось MaGoth, 24-12-2012 в 19:59.


Отправлено: 15:43, 24-12-2012 | #56


Аватара для Limonica

Старожил


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

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


Всем привет, в Windows есть переменная %USERNAME% отображающая активного пользователя, есть ли такая переменная в NSIS или как можно получить имя оригинального пользователя не используя плагин UserMgr?

Отправлено: 23:50, 24-12-2012 | #57


Аватара для Begin2Fly

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


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

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


Цитата Limonica:
Всем привет, в Windows есть переменная %USERNAME% отображающая активного пользователя, есть ли такая переменная в NSIS или как можно получить имя оригинального пользователя не используя плагин UserMgr? »
Код: Выделить весь код
ExpandEnvStrings $1 "%USERNAME%"
MessageBox MB_OK|MB_TOPMOST|MB_USERICON "$1 - текущий пользователь."
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:54, 24-12-2012 | #58


Аватара для Limonica

Старожил


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

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


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

Отправлено: 00:12, 25-12-2012 | #59

MKN MKN вне форума

Ветеран


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

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


К слову сказать, но почему то не все переменные можно получить через ExpandEnvStrings - в Windows 7 и Windows 8. (в XP - всё получается)
В частности, для "%USERNAME%" всегда работает :
Код: Выделить весь код
System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2"
DetailPrint "User name - $0"

Последний раз редактировалось MKN, 25-12-2012 в 09:08.

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

Отправлено: 08:58, 25-12-2012 | #60



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




 
Переход