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

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

 

Аватара для wolkow70

Ветеран


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

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


Может кто-нибудь подсказать почему не работает вот это в деинсталляторе?

!define MUI_UNFINISHPAGE_NOAUTOCLOSE

И если так не правильно , то как тогда правильно сделать?
Мне нужна возможность в деталях просматривать процесс деинсталяции.

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


Последний раз редактировалось wolkow70, 07-05-2012 в 09:53.


Отправлено: 20:45, 06-05-2012 | #2681



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

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


Аватара для wolkow70

Ветеран


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

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


Цитата wolkow70:
Может кто-нибудь подсказать почему не работает вот это в деинсталляторе?

!define MUI_UNFINISHPAGE_NOAUTOCLOSE »
Выяснил сам. Оказывается, что работает, нужно только в секции деинсталлятора убрать

SetAutoClose true

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


Отправлено: 10:48, 07-05-2012 | #2682


Аватара для wolkow70

Ветеран


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

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


Товарищи, подскажите как в
MB_USERICON подставить другую иконку, а не инсталлятора?

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


Отправлено: 13:11, 07-05-2012 | #2683


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
Товарищи, подскажите как в
MB_USERICON подставить другую иконку, а не инсталлятора? »
Элементарно....
Код: Выделить весь код
${MessageBoxEx}  "путь к файлу ресурсу, где иконка" "текст надписи" "текст заголовка" "стиль сообщения" "индекс иконки" "код возврата"
читать дальше »
Код: Выделить весь код
!include "MUI2.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
OutFile "msgbox-setup.exe"

!ifndef MB_OK
  !define MB_OK                       0x00000000
  !define MB_OKCANCEL                 0x00000001
  !define MB_ABORTRETRYIGNORE         0x00000002
  !define MB_YESNOCANCEL              0x00000003
  !define MB_YESNO                    0x00000004
  !define MB_RETRYCANCEL              0x00000005
  !define MB_CANCELTRYCONTINUE        0x00000006
  !define MB_ICONHAND                 0x00000010
  !define MB_ICONQUESTION             0x00000020
  !define MB_ICONEXCLAMATION          0x00000030
  !define MB_ICONASTERISK             0x00000040
  !define MB_USERICON                 0x00000080
  !define MB_ICONWARNING              ${MB_ICONEXCLAMATION}
  !define MB_ICONERROR                ${MB_ICONHAND}
  !define MB_ICONINFORMATION          ${MB_ICONASTERISK}
  !define MB_ICONSTOP                 ${MB_ICONHAND}
  !define MB_DEFBUTTON1               0x00000000
  !define MB_DEFBUTTON2               0x00000100
  !define MB_DEFBUTTON3               0x00000200
  !define MB_DEFBUTTON4               0x00000300
  !define MB_APPLMODAL                0x00000000
  !define MB_SYSTEMMODAL              0x00001000
  !define MB_TASKMODAL                0x00002000
  !define MB_HELP                     0x00004000
  !define MB_NOFOCUS                  0x00008000
  !define MB_SETFOREGROUND            0x00010000
  !define MB_DEFAULT_DESKTOP_ONLY     0x00020000
  !define MB_TOPMOST                  0x00040000
  !define MB_RIGHT                    0x00080000
  !define MB_RTLREADING               0x00100000
  !define IDABORT    3
  !define IDCANCEL   2
  !define IDCONTINUE 11
  !define IDIGNORE   5
  !define IDNO       7
  !define IDOK       1
  !define IDRETRY    4
  !define IDTRYAGAIN 10
  !define IDYES      6
!endif
!define MessageBoxEx "!insertmacro macro_MessageBoxIndirect"
!macro macro_MessageBoxIndirect Library lpszText lpszCaption dwStyle lpszIcon ExitCode
  Push `${lpszText}`
  Push `${lpszCaption}`
  Push `${Library}`
  Push `${dwStyle}`
  Push `${lpszIcon}`
  System::Store Sr1r2r3r4r5
  System::Call 'kernel32::LoadLibrary(tr3)i.r0'
  StrCmp $0 0 +5
  System::Call '*(&l4, i$HWNDPARENT, ir0, tr5, tr4, i$2|${MB_USERICON}, ir1, i,k,i)i.r5'
  System::Call 'user32::MessageBoxIndirect(ir5) i.s'
  System::Call "kernel32::FreeLibrary(ir0)"
  System::Free $5
  StrCmp $0 0 0 +2
  Push "error"
  System::Store L
  Pop `${ExitCode}`
!macroend

Section
  ${MessageBoxEx} "$SYSDIR\shell32.dll" "lpszText" "lpszCaption" "${MB_YESNOCANCEL}" "194" $1
  ${If} $1 == ${IDYES}
      MessageBox MB_OK "Нажали кнопку `Да`"
  ${ElseIf} $1 == ${IDNO}
      MessageBox MB_OK "Нажали кнопку `Heт`"
  ${ElseIf} $1 == ${IDCANCEL}
      MessageBox MB_OK "Нажали кнопку `Отмена`"
  ${Else}
      MessageBox MB_OK "$$1 = $1"
  ${EndIf}
SectionEnd

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


Последний раз редактировалось kotkovets, 07-05-2012 в 23:14. Причина: Поправка на правильный указатель освобождения ресурсов

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

Отправлено: 14:55, 07-05-2012 | #2684


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
Элементарно.... »
Кому как. Мне с этим вряд ли разобраться.

Мне надо в сообщении типа этого просто иконку другую указать.

MessageBox MB_YESNO|MB_USERICON|MB_TOPMOST "Внимание!$\n\
$\nЕсли у вас открыты окна браузеров Internet Explorer, Mozilla Firefox,$\nOpera, Google Chrome закройте их перед продолжением установки. \
$\nВ противном случае, они будут закрыты принудительно! \
$\nЭто избавит от конфликтов интеграции программы. \
$\nПродолжить установку ${PRODUCT_NAME} ?" /SD IDYES IDYES continue IDNO close
;
close:
Abort
continue:

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


Отправлено: 15:22, 07-05-2012 | #2685


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
Кому как. Мне с этим вряд ли разобраться.
Мне надо в сообщении типа этого просто иконку другую указать. »
ну так и указываете, хоть с исполняемого файла оперы.
Код: Выделить весь код
  ${IfNot} ${Silent}
     ${MessageBoxEx} "$SYSDIR\shell32.dll" "lpszText" "lpszCaption" "${MB_YESNO}|${MB_TOPMOST}" "512" $1
  ${Else}
     StrCpy $1 ${IDYES}
  ${EndIf}
  ${If} $1 == ${IDYES}
      MessageBox MB_OK "Нажали кнопку `Да`"
  ${ElseIf} $1 == ${IDNO}
      MessageBox MB_OK "Нажали кнопку `Heт`"
  ${EndIf}

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


Отправлено: 16:28, 07-05-2012 | #2686


Аватара для wolkow70

Ветеран


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

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


Товарищи, может кто подскажет как на собственную страницу поместить просмотр текстового документа? Чего-то не получается:
Мне нужно, чтобы этот текстовый файл отображался с прокруткой.
И еще заголовок страницы поменять нужно, а то отображается от следующей страницы.

В функции вот что:

Код: Выделить весь код
Function fnCustomInit 
nsDialogs::Create 1018 
Pop $Dialog 
${NSD_CreateLabel} 0 0 100% 12u "Вы можете ознакомиться с информацией об устанавливаемой программе"
	Pop $Label
${NSD_CreateText} 0 13u 100% -13u "${pkgdir}\FlylinkDC++\readme_ru-RU.rtf"
	Pop $Text
nsDialogs::Show 
FunctionEnd

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


Последний раз редактировалось wolkow70, 10-05-2012 в 15:40.


Отправлено: 13:42, 10-05-2012 | #2687


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
как на собственную страницу поместить просмотр текстового документа? »
Вот так:
читать дальше »
Код: Выделить весь код
!include "MUI2.nsh"
!include "FileFunc.nsh"

 Page custom  Help
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_LANGUAGE "Russian"

 InstallDir "$PROGRAMFILES\LICENSE"
 OutFile "Basic.exe"

 Var TextPage
 Var Dialog
 Var Label
 
!define LoadRTF "!insertmacro macro_LoadRTFfunc"
!define __NSD_RichEdit_CLASS "RichEdit20A"
!define __NSD_RichEdit_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_AUTOHSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}
!define __NSD_RichEdit_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
!insertmacro __NSD_DefineControl RichEdit
!macro macro_LoadRTFfunc file hwnd
    Push `${file}`
    Push ${hwnd}
    System::Store Sr0r1
    SendMessage $0 1077 0 0x7fffffff
    System::Get "(i, i.R0, i.R1, i.R2) iss"
    Pop $2
    System::Call "*(i 0, i 0, k r2) i .r3"
    System::Call "user32::SendMessage(ir0, i1097, i2, ir3)i.s"
    Pop $4
    Push $4
    ClearErrors
    FileOpen $1 "$1" r
    ${Do}
        Pop $0
        ${IfThen} "$0" != "$4" ${|}${Break}${|}
        System::Call "kernel32::ReadFile(ir1, iR0, iR1, iR2, i0)"
        Push 0
        System::Call "$2"
    ${Loop}
    FileClose $1
    System::Free $3
    System::Free $2
    System::Store L
!macroend

Function Help
   nsDialogs::Create 1018
   Pop $Dialog
   ${NSD_CreateLabel} 0 0 100% 12u "Вы можете ознакомиться с информацией об устанавливаемой программе"
   Pop $Label
   ${NSD_CreateRichEdit} 0 13u 100% 100% ""
   Pop $TextPage
   ${LoadRTF} "$EXEDIR\test.rtf" $TextPage
   nsDialogs::Show
 FunctionEnd

 Section "Main"
 SectionEnd

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

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

Отправлено: 15:04, 10-05-2012 | #2688


Аватара для wolkow70

Ветеран


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

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


kotkovets, Работает вариант, но не думал, что так сложно. Исходил из предположения, что в NSIS есть механизм чтения RTF - файлов (ведь текст лицензии он прокручивает).

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


Отправлено: 15:38, 10-05-2012 | #2689


Аватара для wolkow70

Ветеран


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

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


kotkovets, Откопал на Ру-борде ваш старенький скрипт, который мне весьма помог:

http://forum.ru-board.com/topic.cgi?...&limit=1&m=1#1

Для меня полезным оказалось !insertmacro MUI_HEADER_TEXT_PAGE
Не мог понять как вставить заголовки на костомную страницу. Этот вариант сработал.

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


Отправлено: 17:25, 10-05-2012 | #2690



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




 
Переход