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

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

 

Аватара для hb860

Идиот


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

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


kotkovets, я обычно в секции задаю значение переменной
выглядит примерно так
Код: Выделить весь код
section "Покажите мне следующую страницу"
strcpy $R0 "1"
sectionend
ну и далее по предложенному выше сценарию

-------
http://feeds.feedburner.com/Winreviewru.1.gif
Горячие клавиши Windows 8 | Все программы, которые я разработал| Гаджеты для Windows 8


Отправлено: 16:32, 21-02-2011 | #961



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

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


Аватара для kotkovets

Ветеран


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

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


hb860, Можно и так, или через стек, назначать метку отмеченной секции
но мне на макросах, как то удобней, особенно в сложных скриптах.
На то и NSIS - вариантов реализации предостаточно.

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


Отправлено: 17:57, 21-02-2011 | #962


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


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

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


Кто нибудь сталкивался с проблемой создания нестандартных диалогов (nsDialog) на нестандартном интерфейсе (Ultra ModernUI)
Такая вот бяка с фоном получается

Отправлено: 21:31, 27-02-2011 | #963


Аватара для kotkovets

Ветеран


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

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


jackrv, Цвет выделения текста при открытии странички?
Вообще цвет контролов можно менять так:
SetCtlColors [хэндл контрола] [цвет текста] [цвет фона]
Код: Выделить весь код
SetCtlColors $Text `0x0000FF` `0xFFFFFF`
цвет текста - синий | цвет фона - белый

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


Отправлено: 22:43, 27-02-2011 | #964


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


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

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


Скорее всего ты меня не понял..
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер.
Т.е. нужно заменить #EAEBEC на #566978
Правда цвета на фоне форумного фона не очень видно %)

Отправлено: 22:54, 27-02-2011 | #965


Аватара для kotkovets

Ветеран


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

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


jackrv, Я все прекрасно понял, вот примерчик:
читать дальше »
Код: Выделить весь код
Function fnCustomInit 
  nsDialogs::Create 1044 
    Pop $Dialog
	SetCtlColors $Dialog `0x0000FF` `0x00FF00` 
    ${NSD_CreateLabel} 15u 5u 100u 10u "Это надпись" 
    Pop $Label
	SetCtlColors $Label `0x0000FF` `0x00FF00` 
    ${NSD_CreateText} 15u 20u 90% 15u "Здесь можно печатать..." 
    Pop $Text
	SetCtlColors $Text `0x0000FF` `0xFFFFFF` 
    ${NSD_CreateCheckBox} 15u 45u 100u 10u "Можно отметить флажком" 
    Pop $CheckBox
	SetCtlColors $CheckBox `0x0000FF` `0x00FF00` 
  nsDialogs::Show 
FunctionEnd

Цитата jackrv:
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер »
Это картинка фоновая - однозначно, с какой кстати фон своей странички ни с того - должен быть под фон картинки?
Вам нужно узнать общий фон картинки - в шеснадцатиричном виде и закрасить фон.
Это примерно по скрину - 0x566978

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


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

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

Отправлено: 22:59, 27-02-2011 | #966


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


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

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


kotkovets, вы были правы.. Классно когда тебя понимают даже тогда когда ты сам запутался)
Вопрос второй, у меня есть кастомная страница и страница UMUI_PAGE_ABORT. Так вот если посреди инсталяции нажать отмену, то перед вызовом UMUI_PAGE_ABORT открывается та самая кастомная страница, что собственно говоря не есть желанным..
Где мог быть косяк?)

Отправлено: 23:29, 27-02-2011 | #967


Аватара для kotkovets

Ветеран


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

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


jackrv, Трудно сказать вслепую, скрипт приведите...
хотя я Ultra ModernUI не пользуюсь и без этого фейса позволяю себе творить почти любую чертовщину

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


Отправлено: 23:38, 27-02-2011 | #968


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


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

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


Вот почти весь код (за исключением инклюдов..)
Правда, не думаю что он покажется вам легкочитаемым..
читать дальше »
Код: Выделить весь код
; Все это добро накалякал jackrv[jackrv.org.ua].
; Версия компилятора: NSIS-2.46[ANSI]
; Используются плагины:
; - UltraModernUI[NSISSheild]
;	- DotNetVer.nsh
; - Inetc
; При редактировании первое на что обратите внимание, так это строка [19] Константа {PRODUCT_PKG_DIR}
; Важно указать дирекотрию с исходными файлами продукта

; Следующие константы желательно подстроить под свой проект
  !define PRODUCT_NAME              "Etach Server"                                                           ; Имя проекта
  !define PRODUCT_VERSION           "3.1.1"                                                           ; Текущая версия
  !define PRODUCT_FILENAME          "Atott.Chat.Server.Manage.exe"                                    ; Имя исполняемого файла
  !define PRODUCT_UNFILENAME        "uninst.exe"                                                      ; Имя файла деинсталяции
  !define PRODUCT_PUBLISHER         "Etach Group"                                                     ; Компания
  !define PRODUCT_WEB_SITE          "http://etach.ru"                                                 ; Офф.Сайт
  !define PRODUCT_ICOFILE           "${NSISDIR}\project\EtachClient\Orange128.ico"                     ; Иконка установцика
  !define PRODUCT_UNICOFILE         "${NSISDIR}\project\EtachClient\Silver128.ico"                    ; Иконка деинсталятора
  !define PRODUCT_PKG_DIR           "D:\Applications\NSIS\project\EtachClient\source"                 ; Путь к проекту на ЖД
  !define URLDownloads              "http://etach.ru/Downloads/"                                      ; Адрес папки загрузки
  !define FileDotNet                "dotNetFx40_Full_x86_x64.exe"                                     ; Имя инсталятора .Net FrameWork 4.0
  !define URLEtachClient            ""                                                                ; Имя файла инсталятора клиента
  !define URLEtachServer            ""                                                                ; Имя файла инсталятора сервера

; Нижеследующие константы изменять не нужно
  !define PRODUCT_DIR_REGKEY        "Software\${PRODUCT_FILENAME}"                                    ; Ветвь реестра с доп.данными инсталятора
  !define PRODUCT_UNKEY             "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
  !define /date                     NOW "%d.%m.%Y"                                                    ; Формируем сегодняшнюю дату
  !define URLDotNet                 ${URLDownloads}${FileDotNet}

; Кое-какие переменные
  Var Dialog
  Var Label
  Var Text
  Var CheckBox
; --------------------------------------------------------------------------------------------------
; Установка компрессора
  SetCompress force
  SetCompressor /SOLID lzma
; --------------------------------------------------------------------------------------------------
; Основные настройки инсталятора
  Name                "${PRODUCT_NAME}"                                                               ; Имя програмы
  Caption             "$(LANG_CAPTION) ${PRODUCT_NAME} ${PRODUCT_VERSION}"                            ; Заголовок инсталятора
  BrandingText        "${PRODUCT_PUBLISHER}"                                                          ; Текст описания (на полоске, в низу)
  OutFile             "${PRODUCT_NAME}-${PRODUCT_VERSION}_build-${NOW}.exe"                           ; Имя файла после компиляции
  InstallDir          "$PROGRAMFILES\${PRODUCT_NAME}"                                                 ; Директория установки по-умолчанию
  ShowInstDetails     hide                                                                            ; Не отображать список копируемых файлов
  ShowUninstDetails   hide                                                                            ; Не отображать список удаляемых файлов

; Производим подключение вспомагательных скриптов
  !include "DotNetVer.nsh"                                                                            ; Проверка установленного .Net
  !include "UMUI.nsh"                                                                                 ; Подключаем стильный дизайн
  !include "LogicLib.nsh"                                                                             ; Подключаем разширеную логику
  !include "nsDialogs.nsh"                                                                            ; Подключаем дополнительный редактор окон
; !include "macro.nsi"                                                                                ; Мои макросы

; Настройки интерфейса
  ; Общие настройки
    !define MUI_ABORTWARNING                                                                          ; Подтвержление при выходе
    !define MUI_COMPONENTSPAGE_NODESC                                                                 ; MUI без описания (большая область для компонентов)
    !define UMUI_USE_INSTALLOPTIONSEX
    !define UMUI_PARAMS_REGISTRY_ROOT           HKCU                                                  ; Ветка реестра для записи доп.данных инсталятора
    !define UMUI_PARAMS_REGISTRY_KEY            "${PRODUCT_DIR_REGKEY}"                               ; Путь в реестре для доп.данных
    !define UMUI_INSTALLDIR_REGISTRY_VALUENAME  "InstallPath"                                         ; Имя переменной, хрянящей путь к инсталяции
    !define UMUI_LANGUAGE_REGISTRY_VALUENAME    "Language"                                            ; Имя переменной, зранящей язык установки
    !define UMUI_USE_ALTERNATE_PAGE
    !define UMUI_SKIN                           "NSISShield"
  ; Установки иконок файлов
    !define MUI_ICON                            "${PRODUCT_ICOFILE}"                                  ; Иконка инсталятора
    !define MUI_UNICON                          "${PRODUCT_UNICOFILE}"                                ; Иконка деинсталятора
; --------------------------------------------------------------------------------------------------
; Настройка страниц при установке
  ; Основные страницы
    !insertmacro UMUI_PAGE_MULTILANGUAGE                                                              ; Страница выбора языка
;   !insertmacro MUI_PAGE_LICENSE               "$(License)"                                          ; Страницв лицензии
    !insertmacro MUI_PAGE_DIRECTORY                                                                   ; Страница выбора директорий
    Page custom fnCustomInit fnCustomDestroy
    !insertmacro UMUI_PAGE_ADDITIONALTASKS addtasks_function
    ; Страница отображения сведений об установке
      !define UMUI_CONFIRMPAGE_TEXTBOX confirm_function
      !insertmacro UMUI_PAGE_CONFIRM                                                                  ; Страница сведений утановки
    !insertmacro MUI_PAGE_INSTFILES                                                                   ; Страница выполнения скрипта
  ; Страница завершения установки
    !define MUI_FINISHPAGE_NOAUTOCLOSE                                                                ; Не закрывать автоматичесски
    ; Чекбоксы на финишной странице, запуск программы и офф.сайт
      !define MUI_FINISHPAGE_RUN                RunProgram                                            ; Путь к программе
      !define MUI_FINISHPAGE_RUN_TEXT           "$(LANG_FINISHRUN)"                                   ; Текст на чекбоксе запуска
      !define MUI_FINISHPAGE_RUN_CHECKED                                                              ; По-умолчанию выбрано
      !define MUI_FINISHPAGE_LINK               "$(LANG_FINISHURL)"                                   ; Текст ссылки
      !define MUI_FINISHPAGE_LINK_LOCATION      "${PRODUCT_WEB_SITE}"                                 ; Адрес офф.сайта
    !insertmacro MUI_PAGE_FINISH                                                                      ; Финишная страница
    !insertmacro UMUI_PAGE_ABORT
; --------------------------------------------------------------------------------------------------
; Настройка деинсталятора
  !insertmacro MUI_UNPAGE_INSTFILES                                                                   ; Страница хода удаления
; --------------------------------------------------------------------------------------------------
; Настройка локализации
  !insertmacro MUI_LANGUAGE "Russian"                                                                 ; Подключаем Русс.яз.
  !insertmacro MUI_LANGUAGE "English"                                                                 ; Подключаем Англ.яз.
  !insertmacro MUI_LANGUAGE "Ukrainian"                                                               ; Подключаем Укр.яз.
  ; Так-же подключаем файлы определений/переопределений языковых строк
    !include "Language\ru.nsh"
    !include "Language\en.nsh"
    !include "Language\ua.nsh"
; --------------------------------------------------------------------------------------------------
; Макросы
  !macro DotNetInstall
    !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DotNet
      inetc::get /CAPTION "Загрузка .NET Framework 4.0" /CANCELTEXT "Отмена" /HEADER "Загрузка .Net Framework 4.0" /POPUP "${URLDotNet}" ${URLDotNet} "C:\dotnetfx.exe" /END
      Pop $0
      StrCmp $0 "OK" InstDotNet
        Delete "C:\dotnetfx.exe"
        Abort "Установка отменена."
      InstDotNet:
        ExecWait "C:\dotnetfx.exe"
        Delete "C:\dotnetfx.exe"
    !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  !macroend
; --------------------------------------------------------------------------------------------------
; Функция инициализации
  Function .onInit
    !insertmacro UMUI_MULTILANG_GET                                                                   ; Выбор языка установки
    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "login.ini"
;   !insertmacro CheckDotNet                                                                          ; Проверка версии .Net
  FunctionEnd

; Функция старта деинсталяции
  Function un.onInit
    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(LANG_unOnInit)" IDYES +2
    Abort
  FunctionEnd

  Function addtasks_function
    ${If} $R0 == ""
      MessageBox MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON2 "Имя администратора будет admin$\nВы можете вернуться на предыдущую страницу и указать нужный вам логин!"
    ${EndIf}
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL "$(LANG_ADDITIONAL_ICONS)"
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK DESKTOP 1 "$(LANG_DESKTOP_ICON)"
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK QUICK_LAUNCH 0 "$(LANG_QUICK_LAUNCH_ICON)"
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_EMPTYLINE
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL "$(LANG_ADDITIONAL_DotNet)"
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK DotNet 0 "$(LANG_DotNet_ICON)"
  FunctionEnd

; Функция отображения инфы об установке
  Function confirm_function
    StrCpy $R1 0
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(UMUI_TEXT_INSTCONFIRM_TEXTBOX_DESTINATION_LOCATION)"
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "    - $INSTDIR"
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""

    !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP
      StrCpy $R1 1
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(LANG_ADD_ICONS)"
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "    - $(LANG_ADD_ICONS_0)"
    !insertmacro UMUI_ADDITIONALTASKS_ENDIF

    !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED QUICK_LAUNCH
      ${If} $R1 = 0
        !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(LANG_ADD_ICONS)"
        StrCpy $R1 1
      ${EndIf}
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "    - $(LANG_ADD_ICONS_1)"
    !insertmacro UMUI_ADDITIONALTASKS_ENDIF
    ${If} $R1 = 1
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""
    ${EndIf}

    !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DotNet
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(LANG_ADD_PRGM)"
        ${If} ${HasDotNet4.0}
          MessageBox MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON2 "$(LANG_CheckDotNet1)"
        ${EndIf}
        !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "    - .Net Framework 4.0"
        Goto End
    !insertmacro UMUI_ADDITIONALTASKS_ENDIF
    ${If} ${HasDotNet4.0}
    ${Else}
      MessageBox MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON2 "$(LANG_CheckDotNet0)"
    ${EndIf}
    
    ${If} $R0 == ""
      StrCpy $R0 "admin"
    ${EndIf}
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "Админпанель"
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "    - Логин суперпользователя: $R0"
    ${If} $R9 = 1
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "    - Будет создан файл run.bat"
    ${EndIf}
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""
    End:
  FunctionEnd
  
  Function RunProgram
    Exec "$INSTDIR\${PRODUCT_FILENAME} admin:$R0"
  FunctionEnd
  
  Function fnCustomInit
    nsDialogs::Create 1018
    Pop $Dialog
    SetCtlColors $Dialog "0x000000" "0x566978"
    ${NSD_CreateLabel} 5u 5u 100% 30u "Перед установкой вам необходимо указать логин будущего суперадминистратора.$\nЭтот пользователь будет иметь наивысшиее права, имейте это в виду!"
    Pop $Label
    SetCtlColors $Label "0xB4D3EA" "0x566978"
    ${NSD_CreateLabel} 25u 40u 150u 10u "Логин будущего суперадминистратора: "
    Pop $Label
    SetCtlColors $Label "0xB4D3EA" "0x566978"
    ${NSD_CreateText} 180u 38u 100u 15u ""
    Pop $Text
    SetCtlColors $Text "0xFFFFFF" "0x566978"
    ${NSD_CreateLabel} 5u 60u 100% 20u "По необходимости можно создать bat-файл$\nВ него будут занесены необходимые параметры для запуска сервера"
    Pop $Label
    SetCtlColors $Label "0xB4D3EA" "0x566978"
    ${NSD_CreateCheckBox} 10u 80u 100u 10u "Создать bat-файл"
    Pop $CheckBox
    SetCtlColors $CheckBox "0xB4D3EA" "0x566978"
    ${NSD_CreateLabel} 5u 100u 120% 30u "Важно!$\n  Сервер изначально не настроен, т.е. не содержит никаких данных абсолютно!$\n  Поэтому при первом входе вам нужно зарегистрироваться!"
    Pop $Label
    SetCtlColors $Label "0xFF9900" "0x566978"
    nsDialogs::Show
  FunctionEnd

  Function fnCustomDestroy
    ${NSD_GetText} $Text $R0
    ${NSD_GetState} $CheckBox $R9
  FunctionEnd
  
  Function WriteToFile
    Exch $0 ;file to write to
    Exch
    Exch $1 ;text to write

    FileOpen $0 $0 a #open file
     FileSeek $0 0 END #go to end
     FileWrite $0 $1 #write to file
    FileClose $0

    Pop $1
    Pop $0
  FunctionEnd

  !macro WriteToFile String File
    Push "${String}"
    Push "${File}"
    Call WriteToFile
  !macroend
  !define WriteToFile "!insertmacro WriteToFile"
; --------------------------------------------------------------------------------------------------
; Секции установки (компоненты)
  Section "!$(LANG_SECETACH)" SEC01
    !insertmacro DotNetInstall
    SetOutPath        "$INSTDIR"                                                                      ; Меняем паку распаковки
    File              "source\Atott.Core.dll"
    File              "source\Atott.Chat.Server.Manage.exe.config"
    File              "source\Atott.Chat.Server.Manage.exe"
    File              "source\Atott.Chat.Server.Core.dll"
    File              "source\Atott.Chat.Core.dll"
    File              "source\Atott.Chat.Client.Plugin.dll"
    File              "source\Atott.Chat.Client.Controls.dll"
    WriteUninstaller  "$INSTDIR\${PRODUCT_UNFILENAME}"                                                ; Создаем деинсталятор
    WriteIniStr       "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"   ; Создаем ярлык офф.сайта
    ; Ярлык на рабочем столе
        !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP
          CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_FILENAME}" "admin:$R0" "$INSTDIR\${PRODUCT_UNFILENAME}" 0 SW_SHOWNORMAL ALT|CONTROL|SHIFT|F4  "$(LANG_ShRUN) $(^Name)"
        !insertmacro UMUI_ADDITIONALTASKS_ENDIF
        
        !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED QUICK_LAUNCH
          CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_FILENAME}" "admin:$R0" "$INSTDIR\${PRODUCT_UNFILENAME}" 0 SW_SHOWNORMAL ALT|CONTROL|SHIFT|F4  "$(LANG_ShRUN) $(^Name)"
        !insertmacro UMUI_ADDITIONALTASKS_ENDIF
    ; Создание файла Run.bat
      ${If} $R9 == 1
        ${WriteToFile} "Atott.Chat.Server.Manage.exe admin:$R0" "$INSTDIR\Run.bat"
      ${EndIf}
    ; Регистрация деинсталятора
      WriteRegStr HKCU "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${PRODUCT_FILENAME}"
      WriteRegStr HKLM "${PRODUCT_UNKEY}" "DisplayName"      "$(^Name)"
      WriteRegStr HKLM "${PRODUCT_UNKEY}" "UninstallString"  "$INSTDIR\${PRODUCT_UNFILENAME}"
      WriteRegStr HKLM "${PRODUCT_UNKEY}" "DisplayIcon"      "$INSTDIR\${PRODUCT_FILENAME}"
      WriteRegStr HKLM "${PRODUCT_UNKEY}" "DisplayVersion"   "${PRODUCT_VERSION}"
      WriteRegStr HKLM "${PRODUCT_UNKEY}" "URLInfoAbout"     "${PRODUCT_WEB_SITE}"
      WriteRegStr HKLM "${PRODUCT_UNKEY}" "Publisher"        "${PRODUCT_PUBLISHER}"
  SectionEnd
; --------------------------------------------------------------------------------------------------
; Секции деинсталятора
  Section Uninstall
    Delete "$INSTDIR\*.*"
    Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
    RMDir /r "$INSTDIR"

    DeleteRegKey HKLM "${PRODUCT_UNKEY}"
    DeleteRegKey HKCU "${PRODUCT_DIR_REGKEY}"
  SectionEnd
; --------------------------------------------------------------------------------------------------
; Информация о файле (о том что после компиляции появляется)
  VIProductVersion ${PRODUCT_VERSION}.0
  VIAddVersionKey /LANG=${LANG_RUSSIAN} ProductName     "${PRODUCT_NAME}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} ProductVersion  "${PRODUCT_VERSION}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} CompanyName     "${PRODUCT_PUBLISHER}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} CompanyWebsite  "${PRODUCT_WEB_SITE}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} FileVersion     "${PRODUCT_VERSION}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} FileDescription "${PRODUCT_PUBLISHER}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} LegalCopyright  "Copyright © ${PRODUCT_PUBLISHER}"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} Comments        "Windows XP, Vista, Win7 $\t .Net Framework 4.0"
  VIAddVersionKey /LANG=${LANG_RUSSIAN} OriginalFilename "${PRODUCT_FILENAME}"

Отправлено: 23:45, 27-02-2011 | #969


Аватара для kotkovets

Ветеран


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

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


Хм.. чтобы инсценировать ситуацию, нужен Ultra ModernUI, не качал.
Хотя вроде бы все верно, видно не совсем дружат совместно Ultra ModernUI и стандартный MUI.
!define MUI_ABORTWARNING - cтандарт MUI, по идее должно быть - !define UMUI_ABORTWARNING (когда нажимается кнопка отмена, вызывается мессага)
В таких случаях рекомендую создать простой отладочный скриптик со своей страничкой и последовательно добавлять странички, функции - до появления глюка и отслеживать значение используемых переменных в разные моменты, через DetailPrint или MessageBox.

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

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

Отправлено: 00:14, 28-02-2011 | #970



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




 
Переход