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

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

Закрытая тема
Настройки темы
[архив].: NSIS - все вопросы :.

Аватара для kotkovets

Ветеран


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


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

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


Изменения
Автор: volk1234
Дата: 09-12-2012
Описание: перевод темы в архив.
Тема закрыта!
Лимит страниц.
Продолжение тут:
.: NSIS - все вопросы :. часть 2.
Старая шапка:
читать дальше »

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

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


Текущая версия: 2.46 от 6 декабря 2009 года
Скачать | Архив сборок версии 2 | Архив сборок версии 1

ВНИМАНИЕ! Созданный в NSIS инсталлятор является ANSI-приложением. Есть возможность использовать UNICODE-сборку системы, но при этом ваши дистрибутивы не будут работать в ANSI-системах, таких, как Windows 9x. Для загрузки UNICODE-сборки системы посетите сайт: http://www.scratchpaper.com/

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

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

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

Плагины и полезности к NSIS: http://nsis.sourceforge.net/Category:Plugins

Интерфейс Venis GUI: http://www.spaceblue.com/products/venis
Интерфейс ExperienceUI GUI http://experienceui.xx0r.info/oldeng...erienceui/home
Пример:


Интерфейс SkinCrafter Plugin - http://www.skincrafter.com/
Пример:

Инструкция по использованию от K.A.V.

Примеры скриптов на нашем форуме
Скрипт 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, если хотите скрыть некоторые файлы в вашей инсталляции.


===========
тема прикрепляется, шапка будет дорабатыватся... Volk1234, hb860

Отправлено: 23:35, 17-06-2006

 

Аватара для kotkovets

Ветеран


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

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


Цитата Proton:
Здравствуйте, подскажите куда копать »
Поле ввода пароля: ${NSD_CreatePassword}
Цитата Proton:
Как сделать чтобы пароль проверялся по первым 4 символам? »
Очень просто, нужно брать из введенного пароля первые 4 символа
Код: Выделить весь код
Function dogovor_confirm
  ${NSD_GetText} $textdogov $numberdogov
  StrCpy $numberdogov $numberdogov 4
  ${ifnot}  $numberdogov == nsis ;если не равно "nsis" 
      MessageBox MB_ICONSTOP "Неверный пароль !!!"
      Abort ; конец иницилизации
  ${endif}
FunctionEnd
Если сравниваете строковые значения с лучше писать с двумя знаками ==
Если числовые то с одним знаком =

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


Последний раз редактировалось kotkovets, 08-04-2011 в 14:28.

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

Отправлено: 10:00, 08-04-2011 | #1051



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

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

MKN MKN вне форума

Ветеран


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

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


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

Удалить : 1ый любой символ в начале строк с 37 по 68 включительно.

Или : удалить 3 первых любых символа в строках с 10 по 20 и 3 первых любых символа, в 33 строке.

В справочнике ничего подходящего не обнаружил...

ps Если удление сделать нельзя, то хотя бы заменить символ на пустой...

Последний раз редактировалось MKN, 08-04-2011 в 10:37.


Отправлено: 10:20, 08-04-2011 | #1052


Аватара для kotkovets

Ветеран


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

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


MKN, А зачем удалять, когда можно методом сравнения строки заменить целиком строку и код проще и гемора меньше на порядок.
вот к примеру есть строка: forum.oszone.ru
${WordReplace} '$R9' 'forum.oszone.ru' 'я на forum.oszone.ru - изучаю NSIS' "+" '$R9'
в итоге заменится строка forum.oszone.ru на я на forum.oszone.ru - изучаю NSIS
а параметры замены в оригинале смотри по индексу WordReplace или Word.
а если строку нужно удалить:
${WordReplace} '$R9' 'forum.oszone.ru' '' "+" '$R9'
Но останется пустая строка, как ее удаллить смотри здесь:
http://forum.oszone.net/post-1645122-1011.html

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


Последний раз редактировалось kotkovets, 08-04-2011 в 12:12.


Отправлено: 12:01, 08-04-2011 | #1053

MKN MKN вне форума

Ветеран


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

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


Цитата kotkovets:
можно методом сравнения строки заменить целиком строку и код проще и гемора меньше на порядок. »
Гемора на порядок будет больше, т.к. придётся вручную вводить текст сравниваемой строки и текст необходимого результата.

Когда в текстовом файле таких строк сотни и с чёрт знает какими записями - это убийственно...

А надо всего лишь удалить несколько символов в началах этих строк. При чём только в конкретных или в группах строк...

Отправлено: 12:24, 08-04-2011 | #1054

MKN MKN вне форума

Ветеран


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

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


kotkovets,
Я почти нашёл, то что нужно в TextFunc.nsh
Когда в файл примера вставляешь :
Код: Выделить весь код
;Удалить 1 символ в строках со 2 по 5 включительно

Section
${LineFind} "C:\a.txt" "C:\a.txt" "2:5-1" "LineReplaceFunction"
SectionEnd

Function LineReplaceFunction
	${TrimNewLines} '$R9' $R9
	StrCpy $R9 $R9 '' 1
	StrCpy $R9 '$R9$\r$\n'
	
	Push $0
FunctionEnd
то вроде как всё работает, но только в примере, а отдельно нет... И в том примере так много всего лишнего...

Последний раз редактировалось MKN, 08-04-2011 в 15:26.


Отправлено: 13:22, 08-04-2011 | #1055


Аватара для kotkovets

Ветеран


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

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


MKN,а все таки справку по вордовским хренотенью плохо смотрел... там куча параметров в вхождение в строку : в начале , в середину, с какого символа, на длину и т.д
макрос ${LineFind} "[File1]" "[File2|/NUL]" "[LineNumbers]" "Function"
взгляни к примеру:
$R9 - строковые значения
$R8 - номер линии строки текста
[LineNumbers]
1;-1 - все линии читать
5:9 - читать с 5 до 9 линии
в справке все это есть же.
WordFind, WordReplace, WordFind2X в функции LineReplaceFunction вставляй с нужными параметрами

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


Отправлено: 13:24, 08-04-2011 | #1056


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


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

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


Подскажите как в функции указать переход к другой функции или возврат в начало выполнения скрипта (к первой странице инсталятора)?

Отправлено: 16:02, 10-04-2011 | #1057


Аватара для kotkovets

Ветеран


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

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


Цитата Proton:
Подскажите как в функции указать переход к другой функции »
Это извращение, проще все нужно делать, чем не устраивает простой вызов: Call Function ? из любой секции или функции..или на другой конец использование глобальных меток, где можно прыгать как угодно: Goto .Next в пределах инсталлятора, кроме секции Uninstall, и командой Return
Цитата Proton:
возврат в начало выполнения скрипта »
а не проще цикл организовать (по условию) в одном месте, чем прыгать и скакать - выносить себе мозги.
ИМХО, в студию проблемный кусок скрипта.. а там видно будет, что и как "правильнее делать"

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


Отправлено: 21:29, 10-04-2011 | #1058


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


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

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


Нашел выход в команде Abort - прекращение выполнения скрипта дальше, возможно это извращение но мне помогло

Код: Выделить весь код
    Page custom dogovor_vvod dogovor_confirm
    ;!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI 2\LicenseRU.txt"
	!insertmacro MUI_PAGE_COMPONENTS
    ;!insertmacro MUI_PAGE_DIRECTORY
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_LANGUAGE "Russian"
	
;--------------------------------
;установка
;--------------------------------
Var dogovor
Var textdogov
Var numberdogov

Function dogovor_vvod
nsDialogs::Create 1018
!insertmacro MUI_HEADER_TEXT "Введите номер договора с ISP PalNet" "Если вы не являетесь пользователем сети PalNet, прервите установку и удалите данное приложение"
Pop $dogovor
${NSD_CreateText} 30% 30% 90u 12u ""
	Pop $textdogov
nsDialogs::Show
FunctionEnd

Function dogovor_confirm
${NSD_GetText} $textdogov $numberdogov
StrCpy $numberdogov $numberdogov 3
${ifnot} $numberdogov == pal ;если не равно pal*****
MessageBox MB_ICONSTOP|MB_YESNO "         $\r$\nНеверный номер договора!         $\r$\nПопробовать снова?$\r$\n $\r$\n" IDNO End
Abort
${else}
Goto Next
${endif}
End:
Quit
Next:
FunctionEnd
и дальше по тексту скрипта.
если есть более разумный выход при неверно введеных данных вернуться в начало выполнения скрипта, поделитесь идеей

Отправлено: 01:59, 11-04-2011 | #1059


Аватара для kotkovets

Ветеран


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

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


Proton, Что за извращения с метками в логических конструкциях(((...
Конструкции для того и существуют, чтобы метки (безусловные переходы) не использовать...
здесь вариант на относительном переходе внутри конструкции, которая выполняется только, когда введен неправильный пароль, т.е по заданному условию в логике.
Код: Выделить весь код
${NSD_GetText} $textdogov $numberdogov
StrCpy $numberdogov $numberdogov 3
${IfNot} $numberdogov == pal ;если не равно pal***** тогда ниже команды будут выполнены до закрытия конструкции ${EndIf}
  MessageBox MB_ICONSTOP|MB_YESNO "Неверный номер договора!$\r$\nПопробовать снова?" IDNO +2
  Abort
  Quit
${EndIf}
FunctionEnd
У вас страничка с вводом пароле первая, и вы никуда ни денетесь со странички, пока не введете верный пароль или откажетесь от ввода пароля - тогда выход. Че здесь мутить по меткам хренотень.
Скачайте Справочник по NSIS и почитайте про логические конструкции.

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


Последний раз редактировалось kotkovets, 11-04-2011 в 13:03.

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

Отправлено: 11:47, 11-04-2011 | #1060



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. ssaram Программное обеспечение Windows 406 12-02-2022 19:45
WinstyleMonitor .:[все вопросы]:. Mr dUSHA Проект WinStyle 331 12-02-2014 13:15
Delphi - Delphi .: [все вопросы] :. Serega Программирование и базы данных 94 04-05-2013 18:45
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. Microsoft Windows 2000/XP 105 30-06-2010 11:58
Вопросы по создателю инсталляций NSIS MaxDELETE Программное обеспечение Windows 14 04-07-2007 10:01




 
Переход