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

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


Прописал создание переменной в самое начало скрипта

Var RestartExplorerSectionChecked

Section Uninstall Uninstall
SectionIn 1 RO
!insertmacro UninstallLib REGDLL NOTSHARED NOREBOOT_PROTECTED "$INSTDIR\ShellEx\XnViewShellExt.dll"
--бла---
Call un.RefreshShellIcons
;
StrCmp $RestartExplorerSectionChecked "1" 0 reboot
RMDir /r "$INSTDIR"
SetRebootFlag false
goto done
reboot:
RMDir /r /REBOOTOK "$INSTDIR"
SetRebootFlag true
done:
SetAutoClose true
SectionEnd
;
Section /o "Un.Перезагрузка Проводника Windows" RestartExplorer
StrCpy $RestartExplorerSectionChecked 1
SectionIn 1
ExecWait 'taskkill /F /IM explorer.exe' $0
DetailPrint "taskkill exit: [ $0 ]"
Sleep 500
StrCmp $0 0 0 +2
Exec "explorer.exe"
Delete "$INSTDIR\ShellEx\XnViewShellExt.dll"
RMDir /r "$INSTDIR\ShellEx\"
RMDir /r "$INSTDIR\"
SectionEnd

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

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


Отправлено: 16:52, 28-07-2011 | #1401



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

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


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

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


Contributor


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

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


Код: Выделить весь код
!insertmacro MUI_UNPAGE_FINISH
Раскомментировали?
Вот смотрите, стандартный код, который создаёт HM NIS Edit, работающий с моим описание
читать дальше »

Код: Выделить весь код
; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Моя программа"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "Моя компания, LLC."
!define PRODUCT_WEB_SITE "http://www.mycompany.com"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------
Var RestartExplorerSectionChecked
!include "MUI.nsh"


!define MUI_FINISHPAGE_REBOOTLATER_DEFAULT

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

!define MUI_FINISHPAGE_RUN "$INSTDIR\WinXP_Reg.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Запустить '${PRODUCT_NAME} ${PRODUCT_VERSION}'"
!define MUI_FINISHPAGE_RUN_NOTCHECKED
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Components page
!insertmacro MUI_PAGE_COMPONENTS
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

; Language files
!insertmacro MUI_LANGUAGE "Russian"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\Моя программа"
ShowInstDetails show
ShowUnInstDetails show


Section "MainSection" SEC01
createdirectory $INSTDIR
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  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}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd

; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} ""
!insertmacro MUI_FUNCTION_DESCRIPTION_END


Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
  Abort
FunctionEnd



Section "un.TEST"
#StrCpy $RestartExplorerSectionChecked 1
SectionEnd



Section Uninstall
MessageBox MB_YESNO|MB_ICONQUESTION "Показать?" idno +3
StrCpy $RestartExplorerSectionChecked 0
goto +2
StrCpy $RestartExplorerSectionChecked 1

StrCmp $RestartExplorerSectionChecked "1" 0 reboot
RMDir /r "$INSTDIR"
 SetRebootFlag false
 goto done
 reboot:
RMDir /r /REBOOTOK "$INSTDIR"
 SetRebootFlag true
 done:
 SetAutoClose true
 
  Delete "$INSTDIR\uninst.exe"
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SectionEnd

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


Отправлено: 17:09, 28-07-2011 | #1402


Аватара для wolkow70

Ветеран


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

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


Section "un.TEST"
#StrCpy $RestartExplorerSectionChecked 1
SectionEnd


Почему у Вас закоментирована StrCpy $RestartExplorerSectionChecked 1 ?
Впрочем, я пробовал запустить и с раскомментированной строкой. В обоих случаях финиш-страница предлагала перезагрузку.. Почему-то.. А если отказаться от "Показать, тогда без чебоксов.

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


Отправлено: 17:40, 28-07-2011 | #1403


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

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


Contributor


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

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


Цитата wolkow70:
Почему у Вас закоментирована StrCpy $RestartExplorerSectionChecked 1 ? »
Потому что я дал вам пример с вопросом "Да/Нет", эта строка просто не нужна для тестов
Там при деинсталляции задаётся вопрос "Показать?", если ответите "Да" - вам покажется страничка с выбором для перезагрузки, если нажмёте "Нет" - то не покажется

Хотите сказать не работает?
Почему тогда вот я сейчас сижу проверяю (и не раз проверял перед тем, как выложить этот пример сюда) и каждый раз у меня срабатывает, в зависимости от ответа?
Или вам выложить готовый EXE файл?

Значит у вас либо что-то в скрипте прописано, либо я не знаю...Выложите ваш скрипт полностью сюда, посмотрим

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


Отправлено: 17:47, 28-07-2011 | #1404


Аватара для wolkow70

Ветеран


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

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


Цитата K.A.V.:
Выложите ваш скрипт полностью сюда, посмотрим »
Скопируете скрипт, дайте знать, его сразу уберу. Он пока не для широкой публики.

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


Последний раз редактировалось wolkow70, 28-07-2011 в 18:37.


Отправлено: 17:58, 28-07-2011 | #1405


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

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


Contributor


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

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


Странно...
Т.к. в вашем скрипте много нестандартного, откомпилировать у себя я не могу, поэтому попробуйте заменить строки

Код: Выделить весь код
StrCmp $RestartExplorerSectionChecked "1" 0 reboot
на
Код: Выделить весь код
MessageBox MB_OK|MB_ICONINFORMATION "$$RestartExplorerSectionChecked = $RestartExplorerSectionChecked"
StrCmp $RestartExplorerSectionChecked "1" 0 reboot
В процессе удаления появится сообщение, может быть по какой-то причине переменной не назначается значение? Я даже не знаю...Если в сообщении будет пусто, значит попробуем прочитать флаг секции прямо там)

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

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

Отправлено: 18:16, 28-07-2011 | #1406


Аватара для wolkow70

Ветеран


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

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


Цитата K.A.V.:
В процессе удаления появится сообщение, может быть по какой-то причине переменной не назначается значение? »
Ну, конечно не назначается...

http://s011.radikal.ru/i316/1107/a5/568134eb59fc.png

Выяснил причину.
В Вашем примере назначение значения производилось из секции деинсталляции и в этой же секции читалось.
А у меня назначение значения идет из подсекции, а чтение в секции. В данном случае нарушается последовательность действий.
Попробовал в скрипте поднять подсекцию над секцией и сообщение показало значение "1". Все отработало.
Только выглядит это теперь в окне деинсталлятора неправильно (сначала подсекция, потом основная секция).

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


Отправлено: 19:00, 28-07-2011 | #1407


Аватара для kotkovets

Ветеран


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

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


wolkow70, проще, проще....
Код: Выделить весь код
Section /o "Un.Перезагрузка Проводника Windows"  RestartExplorer
    SectionIn 1
    SetRebootFlag true
    ExecWait 'taskkill /F /IM explorer.exe' $0
    Sleep 500
    StrCmp $0 0 0 +2
    Exec "explorer.exe"
    Delete "$INSTDIR\ShellEx\XnViewShellExt.dll"
    RMDir /r "$INSTDIR\ShellEx\"
    RMDir /r "$INSTDIR\"
SectionEnd

Section Uninstall  Uninstall
SectionIn 1 RO
;
!insertmacro UninstallLib REGDLL NOTSHARED NOREBOOT_PROTECTED     "$INSTDIR\ShellEx\XnViewShellExt.dll"
;
SetShellVarContext all
    IfRebootFlag +2
    RMDir /r "$INSTDIR"
    IfRebootFlag 0 +2
    RMDir /r /REBOOTOK "$INSTDIR"
SectionEnd
;
И не нужно объявлять пользовательскую переменную (которую обязательно сначало нужно иницилизировать в первой функции деинсталла), просто рулим флагами перезагрузки.

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


Последний раз редактировалось kotkovets, 28-07-2011 в 20:19.

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

Отправлено: 19:21, 28-07-2011 | #1408


Аватара для kotkovets

Ветеран


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

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


и все таки нашел грубую очепятку, да простите уж меня ...хвост после отладки скрипта остался,
и куча значений в стеке, довольно слабое место NSIS.
Кто пользуется DelRegKey.nsh огромная просьба заменить, во избежание неприятных последствий..
http://forum.oszone.net/showpost.php?p=1658900

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


Отправлено: 23:09, 28-07-2011 | #1409


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
wolkow70, проще, проще... »
все равно окно вылазит с чебоками. Даже , если подсекцию поднять выше секции..

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


Последний раз редактировалось wolkow70, 29-07-2011 в 10:25.


Отправлено: 10:14, 29-07-2011 | #1410



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




 
Переход