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

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

 

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


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

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


о! спасибо. надеюсь вот это http://nsis.sourceforge.net/NsisIIS_plug-in поможет.

Отправлено: 16:03, 04-10-2010 | #821



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

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

MKN MKN вне форума

Ветеран


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

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


Для определеничя установленного приложения по наличию ключа в реестре (если ключа нет - уст vc.exe , если есть - продолжается установка) делаю так, как и советовали :
Код: Выделить весь код
ReadRegStr $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{837b34e3-7c30-493c-8f6a-2b0f04e2912c}"  ""
 StrCmp $1 "" 0 Next
 SetOutPath "$TEMP"
 File "vc.exe"
 ExecWait "$TEMP\vc.exe"
 Delete "$TEMP\vc.exe"
 Next:
Это ключ в реестре есть, но vc.exe всё равно запускается, не обращая на его наличие внимания... Почему ?

Отправлено: 13:18, 06-10-2010 | #822


Аватара для kotkovets

Ветеран


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

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


MKN
Ну вы же читаете, значение ключа в реестре, по умолчанию, а значение пустое! соответственно $1=""
Код: Выделить весь код
ReadRegStr $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{837b34e3-7c30-493c-8f6a-2b0f04e2912c}"  ""
Вот так будет лучше:
Код: Выделить весь код
ReadRegStr $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{837b34e3-7c30-493c-8f6a-2b0f04e2912c}"  "DisplayName"
IfErrors 0 Next
....
В переменной $1 будет значение ключа DisplayName реестра, если VC установлен.
Советую вам для отладки скриптов пользоваться messagebox

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

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

Отправлено: 14:53, 06-10-2010 | #823


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


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

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


Совет для тех у кого название программы слишком длинное и не умещается на странице приветствия:
по умолчанию размер метки соствляет 28u, что примерно 2 с половиной строки. Естественно если название должно выводится на трех строчках, то оно не влезает. Это решается добавление в коде константы MUI_WELCOMEPAGE_TITLE_3LINES и тогда высота метки будет составлять 38u, что вполне достаточно для вывода трех строк.
пример:
Код: Выделить весь код
...
!define MUI_WELCOMEPAGE_TITLE_3LINES
!insertmacro MUI_PAGE_WELCOME ;страничка привествия
...
А вот что необходимо сделать пользователям у которых не вмещается и на три строки:
открываем файл C:\Program Files\NSIS\Contrib\Modern UI 2\Pages\Welcome.nsh (C:\Program Files\NSIS - папка куда установлен NSIS, у Вас может отличаться) предварительно сделав копию этого файла.
Находим 80-82 строки со следующим содержанием
Код: Выделить весь код
  !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE
  !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES
  !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT
и дописываем после них
Код: Выделить весь код
  !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_CUSTOM_HEIGHT
далее ищем строки 138-142 со следующим содержанием
Код: Выделить весь код
    ;Title    
    !ifndef MUI_WELCOMEPAGE_TITLE_3LINES
      !define MUI_WELCOMEPAGE_TITLE_HEIGHT 28
    !else
      !define MUI_WELCOMEPAGE_TITLE_HEIGHT 38
    !endif
и заменяем их следующим кодом:
Код: Выделить весь код
    ;Title   ;12u - высота одной строки
    !ifndef MUI_WELCOMEPAGE_TITLE_3LINES
		!ifdef MUI_WELCOMEPAGE_TITLE_CUSTOM_HEIGHT
			!define MUI_WELCOMEPAGE_TITLE_HEIGHT ${MUI_WELCOMEPAGE_TITLE_CUSTOM_HEIGHT}
		!else
			!define MUI_WELCOMEPAGE_TITLE_HEIGHT 28
		!endif
    !else
			!define MUI_WELCOMEPAGE_TITLE_HEIGHT 38
    !endif
при этом сохраняется полная совместимость со старым скриптом.

а вот пример использования если название умещается аж на пять строк:
Код: Выделить весь код
!define MUI_WELCOMEPAGE_TITLE_CUSTOM_HEIGHT 60 ;12u - высота одной строки
!insertmacro MUI_PAGE_WELCOME ;страничка привествия
Надеюсь кому-нибудь поможет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:58, 06-10-2010 | #824

MKN MKN вне форума

Ветеран


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

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


kotkovets,
Подскажи, если перед установкой необходима проверка наличия нескольких процессов, запущенной службы и нескольких установленных приложений (с запуском их установки в случае отсутствия), то каким образом в Function .onInit правильно организовать их последовательное выполнение ?
Поместить в скрипте друг за другом в пределах этой секции ?

И как быть в аналогичном случае с закрытием процессов, остановкой службы перед деинсталляцией ?

И почему при наличии !define BRANDING "Текст" - на страницах "брэнд" не отображается ?

Последний раз редактировалось MKN, 06-10-2010 в 15:35.


Отправлено: 15:19, 06-10-2010 | #825


Аватара для kotkovets

Ветеран


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

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


Цитата MKN:
И почему при наличии !define BRANDING "Текст" - на страницах "брэнд" не отображается ? »
В констакту BRANDING помещаем значение "Текст"
Код: Выделить весь код
!define BRANDING "Текст" ; 
BrandingText "${BRANDING}"
Цитата MKN:
перед установкой необходима проверка »
Код: Выделить весь код
Function .OnInit
  ;команда1
  ;команда2
FunctionEnd
Строки скрипта выполняются последовательно,сначала команда1, команда2 и т.д
Цитата MKN:
перед деинсталляцией аналогично »
Код: Выделить весь код
Function un.OnInit
FunctionEnd

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

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

Отправлено: 15:57, 06-10-2010 | #826

MKN MKN вне форума

Ветеран


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

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


Цитата kotkovets:
Ну вы же читаете, значение ключа в реестре, по умолчанию, а значение пустое! »
А разве нельзя делать определение наличия только ключа ? Без "содержимого". Этого вполне достаточно.
Если ключ существует, то - результат. Если не существует - результат. (Собственно я так всегда и делал в Setup Factory)

Последний раз редактировалось MKN, 07-10-2010 в 09:09.


Отправлено: 08:57, 07-10-2010 | #827


Аватара для kotkovets

Ветеран


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

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


Цитата MKN:
А разве нельзя делать определение наличия только ключа ? Без "содержимого" »
Можно. В скрипте реализован цикл, на поиск ключа в реестре, находим ключ- продолжаем установку, не находит - устанавливаем VC и продолжаем установку.
Код: Выделить весь код
Section
 StrCpy $0 0
 loop:
  EnumRegKey $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $0
  StrCmp $1 "" Done
  StrCmp $1 "{CB2F7EDD-9D1F-43C1-90FC-4F52EAE172A1}" 0 +3
  StrCpy $0 1
  Goto Done
  IntOp $0 $0 + 1
  Goto Loop
 Done:
  StrCmp $0 1 Next
  ;здесь пишем код если VC не установлен
 Next:
SectionEnd

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

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

Отправлено: 10:42, 07-10-2010 | #828

MKN MKN вне форума

Ветеран


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

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


kotkovets,
Возможны ли в NSIS действия с элементами окон (как в AutuIT) ? Или может есть какие либо хитрости для такой реализации ?

Отправлено: 15:03, 07-10-2010 | #829


Аватара для kotkovets

Ветеран


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

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


Цитата MKN:
Возможны ли в NSIS действия с элементами окон (как в AutuIT) ? »
Конкретно, что ты имеешь в виду?
поковыряй WinMessages.nsh и команды FindWindow , SendMessage и т.д
Вплотную этим не занимался пока...
Закрытие всех окон IE

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


Отправлено: 15:32, 07-10-2010 | #830



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




 
Переход