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

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


Ещё раз о запрете перетаскивания окон-страниц.
Китайские "NSISадмины" для этого, обезглавливают окно одной строкой в CUSTOMFUNCTION_GUIINIT (или PAGE_CUSTOMFUNCTION_SHOW) :
Код: Выделить весь код
OutFile "NoWindowTitle.exe"

!include "MUI2.nsh" 
!define MUI_CUSTOMFUNCTION_GUIINIT GUIInit
;!define MUI_PAGE_CUSTOMFUNCTION_SHOW Custom
!insertmacro MUI_PAGE_WELCOME 
;!insertmacro MUI_PAGE_DIRECTORY 
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

;Function Custom
Function GUIInit
System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0`
FunctionEnd

Section
SectionEnd
Не уверен, что так корректно, но работает... И ещё нигде не нашёл инфы о константе(?) 0x9480084C
Что бы это значило ?

ps offtop По заявлению IT-corp AOL - скоро будет закрыт проект winamp и сайт winamp.com, тогда что, и форум закроют ? Т.е. мировой центр NSIS разработки и общения NSIS_овцев... Тогда на белом свете останется только forum.oszone NSIS... Сюда потянутся пользователи со всего света, мировая NSIS дискуссия, Нью-Nsis Васюки....

Последний раз редактировалось MKN, 21-11-2013 в 11:16.


Отправлено: 10:34, 21-11-2013 | #781



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

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


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

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


Contributor


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

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


Цитата MKN:
Не уверен, что так корректно, но работает... И ещё нигде не нашёл инфы о константе(?) 0x9480084C
Что бы это значило ? »
Да какая разница, какой метод...Что ты удаляешь стили окна напрямую в modern.exe, что ты при запуске делаешь этой командой...смысл один и тот же.
Последний параметр в функции устанавливает стиль окна, там суммируются разные стили по кодам стилей, вот и всё (SetWindowLong)
Корректней было бы сначала получить стиль своего окна с помощью GetWindowLong, из этого стиля удалить необходимые стили и использовать "обрезанный" стиль как 3-ий параметр в SetWindowLong, как показал вам ЗДЕСЬ уважаемый Вячеслав

Цитата MKN:
Сюда потянутся пользователи со всего света, мировая NSIS дискуссия, Нью-Nsis Васюки.... »
Будет кому отвечать в этой теме кроме авторов справочника на все хотелочки а мы на покой

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


Отправлено: 11:27, 21-11-2013 | #782


Аватара для Limonica

Старожил


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

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


Можно пример скрипта определения раскладки клавиатуры или языка ОС, и если он англ. - завершение работы скрипта. Спасибо!

Отправлено: 11:57, 21-11-2013 | #783

MKN MKN вне форума

Ветеран


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

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


Цитата Limonica:
определения раскладки клавиатуры или языка ОС »
Определения раскладки клавиатуры и языковых параметров ОС

Код: Выделить весь код
OutFile "LocaleINFO.exe"
Name "Detect User Locale INFO"
Caption "Detect User Locale INFO"
 
!define LOCALE_ILANGUAGE '0x1' ;System Language Resource ID     
!define LOCALE_SLANGUAGE '0x2' ;System Language & Country [Cool]
!define LOCALE_SABBREVLANGNAME '0x3' ;System abbreviated language
!define LOCALE_SNATIVELANGNAME '0x4' ;System native language name [Cool]
!define LOCALE_ICOUNTRY '0x5' ;System country code     
!define LOCALE_SCOUNTRY '0x6' ;System Country
!define LOCALE_SABBREVCTRYNAME '0x7' ;System abbreviated country name
!define LOCALE_SNATIVECTRYNAME '0x8' ;System native country name [Cool]
!define LOCALE_IDEFAULTLANGUAGE '0x9' ;System default language ID
!define LOCALE_IDEFAULTCOUNTRY  '0xA' ;System default country code
!define LOCALE_IDEFAULTCODEPAGE '0xB' ;System default oem code page
 
Function ".onInit"
System::Call 'kernel32::GetSystemDefaultLangID() i .r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SNATIVELANGNAME}, t .r1, i ${NSIS_MAX_STRLEN}) i r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SNATIVECTRYNAME}, t .r2, i ${NSIS_MAX_STRLEN}) i r0'
System::Call 'kernel32::GetLocaleInfoA(i 1024, i ${LOCALE_SLANGUAGE}, t .r3, i ${NSIS_MAX_STRLEN}) i r0'
MessageBox MB_OK|MB_ICONINFORMATION "Your System LANG Code is: $0. $\r$\nYour system language is: $1. $\r$\nYour system language is: $2. $\r$\nSystem Locale INFO: $3."

System::Call 'user32::GetKeyboardLayout(i 0)i.r0'
IntFmt $0 "%08x" $0
StrCpy $1 $0 "" -4
MessageBox MB_OK " Установленный по умолчанию DefaultLangID  :  $1 "
; 0409 - английский
; 0419 - русский
FunctionEnd
 
Section 
SectionEnd
Раскладка клавиатуры по умолчанию - это раскладка, установленная в языковой панели, т.е. , которая будет после загрузки ОС
Не путать с текущей раскладкой, которая вышеприведённым кодом НЕ определяется !

С логикой "если бы, да кабы" - разберёшься сам. Примеров тьма.

Последний раз редактировалось MKN, 21-11-2013 в 13:21.

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

Отправлено: 13:15, 21-11-2013 | #784


Аватара для wolkow70

Ветеран


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

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


Возник такой вопрос.
известно, что в Windows 8 для внесения ассоциации недостаточно добавить значение ProgId:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]
"ProgId"="AcroExch.Document"

а требуется еще внести параметр Hash, вот так:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]
"Hash"="xh8KhPWlZL0="
"ProgId"="AcroExch.Document"

Возник вопрос, можно ли в автоматическом режиме вычислить Hash значение параметра ProgID для записи в параметр Hash ?

-------
Человек человеку - друг, товарищ и волк!


Отправлено: 20:21, 23-11-2013 | #785


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


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

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


Подскажите пожалуйста как можно отправить сообщение в командную строку? И можно ли в ней же эмулировать нажатие клавиши enter?

Отправлено: 00:48, 24-11-2013 | #786


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

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


Contributor


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

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


Цитата Vincent7:
Подскажите пожалуйста как можно отправить сообщение в командную строку? И можно ли в ней же эмулировать нажатие клавиши enter? »
Как эмулировать нажатие клавиши
читать дальше »

Код: Выделить весь код
!include "WinMessages.nsh"

Caption "PressKey.exe"                        
OutFile "PressKey.exe" 



Function .onInit
 FindWindow $0 "ConsoleWindowClass" "Администратор: $SYSDIR\cmd.exe"
 IsWindow $0 0 +2
  MessageBox MB_OK "ОКНО НАЙДЕНО" idok +3
  MessageBox MB_OK "ОКНО НЕ НАЙДЕНО"
quit
  SendMessage $0 ${WM_CHAR} "0x0D" "0"
quit
FunctionEnd





Section
SetAutoClose true
SectionEnd
ConsoleWindowClass - класс окна, в котором собираемся сделать нажатие кнопки, не помню, такой же класс в WinXP у консоли или нет, лень проверять, как-нибудь сами
Администратор: $SYSDIR\cmd.exe - имя окна, если собираетесь жать в консоли, то лучше бы заранее в cmd-файле прописать "title" окна, т.к. например, в XP слово "Администратор" не добавляется к заголовку cmd окон как в Win7
0x0D - клавиша, которая отправляется окну. Коды читайте здесь: Virtual-Key Codes


Насчет отправки сообщения в консоль не знаю, с консолью особо не было нужды работать, возможно, Вячеслав вам подскажет

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


Отправлено: 07:42, 24-11-2013 | #787


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


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

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


не работает эмулирование... а если использовать execdos плагин с параметром /DETAILED- так информация из командной сроки будет выводится в окне установки, можно ли будет в это окно послать сообщение? будет ли оно воспринято консолью?

Отправлено: 16:22, 25-11-2013 | #788

MKN MKN вне форума

Ветеран


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

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


Цитата Vincent7:
можно ли будет в это окно послать сообщение? будет ли оно воспринято консолью? »
Не совсем яcно чего ты хочешь и зачем такие извращения ?..
А в консольное окно, отправить нечто можно так :
Код: Выделить весь код
outfile consol.exe
Section
System::Call 'kernel32::AllocConsole(i -1)' 
System::Call 'kernel32::GetStdHandle(i -11)i.r0' 
FileWrite $0 "hello, Vincent7 !" 
SectionEnd
Проверял только на XP. На других ОС наверное надо вызывать AttachConsole... Не пробовал.

Последний раз редактировалось MKN, 26-11-2013 в 09:01.


Отправлено: 18:11, 25-11-2013 | #789


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

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


Contributor


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

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


Вложения
Тип файла: rar bandicam 2013-11-26 23-38-35-603.rar
(815.3 Kb, 27 просмотров)

Цитата Vincent7:
не работает эмулирование... »
а вы тестировали?

Хотите сказать, мой предоставленный код не рабочий? Может, вы делаете что-то не так?
Смотрите прикреплённый файл. Специально для вас, запустил виртуалку и проверил на XP (не, ну мало ли, чтобы уж наверняка)
C другим софтом да, возможно и не будет работать, но в командную строку лично у меня нажатие клавишь отправляет корректно

Кто-нибудь, протестите мой пример кода и скажите, работает ли у вас посылка нажатия "enter" в командную строку

Цитата Vincent7:
можно ли будет в это окно послать сообщение? будет ли оно воспринято консолью? »
Мы вам тут сейчас кучу кода предоставим, а вы на всё будете отвечать "не работает"

Цитата MKN:
Проверял только на XP. На других ОС наверное надо вызывать AttachConsole... Не пробовал. »
В Win7 x32 работает, правда открывает новое cmd окно, но если так и задуманно...о командах не читал, с консолью не работаю и не разбирался

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


Последний раз редактировалось K.A.V., 26-11-2013 в 20:54.

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

Отправлено: 20:47, 26-11-2013 | #790



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




 
Переход