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

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

Ветеран


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

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


MaGoth,
Чтобы что то подсказать, нужно видеть твой код...

Отправлено: 15:12, 16-04-2019 | #2271



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

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


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


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

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


Цитата MKN:
Чтобы что то подсказать, нужно видеть твой код... »
да это не проблема, тем более что код из этой темы::

Код: Выделить весь код
!define PRODUCT_NAME "Winamp"
!define PRODUCT_VERSION "5.5.4.2147"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!include "MUI2.nsh"
!include "nsDialogs.nsh"
!include "LogicLib.nsh"

SetCompressor /SOLID lzma

!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\winamp.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
!define BRANDING "RePack by D!akov"
;\Unicode\Contrib\Graphics\Icons
Var dlg
Var Label
Var Check
Var Check1
Var Check2
Var CheckBox
Var CheckBox1
Var CheckBox2
Var Radio
Var Radio1
Var RadioButton
Var RadioButton1
Var ImageHandle
Var Image

!insertmacro MUI_PAGE_WELCOME
Page custom PageInit PageDestroy
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"

; Описание фаqла
/*VIProductVersion "${PRODUCT_VERSION}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} "CompanyName" "RePack by D!akov"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileDescription" "${PRODUCT_NAME} ${PRODUCT_VERSION}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileVersion" "${PRODUCT_VERSION}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} "LegalCopyright" "Копирайт © D!akov, 2019. Все права защищены."  */
; Конец описания файла

Name "${PRODUCT_NAME}"
Caption "Установка ${PRODUCT_NAME} ${PRODUCT_VERSION}"
UninstallCaption "Удаление ${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\Winamp"
ShowInstDetails show
ShowUnInstDetails show
BrandingText "${BRANDING}"


Function .onInit
  InitPluginsDir ;иницилизируем рабочую папку, куда будут распакованы картинки
  File "/oname=$PLUGINSDIR\nsis-r.bmp" "${NSISDIR}\Contrib\Graphics\Header\nsis-r.bmp"
  File "/oname=$PLUGINSDIR\orange-r.bmp" "${NSISDIR}\Contrib\Graphics\Header\orange-r.bmp"
FunctionEnd


Function PageInit
  !insertmacro MUI_HEADER_TEXT "Выбор типа и компонентов установки" "..."
  nsDialogs::Create 1018
  Pop $dlg
  ${NSD_CreateLabel} 0u 0u 120u 12u "Пожалуйста, сделайте выбор:"
  Pop $Label
  ;;
  ${NSD_CreateRadioButton} 0u 14u 150u 12u "Установка Winamp 5.623 Build 3199 Pro"
  Pop $RadioButton
  ${NSD_SetState} $RadioButton 1            ;делаем радиобутон отмеченным
  ${NSD_OnClick} $RadioButton RadioButton   ;событие отметки радиобутона
  ;;
  ${NSD_CreateRadioButton} 0u 28u 160u 12u "Распаковка Winamp 5.6.2.3199 Pro Full Final"
  Pop $RadioButton1
  ${NSD_OnClick} $RadioButton1 RadioButton1 ;событие отметки радиобутона
  ;;
  ${NSD_CreateCheckBox} 0u 100u 120u 12u "Ярлык(и) на рабочем столе"
  Pop $CheckBox
  ${NSD_SetState} $CheckBox 1
  ;;
  ${NSD_CreateCheckBox} 0u 115u 100u 12u "Ярлыки в меню «Пуск»"
  Pop $CheckBox1
  ${NSD_SetState} $CheckBox1 1
  ;;;;;;;;;;
   ${NSD_CreateCheckBox} 150u 115u 140u 12u "Установить набор скинов"
  Pop $CheckBox2
  ${NSD_SetState} $CheckBox2 1
  ;;;;;;;;
  ${NSD_CreateBitmap} 180u 0u 100% 100% "" ;создаем контрол для картинок
  Pop $Image
  ${NSD_SetImage} $Image "$PLUGINSDIR\nsis-r.bmp" $ImageHandle ;загружаем картинку
  nsDialogs::Show
  ${NSD_FreeImage} $ImageHandle ;удаляем картинку
FunctionEnd

Function switching
  ${NSD_GetState} $RadioButton $Radio ;снимаем статус отметки радиобуттона
  ${If} $Radio == 1                   ;если радибуттон "Установка обычной версии" отмеченный то...
      EnableWindow $CheckBox 1
      EnableWindow $CheckBox1 1
      EnableWindow $CheckBox2 1
      ${NSD_SetState} $CheckBox 1
      ${NSD_SetState} $CheckBox1 1
      ${NSD_SetState} $CheckBox2 1
      ${NSD_FreeImage} $ImageHandle                   ;удаляем картинку
      ${NSD_SetImage} $Image "$PLUGINSDIR\nsis-r.bmp" $ImageHandle  ;загружаем картинку
  ${Else}                          ;если радибуттон "Установка обычной версии" неотмеченный то...
      EnableWindow $CheckBox 0     ;затеняем чекбокс
      EnableWindow $CheckBox1 0    ;затеняем чекбокс
      EnableWindow $CheckBox2 0    ;затеняем чекбокс
      ${NSD_SetState} $CheckBox 0  ;делаем чекбокс неотмеченным
      ${NSD_SetState} $CheckBox1 0 ;делаем чекбокс неотмеченным
      ${NSD_SetState} $CheckBox2 0
      ${NSD_FreeImage} $ImageHandle               ;удаляем картинку
      ${NSD_SetImage} $Image "$PLUGINSDIR\orange-r.bmp" $ImageHandle  ;загружаем картинку
  ${EndIf}
FunctionEnd

 ;функции события отметки радиобуттонов
Function RadioButton
  Pop $RadioButton
  Call switching
FunctionEnd
Function RadioButton1
  Pop $RadioButton1
  Call switching
FunctionEnd

Function PageDestroy
  ;функция которая выполняется при закрытии кастомной станички
  ;снимаем статусы отметок радиобуттонов и чекбоксов
  ${NSD_GetState} $RadioButton $Radio
  ${NSD_GetState} $RadioButton1 $Radio1
  ${NSD_GetState} $CheckBox $Check
  ${NSD_GetState} $CheckBox1 $Check1
  ${NSD_GetState} $CheckBox2 $Check2
FunctionEnd


Section "-Обычная установка"
  ${If} $Radio == 1
  SetOutPath "$INSTDIR\Winamp"
File /r "C:\Winamp\*.*"
 SetShellVarContext all
  /*CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Nullsoft" "" ""
  WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Nullsoft\Winamp" "regname" "D!akov"
  WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Nullsoft\Winamp" "regkey" "~AYKPaDABBRfbBTiZGjQO"
  ExecWait '$INSTDIR\winamp.exe /REG=LCAD'*/
  WriteUninstaller "$INSTDIR\uninst.exe"
  /*CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$INSTDIR\winamp.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "${PRODUCT_VERSION}"
Delete "$INSTDIR\Winamp"
      ;;;
      ;тут пишем все команды при обычной установке*/
      ;DetailPrint "Обычная установка"
      ;;;
  ${EndIf}
SectionEnd

Section "-Распаковка портативной версии"
  ${If} $Radio1 == 1
  ;;SetOutPath "$INSTDIR"
  ;;File /r "D:\Winamp\WinampPortable\*.*"
   SetShellVarContext all
      ;тут пишем все команды при распаковки портативной версии
      MessageBox MB_OK "Портативная версия распакована в текущую папку."
      ;;;
  ${EndIf}
SectionEnd

Section "-Ярлыки"
  ${If} $Check == 1
 CreateShortCut "$Desktop\${PRODUCT_NAME}.lnk" "$INSTDIR\winamp.exe"
      ;;;
      DetailPrint "Ярлык на рабочий стол"
      ;;;

  ${EndIf}
  ${If} $Check1 == 1
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\winamp.exe"
      ;;;
      DetailPrint "Ярлык в меню Пуск"
      ;;;
      ${EndIf}
SectionEnd

  
Section "-Скины"
   ${If} $Check2 == 1
;;SetOutPath "$PROGRAMFILES\Winamp\Winamp\Skins"
;;File /r "C:\Winamp\Skins\*.*"
SetShellVarContext all
      ;;;
  ${EndIf}
SectionEnd

Section Uninstall
SectionEnd

Зы, Мой НСИС Юникодный 2.50, если что..

Отправлено: 21:11, 16-04-2019 | #2272


Аватара для Flix

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


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

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


Цитата MaGoth:
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit »
MaGoth, в сценарии объявлена функция с именем myGuiInit, но сама функция отсутствует.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:57, 16-04-2019 | #2273


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


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

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


Цитата Flix:
в сценарии объявлена функция с именем myGuiInit, но сама функция отсутствует. »
Мде, чет прошляпил я этот момент.. :/
Интересно а в той функции было что-нить полезное, и почему ее нет в коде.. автор зажал?


Вопрос из другой оперы.
Есть плагин для выдирания срц из файла CRCCheck.dll, все бы хорошо, но он выдает в 10м виде значение, а как бы его дернуть в 16м?
Для примера накидал скриптик, который выдал следующее значение для файла: CRC: 3164762915 в мессага бокс и текстовку, а оригинальный файл: CRC32: bca27323.

Какой-нить конвертер с 10го в 16е существует ?!

Отправлено: 01:08, 17-04-2019 | #2274

MKN MKN вне форума

Ветеран


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

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


Цитата MaGoth:
конвертер с 10го в 16е существует ?! »
Код: Выделить весь код
OutFile "Test_DecToHex.exe"
; CRC: 3164762915 -> CRC32: bca27323
Section
StrCpy $1 "3164762915"
IntFmt $1 "%08x" $1
MessageBox MB_OK "$1"
SectionEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:17, 17-04-2019 | #2275


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


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

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


А почему нельзя здесь просто взять и выложить конкретные примеры команд для изменения тех же хост-файлов? Я вижу здесь какое-то маниакальное желание автора справочника, всех заставить его изучать. Почему для внесения изменений в хост-файл, в сети выложено множество готовых батников и конкретные описания команд для тех или иных операций? И ни кому в голову не приходит посылать пользователей изучать справочники и пособия, на изучение которых требуется продолжительное время, а решить вопрос требуется непосредственно в данный момент. Конечно вам большая благодарность за данный справочник, но не всем дано так вот сходу в нем разобраться.
Хочу уточнить. Мне, например, как полагаю и многим, нужен шаблон (пример) скриптовой команды для внесения новой строки в хост-файл. Кроме того, необходимо, чтобы строка не прописывалась повторно (не дублировалась) в случае, если в хосте уже имеется аналогичная. А также нужен второй шаблон скриптовой команды, но только для удаления необходимой строки из хост-файла. В батниках, примеры всех этих команд, давно уже выложены в сети. Но к сожалению до сих пор нет конвертера, работающего по аналогии с Reg2Nsis и преобразующего батники в команды NSIS-скриптов. И указанные скриптовые команды, нужны людям довольно часто, при создании тех же репаков или портативок в формате Portable.paf. Почему выложены примеры команд по созданию разных банеров, заставок и прочего, а реально необходимых примеров не найти?

Последний раз редактировалось heloy2010, 15-05-2019 в 06:31.


Отправлено: 17:35, 14-05-2019 | #2276


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


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

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


Прив народ..

Мелкая проблемка есть такой батник::

Код: Выделить весь код
@echo off
sdbinst.exe -n "GOG.com Gothic"
sdbinst.exe -n "GOG.com Gothic 2"
Вопрос как его перегнать в скрипт Нсиськи ??

Накатал такие строчки:
Код: Выделить весь код
ExecWait "$WINDIR\System32\sdbinst.exe -n 'GOG.com Gothic'"
ExecWait "$WINDIR\SysWOW64\sdbinst.exe -n 'GOG.com Gothic'"
Но что-то не работает.. в кавычках и/или путях грабли ??

зы.. отбой разобрался..

Но, другой вопрос нрисовался, график карты нормально определять можно чем нить через скрипт помимо левых костылей на всяких *.длл ?!

Последний раз редактировалось MaGoth, 12-07-2019 в 18:08.


Отправлено: 15:48, 12-07-2019 | #2277


Аватара для Flix

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


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

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


Цитата MaGoth:
график карты нормально определять можно чем нить через скрипт помимо левых костылей на всяких *.длл ?! »
На ОС Windows считывать необходимые данные прямо из реестра: ссылка.

Отправлено: 12:56, 13-07-2019 | #2278


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


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

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


Цитата Flix:
На ОС Windows считывать необходимые данные прямо из реестра: ссылка. »
Спасиб, но нет, это вообще дичь какая-то и больше ориентированна на определение драйверов, а не самого девайса..

Нашел немного иной путь, но там тоже своих грабель хватает, впрочем бум разбираться..

Отправлено: 12:15, 14-07-2019 | #2279


Аватара для Flix

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


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

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


Цитата MaGoth:
это вообще дичь какая-то и больше ориентированна на определение драйверов, а не самого девайса.. »
Почему дичь? Да, там стоит вопрос про определение версии драйвера, но что мешает Вам аналогичным способом получить информацию о видеокарте (имя видеоадаптера, размер памяти и т.д.)? И заметьте, это без "костылей" и "всяких *.длл".

Отправлено: 13:07, 14-07-2019 | #2280



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




 
Переход