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

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


Вложения
Тип файла: zip nsRestart.zip
(3.8 Kb, 30 просмотров)

Просмотрев на офф. сайте плагины которые работают с процессами, для себя посчитал наиболее удачный и даже лучший nsProcess.
Но ни один из них не умеет завершать оболочку системы, с ошибками работают в WIN7 и т.д
Решил написать свой плагин, за основу взял вышеупомянутый плагин...
В общем долго "мучил" свой проект. И вот что получилось:
---
Плагин предназначен для ANSI версии NSIS, кроссплатформенный (х86/x64), только для систем Windows NT начиная от Win2000 и выше.
Никаких дополнительных приложений, библиотек не требуется. Плагин полностью идентичен по функционалу стандартного диспетчера задач. (использованы не документированные функции Win API)
1. Поиск запущенного процесса
читать дальше »
Код: Выделить весь код
nsRestart::FindProcess "процесс.exe" 
Pop $var
Где $var принимает следующие значения:
Код: Выделить весь код
$var = 1 -> процесс не найден, не запущен
$var = 0 -> процесс запущен

2. Запись в файл *.ini список процессов с идентификаторами
читать дальше »
Код: Выделить весь код
nsRestart::ListProcess "Путь\файл.ini" 
Pop $var
Где $var принимает следующие значения:
Код: Выделить весь код
$var = error -> ошибка
$var =0 -> список успешно создан

3. Получение полного пути запущенного процесса
читать дальше »
Код: Выделить весь код
nsRestart::PathProcess "процесс.exe" 
Pop $var
Где $var принимает следующие значения:
Код: Выделить весь код
$var = 1 -> процесс не найден, не запущен
$var  -> путь к запущенному процессу

4. Получение полного пути и командной строки запущенного процесса
Если запущеный процесс не имеет аргументов командной строки, то получаем путь к процессу.
Работает эта функция только с 32-битными процессами.
Достойного рещения для 64-битных процессов пока не нашел.
читать дальше »
Код: Выделить весь код
nsRestart::CmdPathProcess "процесс.exe" 
Pop $var
Где $var принимает следующие значения:
Код: Выделить весь код
$var = 1 -> процесс не найден, не запущен
$var  -> путь к запущенному процессу + аргументы процесса

5. Перезапуск с аргументами командной строки запущенного процесса.
Перезапуск делается с задержкой в одну секунду.
Естественно кроме, специфических процессов (служб и т.д).
64-битные процессы будут перезапущены без аргументов командной строки.
Я категорически не рекомендую делать перезапуск системных процессов !!!
Во избежания потерь данных и получения "синих" экранов смерти !!!!

читать дальше »
Код: Выделить весь код
nsRestart::RestartProcess "процесс.exe" 
Pop $var
Где $var принимает следующие значения:
Код: Выделить весь код
$var  =  0  -> процесс успешно перезапущен
$var  =  1  -> процесс не запущен, не найден
$var  =  2  -> процесс невозможно завершить
$var  =  3  -> процесс завершен, но невозможно запустить

6. Завершение процесса
Я категорически не рекомендую "прибивать" системные процессы !!!
Во избежания потерь данных и получения "синих" экранов смерти !!!!

читать дальше »
Код: Выделить весь код
nsRestart::KillProcess "процесс.exe" 
Pop $var
Где $var принимает следующие значения:
Код: Выделить весь код
$var  =  0  -> процесс успешно завершен
$var  =  1  -> процесс не запущен, не найден

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


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

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

Отправлено: 18:24, 10-06-2011 | #1251



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

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


Аватара для wolkow70

Ветеран


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

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


kotkovets,
Ну Вы мне то подскажите, что у меня не так:


ReadRegStr $R0 HKCR “AudioCD\shell\play\command" "Winamp_Back"
${IfThen} $R0 != "" ${|} WriteRegStr HKCR “AudioCD\shell\play\command" "" $R0 ${|}
DeleteRegValue HKCR "AudioCD\shell\play\command" "Winamp_Back"

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


Отправлено: 10:18, 11-06-2011 | #1252


Аватара для wolkow70

Ветеран


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

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


kotkovets,

Получилось сделать удаление записи Winamp , а восстановление не получается.

ReadRegStr $0 HKCR "AudioCD\shell\play\command" ""
StrCmp $0 "$\"$PROGRAMFILES\Winamp\Winamp.exe$\" %1" 0 +2
DeleteRegValue HKCR "AudioCD\shell\play\command" ""

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


Отправлено: 20:13, 11-06-2011 | #1253


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
Получилось сделать удаление записи Winamp , а восстановление не получается.
ReadRegStr $0 HKCR "AudioCD\shell\play\command" ""
StrCmp $0 "$\"$PROGRAMFILES\Winamp\Winamp.exe$\" %1" 0 +2
DeleteRegValue HKCR "AudioCD\shell\play\command" "" »
дык тут и записи в реестр нету...)))
че тут думать, если $0 не равно "$\"$PROGRAMFILES\Winamp\Winamp.exe$\" %1",
то пропустить ниже две команды относительно оператора StrCmp, иначе выполнить две команды

Код: Выделить весь код
ReadRegStr $0 HKCR "AudioCD\shell\play\command" "" 
StrCmp $0 "$\"$PROGRAMFILES\Winamp\Winamp.exe$\" %1" 0 +3
    DeleteRegValue HKCR "AudioCD\shell\play\command" ""
    ;здесь одна команда записи в реестр...
Почитайте про безусловные переходы в справочнике, там все четко прописано,
или сделайте логическую конструкцию операторами лексиграфического сравнения.

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

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

Отправлено: 00:00, 12-06-2011 | #1254


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
дык тут и записи в реестр нету...))) »
Дак, ниже запись была такая..


ReadRegStr $R0 HKCR “AudioCD\shell\play\command" "Winamp_Back"
${IfThen} $R0 != "" ${|} WriteRegStr HKCR “AudioCD\shell\play\command" "" $R0 ${|}
DeleteRegValue HKCR "AudioCD\shell\play\command" "Winamp_Back"

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


Отправлено: 07:00, 12-06-2011 | #1255


Аватара для sawe

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


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

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


Можно ли, создать кустомную страницу используя nsDialog для отображения страницы СтартМеню,
или альтернативный метод без использования плагина StartMenu.dll.

Отправлено: 20:23, 15-06-2011 | #1256


Аватара для kotkovets

Ветеран


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

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


можно на основе этих примеров: http://nsis.sourceforge.net/Header_file_for_Listview
Естественно нужно попотеть, изучить парочку функций WinApi

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


Последний раз редактировалось kotkovets, 18-06-2011 в 22:11.


Отправлено: 22:00, 15-06-2011 | #1257


Аватара для sawe

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


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

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


А более упрощённую, в одну линию, где только будет
${NSD_CreateDirRequest} и ${NSD_CreateBrowseButton}

Отправлено: 22:49, 15-06-2011 | #1258


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


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

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


Здравствуйте! помогите пожалуйста.

необходимо реализовать диалоговое окно в котором нужно указать фаил и скопировать его в дальнейшем в путь установки.
Если уже обсуждалось извиняюсь не нашел(

сам не совсем понимаю как вызвать диалог выбора файла..
с остальным в принципе понятно

Отправлено: 14:47, 16-06-2011 | #1259


Аватара для sawe

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


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

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


Цитата funtykin:
необходимо реализовать диалоговое окно в котором нужно указать фаил и скопировать его в дальнейшем в путь установки. »
Не совсем понятен смысл этих действий, если я правильно понял, то попробуй покрути такой вариант.
Код: Выделить весь код
  !include MUI.nsh ; интерфейс MUI2.nsh не катит!  
  SetCompressor /SOLID lzma
  XPStyle on
  
  Name "MMM"
  OutFile Test_file.exe
  
  InstallDir "$PROGRAMFILES\MMM" # папка установки по умолчанию!
  InstallDirRegKey HKLM "Software\MMM" "" # получить установку папки из реестра если доступно!
  RequestExecutionLevel user

;Спец страницы!
  !define MUI_PAGE_CUSTOMFUNCTION_PRE WelcomePageSetupLinkPre
  !define MUI_PAGE_CUSTOMFUNCTION_SHOW WelcomePageSetupLinkShow
  !define MUI_WELCOMEPAGE_TITLE "Вас приветствует установщик $(^Name)"
  !define MUI_TEXT_WELCOME_INFO_TEXT "Пожалуйста закройте все работающие приложения. \
  $\nЭто обновит системные файлы без перезагрузки.$\n$\n$\nВыберите файл для вашей установки."
;Последовательность открытия страниц!
  !insertmacro MUI_PAGE_WELCOME
  !insertmacro MUI_PAGE_DIRECTORY
  !insertmacro MUI_PAGE_INSTFILES
  !insertmacro MUI_LANGUAGE Russian
   
Function WelcomePageSetupLinkPre
  var /global Filic
  StrCpy $Filic "$EXEDIR\Text.txt"

  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" 4 # счетчик увеличения!
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" 100 # ограничение размера верхней метки!
  
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Type" FileRequest # тип!
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Text" ""
; Определите фильтр, для элементов которые можно выбрать, разделять чертой | без пробелов
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Filter" "Filter=Text Files|*.txt|Programs|*.exe;*.com|All Files|*.*"
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "State" "$Filic" # состояние!
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Left" 120 # отступ слева! 
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" 100 # отступ от верха! 
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Right" 320 # длина вправо! 
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" 112 # высота строки! 
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Flags" "NOTABSTOP|FILE_EXPLORER" # флаг!
  !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "HWND" "" # высота строки!  
FunctionEnd
Function WelcomePageSetupLinkShow
  !insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd

Section -bbbbbb # секция установки файлов!
/*------- MMM ---------*/
SectionEnd

Последний раз редактировалось sawe, 16-06-2011 в 23:13.

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

Отправлено: 22:43, 16-06-2011 | #1260



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




 
Переход