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

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

 
MKN MKN вне форума

Ветеран


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

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


Begin2Fly,
Действительно, любопытное поведение... А для удаления и папок, вроде как макрос какой то был...

Отправлено: 13:46, 20-10-2020 | #2491



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

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


Аватара для AlekseyPopovv

Старожил


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

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


Есть ли способ создать файл *.ini в кодировке UTF-16LE?

Отправлено: 16:27, 21-10-2020 | #2492


Старожил


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

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


Цитата AlekseyPopovv:
Есть ли способ создать файл *.ini в кодировке UTF-16LE? »
Создать пустышку.
UTF-16LE BOM:
Код: Выделить весь код
FileOpen $0 ИМЯ_INI_ФАЙЛА w
FileWriteWord $0 65279

; Если сейчаc закрыть файл, то первая строка файла после первого же WriteINIStr получится пустой.
; Поэтому её можно использовать для комментария:
FileWriteUTF16LE $0 ";комментарий для инишника " 

FileClose $0
UTF-16LE без BOM:
Код: Выделить весь код
FileOpen $0 ИМЯ_INI_ФАЙЛА w
FileWriteUTF16LE $0 "  " ; Записать два пробела
FileClose $0
Дальше писать обычным WriteINIStr.

MKN,
Ещё вариант в две строки
Код: Выделить весь код
SetOutPath DIR
RMDir /r DIR

Последний раз редактировалось iglezz, 21-10-2020 в 18:05.

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

Отправлено: 17:51, 21-10-2020 | #2493

MKN MKN вне форума

Ветеран


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

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


Цитата heloy2010:
обновленный ProcessFunc.nsh для версий NSIS 3.XX »
А разве не эта версия входит в состав справочника NSIS_Help-1.5.chm ? (раздел "Работа с процессами с помощью NSIS")

Отправлено: 16:20, 18-11-2020 | #2494


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


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

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


Вложения
Тип файла: 7z ProcessFunc.7z
(3.0 Kb, 23 просмотров)

К сожалению, из ссылки справочника NSIS_Help-1.5.chm, до сих пор загружается устаревшая версия ProcessFunc.nsh для NSIS 2.XX размером в 13.7 КБ.
Обновленная последняя версия ProcessFunc.nsh для NSIS 3.XX, имеет размер 12.8 КБ и здесь на сайте находится на нее ссылка на яндекс-диск. Сразу я ее не нашел, поэтому и обратился к автору ProcessFunc.nsh.

Последний раз редактировалось heloy2010, 06-04-2021 в 05:30.


Отправлено: 06:52, 29-11-2020 | #2495

MKN MKN вне форума

Ветеран


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

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


Вложения
Тип файла: zip Test_dok.zip
(2.0 Kb, 21 просмотров)

Отыскал полезный док файлик с примерами от kotkovets , как использовать ProcessFunc.nsh
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:22, 10-12-2020 | #2496


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


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

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


Подскажите пожалуйста примеры по использованию SendMessage с ключем WM_GETTEXT.
Примером с WM_SETTEXT очень много, а с этим ни одного не нашел

Отправлено: 18:09, 26-12-2020 | #2497


Старожил


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

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


murlocks,
Для WM_GETTEXT и других сообщений, которые возвращают значения в wParam/lParam, встроенная инструкция SendMessage не подходит.
Но можно воспользоваться плагином System.
Пример, читающий текст с кнопки Next/Install/Close

Код: Выделить весь код
GetDlgItem $0 $HWNDPARENT 1
System::Call 'USER32::SendMessage(i $0, i ${WM_GETTEXT}, i ${NSIS_MAX_STRLEN}, t .r1)  i .r2'
MessageBox MB_OK 'text: $1$\nchars: $2'
Что здесь происходит (упрощённо):

Функция SendMessage принимает 4 параметра:
HWND - дескриптор окна, которому отсылается сообщение
Msg - код сообщения
wParam - значение, специфичное для конкретного сообщения
lParam - значение, специфичное для конкретного сообщения

Параметры для сообщения WM_GETTEXT:
wParam - максимальное число символов, которые надо прочитать, включая концевой нулевой (null, \0) символ (для чтения максимум 5 символов необходимо задать значение 6).
В примере выше ${NSIS_MAX_STRLEN} задаёт максимально возможное значение в используемой сборке NSIS (по умолчанию - 1024 символа)
lParam - указатель на буфер, содержащий прочитанный текст.
В примере выше это "t .r1", что (упрощённо) говорит "текстовое значение поместить в переменную (регистр) $1".

Функция SendMessage с сообщением WM_GETTEXT возвращает число прочитанных символов, не включая концевой символ. Это фрагмент " i .r2" в примере выше и его можно удалить, если использование этого числа не планируется.

Результат, помимо переменных $0..$9, $R0..$R9, можно поместить и в стек, $INSTDIR, $OUTDIR и некоторые другие переменные. Подробности есть в справке по плагину System.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:48, 26-12-2020 | #2498

MKN MKN вне форума

Ветеран


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

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


Задача: узнать какие разрешения(права доступа), кто владелец конкретного ключа реестра ?
Первым делом попробовал имеющийся известный инструментарий - AccessControl plug-in с заявленным :
Цитата:
Gets the owner of an object.
GetRegKeyOwner <rootkey> <regkey>
Pop $Owner ; or "error" + error details
т.е. , как пример :
Код: Выделить весь код
!addplugindir .
OutFile AccessControlTest.exe
RequestExecutionLevel admin
var Owner

Section
AccessControl::GetRegKeyOwner "HKLM" "SYSTEM\ControlSet001\Control\AGP"
Pop $Owner
MessageBox MB_OK "$Owner"
SectionEnd
В итоге - error.
Или я что то не так делаю, или плагин...
Также интересно, как можно использовать для этих целей RegGetKeySecurity фунукцию ?
У кого какие соображения ?

Последний раз редактировалось MKN, 17-02-2021 в 12:19. Причина: fix AccessControl::GetRegKeyOwner "HKLM" "SYSTEM\ControlSet001\Control\AGP"


Отправлено: 12:21, 06-01-2021 | #2499


Старожил


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

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


MKN, Формат вызова неверный
GetRegKeyOwner <rootkey> <regkey>
Код: Выделить весь код
GetRegKeyOwner <rootkey> <regkey>

<rootkey>
  The well-known root of a registry key. Following values are defined:

    HKCR - HKEY_CLASSES_ROOT
    HKLM - HKEY_LOCAL_MACHINE
    HKCU - HKEY_CURRENT_USER
    HKU  - HKEY_USERS

<regkey>
  The name of the registry to alter (ie. "Software\Microsoft\Windows").

Следовательно:
Код: Выделить весь код
AccessControl::GetRegKeyOwner "HKLM" "SYSTEM\ControlSet001\Control\AGP"
Но возвращает оно что-то не то...

Отправлено: 13:45, 06-01-2021 | #2500



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




 
Переход