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

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


SamLab, посмотрите в хедере x64.nsh - макросы ${DisableX64FSRedirection} и ${EnableX64FSRedirection}
переключение направления - ваш случай.
Paval, Смотрите макрос #1985

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

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

Отправлено: 01:19, 19-01-2012 | #2221



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

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


Аватара для wolkow70

Ветеран


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

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


kotkovets,

Не подскажите как создать пустой ini-файл.
Пробую так :

Fileopen $1 "$INSTDIR\aida64.assetprofile.ini" w
FileClose $1

После компиляции выводится:
comment contains line-continuation character, following line will be ignored (D:\NSIS\Aida64BE.nsi:177)

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


Отправлено: 16:37, 20-01-2012 | #2222


Аватара для kotkovets

Ветеран


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

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


Цитата wolkow70:
Не подскажите как создать пустой ini-файл. »
Можно и так:
Код: Выделить весь код
Writeinistr "$EXEDIR\assetprofile.ini" " " "" ""
Цитата wolkow70:
После компиляции выводится:
comment contains line-continuation character, following line will be ignored (D:\NSIS\Aida64BE.nsi:177) »
так покажите 177 строку
---
у меня никаких проблем с созданием файла двумя способами

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

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

Отправлено: 18:26, 20-01-2012 | #2223


Аватара для wolkow70

Ветеран


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

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


Цитата kotkovets:
так покажите 177 строку »
В конструкции
Fileopen $1 "$INSTDIR\aida64.assetprofile.ini" w
FileClose $1

стр 177 это
FileClose $1

Впрочем, другой способ мне больше понравился.

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


Отправлено: 08:00, 21-01-2012 | #2224


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


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

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


если можно, мне тоже помогите, а?
http://forum.oszone.net/post-1838837-2217.html

Отправлено: 12:38, 21-01-2012 | #2225


Аватара для kotkovets

Ветеран


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

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


romgun, Слишком сложно - загоните реализацию в тупик, упрощайте задачу.
Цитата romgun:
С логикой беда - если значение не найдено, из цикла выползти не могу »
${Break} - прерывание любого цикла.
Можно так, но есть проблема - подсказка, сделайте признак, значение переменной 0 или 1, для того, если
все нужные действия сделаны при SetShellVarContext all, не вызывать заново функцию cfg при SetShellVarContext current
читать дальше »
Код: Выделить весь код
!include "textfunc.nsh"
!include "logiclib.nsh"

var int

outfile file.exe

Section
   SetShellVarContext all
   Call cfg
   ;---
   SetShellVarContext current
   Call cfg
SectionEnd

Function Read
  StrCpy $R0 $9 9
  StrCmp $R0 "Dirpatch_" 0 +2
  InTop $int $int + 1
  Push $0
FunctionEnd

Function cfg
  StrCpy $int 0
  ClearErrors
 ${FileReadFromEnd} "$APPDATA\Microsoft\file.cfg" "Read"
 ${If} ${Errors}
    Call xml ;если file.cfg - не найден!
 ${Else}
   ${If} $int != 0
      ${For} $0 1 $int
          ReadIniStr $1 "$APPDATA\Microsof\file.cfg" "dir" "Dirpatch_$0"
          MessageBox mb_ok "$0$\n$1"
      ${Next}
   ${ElseIf} $int == 0
      Call xml ;если пути нужные не найдены, т.е $int = 0
   ${EndIf}
${EndIf}
FunctionEnd

Function xml
  MessageBox MB_ICONINFORMATION|MB_OK "xml" IDOK
  ;команды для работы с xml файлами и проверки сушествования xml
FunctionEnd

Повторюсь еще раз, условно повторяющийся код переносится в функцию или в макрос - это очень удобно!
Важно знать, что Вы хотите - какой результат!
Поиск наиболее простого и эффективного решения - ключевые свойства любого проекта.
Про цикл For, с каждым циклом переменная $0 увеличивается на единицу, отсчет от единицы до значения $int,
какое Вам нужно значение - я не знаю...
Если Вам нужно последнее значение, то цикл не нужен, достаточно:
Код: Выделить весь код
ReadIniStr $1 "$APPDATA\Microsof\file.cfg" "dir" "Dirpatch_$int"
В $int - количество совпадений заданного выражения, если выражение(обрезанная строка) совпадет в другой секции cfg файла,
делайте так, что бы нужные выражения были в нужной секции файла и больше нигде.
Цитата wolkow70:
стр 177 это
FileClose $1 »
Скорее всего небольшие проблемы, до этой строки, наверно в команде FileWrite -
из-за неверного синтаксиса или неверного/закрытого значения дескриптора файла - второе значение синтаксиса команды FileWrite

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


Последний раз редактировалось kotkovets, 21-01-2012 в 14:21.

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

Отправлено: 14:03, 21-01-2012 | #2226


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


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

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


kotkovets, видимо мне надо обращаться конкретно к тебе

Гугл выдаёт по запросу WinVer2 только одну из страниц этой темы...
Где взять собственно сам WinVer2.nsh?
Поможешь?

Мне нужно просто определить, является ли операционка x64, и если это так, то дальнейшие действия выполнять по нужной ветке.
Насколько я понял, этот хедер как раз это и позволяет узнать.
Конкретно: надо в зависимости от архитектуры просматривать, есть ли уже установленный Firefox на компе, у него кажется ключи в разных ветках находятся. А ещё надо ставить разные версии JVM.

Последний раз редактировалось denixx, 21-01-2012 в 22:06.


Отправлено: 21:54, 21-01-2012 | #2227


Аватара для kotkovets

Ветеран


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

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


Цитата denixx:
Где взять собственно сам WinVer2.nsh? »
в шапке темы ссылка на справочник по NSIS - там он живет.
Цитата denixx:
является ли операционка x64 »
есть для этого хедер - х64.nsh, в стандартной "коробке" NSIS

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

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

Отправлено: 22:18, 21-01-2012 | #2228


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


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

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


Спасибо, всё оказалось гораздо проще
Там прямо в самом x64.nsh есть пример с показом окошка.

Ну теперь осталось дело за малым - написать годные скрипты.
Вроде нужна только работа с реестром, да запуск .exe в нужных местах.
Плюс ещё работа с папкой TEMP виндовой, чтобы туда выгружать нужные файлы перед запуском.

Отправлено: 22:31, 21-01-2012 | #2229


Аватара для wolkow70

Ветеран


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

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


kotkovets, доброго времени суток.

Можете, что-то посоветовать в таком случае?

Код: Выделить весь код
Function .OnInit
StrCpy "$INSTDIR" "$PROGRAMFILES\AIMP3"
${If} ${FileExists} "$PROGRAMFILES\AIMP3\AIMP3.exe"
${OrIf} ${FileExists} "$APPDATA\AIMP3\AIMP3.INI"
${OrIf} ${FileExists} "$INSTDIR\AIMP3\AIMP3.INI"
       MessageBox MB_OKCANCEL|MB_USERICON|MB_TOPMOST "ВНИМАНИЕ!$\n\
$\nAIMP3 уже установлен, или на вашем компьютере есть настройки этого приложения. \
$\nДанный инсталлятор не может быть использован поверх установленного AIMP3. \      
$\nПри нажатии кнопки 'Ok' будет произведено удаление следов предыдущей установки \ 
$\nи выполнена новая установка AIMP3. \
$\nПри нажатии кнопки 'Отмена' установка AIMP3 будет отменена. \
$\nВыполнить новую установку AIMP3?" /SD IDOK IDCANCEL cancel
;
Код удаления программы
;
ExecWait 'taskkill /F /IM explorer.exe' $0
DetailPrint "taskkill exit: [ $0 ]"
Sleep 500
StrCmp $0 0 0 +2
Exec "explorer.exe"
;
${If} ${RunningX64}  
Delete "$INSTDIR\Modules\aimp_menu64.dll"
RMDir /r "$INSTDIR\Modules"
RMDir /r "$INSTDIR"
${Else} 
Delete "$INSTDIR\Modules\aimp_menu32.dll"
RMDir /r "$INSTDIR\Modules"
RMDir /r "$INSTDIR"
${EndIf}
SetShellVarContext current 
RMDir /r "$APPDATA\AIMP3"  
Goto Done
cancel:
Abort
Done:
${EndIf}
FunctionEnd
В принципе работает, если AIMP3 установлен по дефолтному пути, а если нет?
Как можно вычислить директорию установки и локацию dll-файла для задания комманд удаления и дерегистрации?

И еще вопрос: Вы обещали сообщить, что выяснится с дерегистрацией aimp_menu64.dll?

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


Отправлено: 10:11, 24-01-2012 | #2230



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




 
Переход