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

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


Цитата wolkow70:
то есть у них вместо EndIf используется NotSilent: Но при этом у них макрос несколько иной.. »
разница в том, что в скрипте AIMP используются безусловные метки, я же использую логические конструкции, в чем разница в работе - да ни в чем!Но! когда сложный и объемный скрипт в метках легко потеряться и как вывод - ошибки в скриптах. С логическими конструкциями куда лучше читабельность скрипта, и проще правки в скрипте делать. Я писал и огромные скрипты на 7000 и более строк и если использовать безусловные метки - это полный бардак, с логикой проще - я вижу начало конструкции и конец конструкции...т.е логика И, И-ИЛИ, исключающие И и т.д.
Цитата wolkow70:
Выполняются все комманды в секции "!${PRODUCT_NAME}" после ${EndIf} и до конца секции, в том числе: »
Это секция всегда выполняется, здесь пишутся только самые необходимые компоненты для нормальной работы программы.
А свою ошибку исправил:
Цитата wolkow70:
И еще проблема, во время создания файла ответов, идет распаковка файлов в директорию. Можно ли сделать только эмуляцию? »
моя оказалась однако, извиняюсь...
Код: Выделить весь код
Section "-Install"
;чтение из файла ответов путь установки и перезапись значения $INSTDIR
;Условие чтения и перезаписи:
;         ТОЛЬКО НЕ В РЕЖИМЕ ГЕНЕРАТОРА И ТОЛЬКО В ТИХОМ РЕЖИМЕ И ПРИ НАЛИЧИИ ФАЙЛА ОТВЕТОВ
  ${If} $GMODE = 0
  ${AndIf} ${Silent}
  ${AndIf} ${FileExists} "$INIFILE"
     ClearErrors
     ReadINIStr "$R0" "$INIFILE" "DIRECTORY" "ISTALLDIR"
     ${WordReplace} $R0 "%programfiles%" "$PROGRAMFILES" "+" $R1
     ${WordReplace} $R1 "%windir%" "$WINDIR" "+" $R0
     ${WordReplace} $R0 "%appdata%" "$APPDATA" "+" $R1
     ${WordReplace} $R1 "%systemdrive%" "$SysDrive" "+" $R0
     StrCpy $INSTDIR $R0
 ${EndIf} 
 ${If} $GMODE = 0 ;выполнение всегда, только не в режиме генератора
        ;--------
       /*
            тут ваш код!,  эта секция всегда должна выполняться
            команды пишем до конца конструкции ${EndIf}
     */
    ;--------
  ${EndIf}
SectionEnd

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


Последний раз редактировалось kotkovets, 24-05-2011 в 23:52.

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

Отправлено: 21:25, 24-05-2011 | #1201



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

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


Аватара для wolkow70

Ветеран


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

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


kotkovets,
Ваша идея насчет логических конструкций показала себя состоятельной. Генератор ответов стал работать как часы.


Читал Справку, где вы приводите пример:

DeleteRegValue [root_key] [subkey] [key_name]

Удаляет параметр key_name из раздела subkey ветки root_key.
Флаг ошибки будет установлен в том случае, если раздел/параметр не найден, или удаление не возможно.
DeleteRegValue HKLM "Software\My Company\My Software" "some value"

Ломаю голову над проблемой удаления определенного значения:

Например, производится регистрация типа файла:

WriteRegStr HKCU "Software\Classes\.MP3" "" "jetAudio.ASSOC.Audio"

В удалении будет комманда:

DeleteRegValue HKCU "Software\Classes\.mp3" ""

Эта комманда удалит любое значение параметра. А если произошла переассоциация назначения файла? Тогда удаление параметра нарушит работу другой программы.

Вот думаю, как удалить определенное значение? Пробовал так:
DeleteRegValue HKCU "Software\Classes\.mp3" "" "jetAudio.ASSOC.Audio"
не получается компиляция скрипта.

То есть, если значение "jetAudio.ASSOC.Audio", то нужно удалить, иначе нет.

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


Отправлено: 10:23, 25-05-2011 | #1202


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата wolkow70:
То есть, если значение "jetAudio.ASSOC.Audio", то нужно удалить, иначе нет. »
Код: Выделить весь код
ReadRegStr $0 HKCU "Software\Classes\.mp3" ""
StrCmp $0 "jetAudio.ASSOC.Audio" 0 +2
DeleteRegValue HKCU "Software\Classes\.mp3" ""

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

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

Отправлено: 10:39, 25-05-2011 | #1203


Аватара для DruOleg

Старожил


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

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


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

Привет всем. Прошу помочь в следующем.
Необходимо отредактировать стандартный конфигурационный файл php.ini:
i. Раскоментировать cgi.force_redirect и установить в 0: cgi.force_redirect = 0
ii. safe_mode = Off
iii. установить переменную memory_limit в разумное значение в зависимости от памяти на сервере, но чем больше, тем лучше.
iv. session.save_handler = files
v. magic_quotes_gpc = Off.
vi. magic_quotes_runtime = Off
vii. file_uploads = On
viii. session.auto_start = 0
ix. session.bug_compat_warn = Off
x. session.save_path = "/Sessions"
xi. extension_dir = "ext"
xii. date.timezone установить в таймзону того места где установлен сервер. Список поддерживаемых зон можно найти на http://www.php.net/manual/en/timezones.php
xiii. smtp=<smtp_domain>; smpt_port=<smtp_port> - установить адрес и порт smtp сервера для отсылки почты

Подскажите как это лучше сделать, желательно с примерами.

Последний раз редактировалось DruOleg, 26-05-2011 в 13:28. Причина: файл добавил


Отправлено: 13:26, 26-05-2011 | #1204


Аватара для wolkow70

Ветеран


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

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


Почему-то не работает у меня в деинсталляторе такая конструкция:

ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" "Progid" ""
StrCmp $0 "jetAudio.ASSOC.Audio" 0 +2
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" ""

Вроде по справке делал...

При инсталляции вносится:
WriteRegStr HKCU "Software\Classes\.MP3" "" "jetAudio.ASSOC.Audio"
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" "Progid" "jetAudio.ASSOC.Audio"

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


Отправлено: 14:06, 26-05-2011 | #1205


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата wolkow70:
ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" "Progid" "" »
"Progid" - лишнее


Цитата DruOleg:
Привет всем. Прошу помочь в следующем.
Необходимо отредактировать стандартный конфигурационный файл php.ini: »
Команда на запись следующая (не забудьте заменить ПУТЬ К ФАЙЛУ):

Код: Выделить весь код
WriteINISTr "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "ИМЯ ПАРАМЕТРА" "ЗНАЧЕНИЕ"
т.е. получится следующее:
Цитата DruOleg:
i. Раскоментировать cgi.force_redirect и установить в 0: cgi.force_redirect = 0
Раскомментировать не будем, сразу установим значение
Код: Выделить весь код
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "cgi.force_redirect" "0"
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "safe_mode" "Off"
Цитата DruOleg:
iii. установить переменную memory_limit в разумное значение в зависимости от памяти на сервере, но чем больше, тем лучше.
Сами думаю справитесь?

Код: Выделить весь код
; iv. session.save_handler = files
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "session.save_handler" "files"
 
; v. magic_quotes_gpc = Off.
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "magic_quotes_gpc" "Off"
 
; vi. magic_quotes_runtime = Off
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "magic_quotes_runtime" "Off"

; vii. file_uploads = On
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "file_uploads" "On"

; viii. session.auto_start = 0
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "session.auto_start" "0"
 
; ix. session.bug_compat_warn = Off
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "session.bug_compat_warn" "Off"
 
; x. session.save_path = "/Sessions"
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "session.save_path" "/Sessions"
 
; xi. extension_dir = "ext"
WriteINISTR "ПУТЬ К ФАЙЛУ\php.ini" "PHP" "extension_dir" "ext"
Цитата DruOleg:
xii. date.timezone установить в таймзону того места где установлен сервер. Список поддерживаемых зон можно найти на http://www.php.net/manual/en/timezones.php
xiii. smtp=<smtp_domain>; smpt_port=<smtp_port> - установить адрес и порт smtp сервера для отсылки почты
Справитесь?

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]


Последний раз редактировалось K.A.V., 26-05-2011 в 14:27.

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

Отправлено: 14:11, 26-05-2011 | #1206


Аватара для wolkow70

Ветеран


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

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


K.A.V.,


ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" "Progid" ""

Компилятор показывает ошибку в строке..

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


Отправлено: 14:28, 26-05-2011 | #1207


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата wolkow70:
ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" "Progid" ""
Компилятор показывает ошибку в строке.. »
Ну естественно, я же говорю "Progid", у вас за этой записью стоят кавычки удалите "Progid"

Код: Выделить весь код
ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.MP3\UserChoice" ""

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

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

Отправлено: 14:30, 26-05-2011 | #1208

MKN MKN вне форума

Ветеран


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

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


Подскажите пожалуйста, как решить такую задачу :

Имеется текстовый файл с кучей строк, одна из которых начинается с :

ProductCode {здесь может быть разное количество цифр}

Необходимо извлечь из этой строки этого текстового файла только : {здесь может быть разное количество цифр}

Извлечь либо в переменную, если это использовать в скрипте, либо в отдельный текстовый файлик.

Также интересен момент - возможно ли записать в переменную имя файла, находящегося рядом со скриптом (либо нет) и имеющего маску *.msi (либо какую другую) ?

Отправлено: 16:45, 26-05-2011 | #1209


Аватара для kotkovets

Ветеран


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

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


MKN
Я так понял тебе нужно циферки получить на момент компиляции скрипта? тогда нужно писать батник - запускать препроцессором NSIS и заинклюдить циферки в скрипт смотри
http://forum.oszone.net/post-1657610-1065.html
вопрос в содержимом батника, т.е как работать в командной строке с текстовыми строками...к спецам по командной строке нужно обратиться
Цитата MKN:
Также интересен момент - возможно ли записать в переменную имя файла, находящегося рядом со скриптом (либо нет) и имеющего маску *.msi (либо какую другую) ? »
аналогично.

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


Отправлено: 17:14, 26-05-2011 | #1210



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




 
Переход