Ru-Board.club
← Вернуться в раздел «Программы»

» NSIS (Nullsoft Scriptable Install System)

Автор: dimbat
Дата сообщения: 18.11.2009 17:51
rosalin

Цитата:
при инсталяции и запуске служб крякозябры в окне

Поставь ShowInstDetails nevershow
Автор: rosalin
Дата сообщения: 18.11.2009 18:09
dimbat


Цитата:
Поставь ShowInstDetails nevershow


прикольно спасибо
Автор: MaGoth
Дата сообщения: 26.11.2009 20:32
Приветствую,

У меня есть не большой вопрос к знатокам Нсис, по реализации одного момента.
Возможно ли реализовать новое окно с прогресс-баром, завязаным на констальную утилиту запускаемую через скрипт инсталлятора? Т.е. связать данный ехешник с Нсис напрямую?
Сам консольный ехе-шник является конвертером звуковых файлов, из одного формата в другой.
При его запуске из скрипта инсталлера, нужно чтобы окошко конвертера само не выводилось юзеру, а вся информация по тому процессу который в нем шел, передавалась в новое окошко с прогресс баром инсталлятора.
Исходники для консольного ехешника у меня есть в наличии.
Если у кого есть какие мысли, соображения по этому поводу или просто - желание помочь пишите.
Спасибо.

MfG MaGoth, WoG.ru-Community.
Автор: John_White
Дата сообщения: 26.11.2009 23:21
MaGoth
Я так полагаю речь идет о процессе преобразования OGG-->WAV?
Если не секрет речь идет об инсталляторе для Глобал Мода или Возвращения?
Отстал я немного от ваших движений...
ИМХО:
1)можно написать кастомную страницу через МУИ2 двумя способами
-реализовать через *.ini и выводить страницу (InstallOptions Plug-in)
-отрисовать страницу напрямую через nsDialogs Plug-in
и дальше напрямую работать с обьектом ProgressBar
2)Если есть исходники можно попробывать написать библиотеку и работать сразу с ней, те вызывать работу с ProgressBar через нее а не вручную как в предыдущем варианте.
ЗЫ
Это все конечно общие слова, но...
подобное я реализовывал на другой инсталляторе когда делал репак одной очень вам известной игры от создателей серии игр Готика.
Так вот через Inno Setup, а именно его я подразумевал можно напрямую изменять положение ProgressBar да и возможно даже написать библиотеку, по крайней мере я это могу представить. NSIS же на порядок сложнее...
Как вариант напиши на офф форуме NSIS - там сидят сами разрабы...
Автор: MaGoth
Дата сообщения: 27.11.2009 16:42
John_White
Прива,


Цитата:
Я так полагаю речь идет о процессе преобразования OGG-->WAV?

Именно.


Цитата:
Если не секрет речь идет об инсталляторе для Глобал Мода или Возвращения?

Нет не для них, я делаю универсильный иснталлер для модов на игру.


Цитата:
1)можно написать кастомную страницу через МУИ2 двумя способами
-реализовать через *.ini и выводить страницу (InstallOptions Plug-in)
-отрисовать страницу напрямую через nsDialogs Plug-in
и дальше напрямую работать с обьектом ProgressBar
2)Если есть исходники можно попробывать написать библиотеку и работать сразу с ней, те вызывать работу с ProgressBar через нее а не вручную как в предыдущем варианте.

Об этом, подробнеее поговорим в аське.


Цитата:
Это все конечно общие слова, но...
подобное я реализовывал на другой инсталляторе когда делал репак одной очень вам известной игры от создателей серии игр Готика.
Так вот через Inno Setup...

Этот варинт отпадает, так как в Inno Setup не реализовать того, что уже было сделано на Нсис.
Автор: A19EXXX
Дата сообщения: 06.12.2009 12:06
Nullsoft Scriptable Install System 2.46 - скачать (ехе) | скачать (zip)
Русификатор для 2.46 (новый) + Зеркало
Автор: MaGoth
Дата сообщения: 06.12.2009 19:52
Release Notes for 2.46
F.1.1 Changelog
F.1.1.1 Minor Changes

* Fixed !searchparse (bug #2803622)
* Fixed Vista error message when canceling uninstaller (bug #2803097)
* Resolve warning for LogicLib's endless Do..Loop (bug #2849872)
* StartMenu: fixed random number prefixes when clicking on an empty spot (bug #2810188)
* Updates to NSIS.pas for plug-in development (patch #2802794)

F.1.1.2 Translations

* PortugueseBR typo (patch #2826598)
* Removed double spaces in Italian (bug #2873598)

F.1.1.3 Build System

* Fixed mingw builds of Math plug-in (patch #2835731)
Автор: Draik
Дата сообщения: 17.12.2009 00:03
Здравствуйте.
Ребята, тут уже обсуждали как создавать страницу по аналогии со страницей лицензии.
вот здесь написано как это сделать http://nsis.sourceforge.net/Readme_Page_Based_on_MUI_License_Page

У меня вопрос как сделать несколько таких страниц?
Спасибо.
Автор: rosalin
Дата сообщения: 17.12.2009 18:12
Ребята подскажите как в инсталятор добавить инсталляцию файла msi с ключом /quiet

Section "Установка дополнительных компонентов .msi /quiet"
?
?
?
SectionEnd
Автор: equis
Дата сообщения: 17.12.2009 23:38

Цитата:
как в инсталятор добавить инсталляцию файла msi с ключом /quiet

В справке же все это есть.

Код: ExecWait 'msiexec /i Setup.msi /qn'
Автор: rosalin
Дата сообщения: 18.12.2009 08:07
equis
Скажите плиз
так

Section "Remote Office Manager - Server"
SetOutPath "$TEMP"
File "${HOME}\RomServer\*.*"
ExecWait "msiexec.exe /i $\"$TEMP\romserver.msi$\" /quiet"
Delete "$TEMP\romserver.msi"
SectionEnd

Добавлено:
А вот насчет удаления

;Удаление Remote Office Manager - Server

ExecWait "MsiExec.Exe /x {61FFA475-24D5-44FB-A51F-39B699E3D82C} /qn"
Автор: Phil10
Дата сообщения: 18.12.2009 12:20
Подскажите пожалуйста, как на основании выбранного языка инсталляции, копировать определённые файлы? Например для английского языка одни, а для русского другие.
Автор: John_White
Дата сообщения: 18.12.2009 14:02
Draik

Цитата:
У меня вопрос как сделать несколько таких страниц?

Пример(часть кода, с деинсталлятором аналогично):
!insertmacro MUI_PAGE_README "${NSISDIR}\Docs\Modern UI\License.txt"
!insertmacro MUI_PAGE_README "${NSISDIR}\Docs\Modern UI\Changelog.txt"

Добавлено:
Phil10

Цитата:
Подскажите пожалуйста, как на основании выбранного языка инсталляции, копировать определённые файлы? Например для английского языка одни, а для русского другие.

Пример(часть кода):
StrCmp "$LANGUAGE" "1049" 0 +3
SetOutPath "$INSTDIR\"
File /r "Plugins\*.*"
Принцип такой: идет сравнение языка инсталлера с языком (русским например), если сравнение проходит удачно - установка файлов, если нет - пропуск.
Автор: Draik
Дата сообщения: 18.12.2009 16:21
John_White.
Благодарю. Интересует так же как в этих страницах сделать так, чтобы был разный текст именно в заголовках страниц? Допустим мне вот необходимо сделать две страницы с разными заголовками, на одной информация о программе, на другой - авторы программы.

Вот для одной страницы (из примера).

${ReadmeLanguage} "${LANG_ENGLISH}" \
"Информация" \
"Пожалуйста, ознакомьтесь с нижеследующей информацией." \
"Информация о программе:" \
"$\n Нажмите кнопку 'Далее' для продолжения."

А как для двух страниц-то прописать?
Автор: equis
Дата сообщения: 18.12.2009 17:41
rosalin
В коде, кажется, везде двойные кавычки поставлены, а всю команду нужно в одинарные поставить, только путь к установщику в двойные (если есть пробелы в имени; если без пробелов, двойные кавычки можно опустить, как и расширение .exe).

Код: ExecWait 'msiexec /i $TEMP\romserver.msi /quiet'
Автор: Draik
Дата сообщения: 21.12.2009 22:04
Ау, парни, кто-нить помогите.
Автор: Hiken
Дата сообщения: 22.12.2009 18:05
Подскажите пожалуйста: где можно взять готовый скрипт или плагин NSIS для сбора uninstall feedback (чтобы пользователь мог сообщить причину, по которой отказывается от использования/удаляет программу)? Посмотрел Dev Center на сайте, версию для печати здесь, бегло Google - no luck.
Автор: MaGoth
Дата сообщения: 23.12.2009 19:54

Цитата:
Интересует так же как в этих страницах сделать так, чтобы был разный текст именно в заголовках страниц? Допустим мне вот необходимо сделать две страницы с разными заголовками, на одной информация о программе, на другой - авторы программы.

Вот для одной страницы (из примера).

${ReadmeLanguage} "${LANG_ENGLISH}" \
"Информация" \
"Пожалуйста, ознакомьтесь с нижеследующей информацией." \
"Информация о программе:" \
"$\n Нажмите кнопку 'Далее' для продолжения."

А как для двух страниц-то прописать?

На этот вопрос как и на предыдущие ранее, самый простой ответ один, продублировать то что было создано для дополнительной страницы - README.


Часть первая:
Сделать это можно примерно так, для файла *.nsh


;--------------------------------
# MUI_EXTRAPAGES.nsh
# By Red Wine Jan 2007

!verbose push
!verbose 3

!ifndef _MUI_EXTRAPAGES_NSH
!define _MUI_EXTRAPAGES_NSH

!ifmacrondef MUI_EXTRAPAGE_AUTHOR & MUI_PAGE_AUTHOR & MUI_UNPAGE_AUTHOR & AuthorLangStrings

!macro MUI_EXTRAPAGE_AUTHOR UN AuthorFile
!verbose push
!verbose 3
!define MUI_PAGE_HEADER_TEXT "$(${UN}AuthorHeader)"
!define MUI_PAGE_HEADER_SUBTEXT "$(${UN}AuthorSubHeader)"
!define MUI_LICENSEPAGE_TEXT_TOP "$(${UN}AuthorTextTop)"
!define MUI_LICENSEPAGE_TEXT_BOTTOM "$(${UN}AuthorTextBottom)"
!define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
!insertmacro MUI_${UN}PAGE_LICENSE "${AuthorFile}"
!verbose pop
!macroend

!define AuthorRun "!insertmacro MUI_EXTRAPAGE_AUTHOR"


!macro MUI_PAGE_AUTHOR AuthorFile
!verbose push
!verbose 3
${AuthorRun} "" "${AuthorFile}"
!verbose pop
!macroend


!macro MUI_UNPAGE_AUTHOR AuthorFile
!verbose push
!verbose 3
${AuthorRun} "UN" "${AuthorFile}"
!verbose pop
!macroend


!macro AuthorLangStrings UN MUI_LANG AuthorHeader AuthorSubHeader AuthorTextTop AuthorTextBottom
!verbose push
!verbose 3
LangString ${UN}AuthorHeader ${MUI_LANG} "${AuthorHeader}"
LangString ${UN}AuthorSubHeader ${MUI_LANG} "${AuthorSubHeader}"
LangString ${UN}AuthorTextTop ${MUI_LANG} "${AuthorTextTop}"
LangString ${UN}AuthorTextBottom ${MUI_LANG} "${AuthorTextBottom}"
!verbose pop
!macroend

!define AuthorLanguage `!insertmacro AuthorLangStrings ""`

!define Un.AuthorLanguage `!insertmacro AuthorLangStrings "UN"`

!endif
!endif

!verbose pop



Часть вторая:
Немного изменений для файла скрипта *.nsi, то что необходимо указано в примере ниже:

;--------------------------------
;Installer Pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"

;Add the install read me page
!insertmacro MUI_PAGE_README "${NSISDIR}\Docs\Modern UI\Changelog.txt"

;Add the install authors page
!insertmacro MUI_PAGE_AUTHOR "${NSISDIR}\Docs\Modern UI\Authors.txt"

!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

;--------------------------------
;Uninstaller Pages
!insertmacro MUI_UNPAGE_WELCOME

;Add the uninstall license page
!insertmacro MUI_UNPAGE_LICENSE '${NSISDIR}\License.txt'
;Add the uninstall read me page
!insertmacro MUI_UNPAGE_README '${NSISDIR}\Changelog.txt'
;Add the uninstall authors page
!insertmacro MUI_UNPAGE_AUTHOR '${NSISDIR}\Authors.txt'

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

;--------------------------------
;Languages
;Add 1st language
!insertmacro MUI_LANGUAGE "English"

;Set up install lang strings for 1st lang
${AuthorLanguage} "${LANG_ENGLISH}" \
"Authors" \
"Please review the following important information." \
"About $(^name):" \
"$\n Click on scrollbar arrows or press Page Down to review the entire text."

;Set up uninstall lang strings for 1st lang
${Un.AuthorLanguage} "${LANG_ENGLISH}" \
"Authors" \
"Please review the following important Uninstall information." \
"About $(^name) Uninstall:" \
"$\n Click on scrollbar arrows or press Page Down to review the entire text."


;Add 2nd language
!insertmacro MUI_LANGUAGE "Greek"

;set up install lang strings for second lang
${AuthorLanguage} "${LANG_GREEK}" \
"Authors" \
"Please review the following important information." \
"About $(^name):" \
"$\n Click on scrollbar arrows or press Page Down to review the entire text."

;set up uninstall lang strings for second lang
${Un.AuthorLanguage} "${LANG_GREEK}" \
"Authors" \
"Please review the following important Uninstall information." \
"About $(^name) Uninstall:" \
"$\n Click on scrollbar arrows or press Page Down to review the entire text."

...

SectionEnd


Вот собственно и все, далее изменяй текст так как тебе будет нужно. Скрипт не тестировал и не проверял, но думаю он должен работать...

Удачи.
Автор: Draik
Дата сообщения: 24.12.2009 15:13
MaGoth. Ну ты конечно красава... Всё прёт как нада. Безумно благодарен.
И как я сам до этого не додумался... Эх, головушка моя квадратная)
Автор: temp0001
Дата сообщения: 04.01.2010 01:33
Подскажите возможно ли в NSIS как в inno setup создать инсталлятор с разбиением по томам, тоесть run_1.bin - 1гб run_2.bin - 1гб и и сам run.exe - 1мб ?
Автор: Victor_VG
Дата сообщения: 04.01.2010 01:40
temp0001

А оно в таком виде надо? Можно конечно, но придётся крепко повозится. Тут проще использовать архиватор и им нарезать готовый пакет в SFX.
Автор: temp0001
Дата сообщения: 04.01.2010 01:58
Надо т.к. хочу создать инсталлятор для игрушки которая весит 5.5гб(а в NSIS помоему ограничение на 2ГБ да и в FAT32 вроде ограничение на 4ГБ на один файл) sfx делать не хочу т.к. хочу чтобы был красивый инсталлятор
Автор: Q_Dmitry
Дата сообщения: 06.01.2010 16:47
Дурацкий вопрос по функции CreateShortCut...
Хочу прикрутить собственную иконку к ярлыку на рабочем столе. Пишу
CreateShortCut "$SMPROGRAMS\$StartMenuGroup\Proga $(^Name1).lnk" $INSTDIR\My Folder\Proga.exe .\images\icon.ico (и прочие вариации - ничего не помогает)
Где я неправ?


Добавлено:
Проблема с CreateShortCut решена...я жестко тупанул)))
Если кому интересно, верный код...
CreateShortCut "$DESKTOP\Proga.lnk" "$INSTDIR\Proga.exe" "" "$INSTDIR\resources\icon.ico"
Естессно, что при этом путь к иконке должен совпадать с путем, в котором лежит картинка после установки файла (в этом и был трабл).
Автор: tatuich
Дата сообщения: 09.01.2010 07:13

Код: !include nsdialogs.nsh
!include logiclib.nsh
!include winmessages.nsh

Name Test
OutFile setup.exe

XPStyle on

Var dialog
Var hwnd

Page custom nsDialogsPage
Page instfiles

Function nsDialogsPage

    nsDialogs::Create 1018
        Pop $dialog

    ${If} $dialog == error
        Abort
    ${EndIf}


    ${NSD_CreateRadioButton} 0 0 100% 6% "Variant 1 (by default)"
        Pop $hwnd
        ${NSD_AddStyle} $hwnd ${WS_GROUP}
        ${NSD_Check} $hwnd

    ${NSD_CreateRadioButton} 0 33% 100% 6% "Variant 2"
        Pop $hwnd

    ${NSD_CreateRadioButton} 0 66% 100% 6% "Variant 3"
        Pop $hwnd

    ${NSD_CreateLabel} 0 8% 100% 25% "This is a$\r$\ndescription$\r$\nfor variant 1"
        Pop $hwnd

    ${NSD_CreateLabel} 0 41% 100% 25% "This is a$\r$\ndescription$\r$\nfor variant 2"
        Pop $hwnd

    ${NSD_CreateLabel} 0 74% 100% 25% "This is a$\r$\ndescription$\r$\nfor variant 3"
        Pop $hwnd

    nsDialogs::Show

FunctionEnd

Section

    DetailPrint "All finished"

SectionEnd
Автор: dracosha
Дата сообщения: 26.01.2010 22:44
Всем привет! Я новичок.
Столкнулся с одной проблемкой...
Мне нужно что бы при выборе компонента 1, стали активными для выбора компонент 2 компонент 3 и компонент 4, и в тоже время компоненты 2, 3 и 4 не должны выбираться 1 из 3, (т.е. что бы можно было поставить галочки на все компоненты 2 ,3 и 4). Если компонент 1 не выбран значит компоненты 2, 3 и 4 должны быть неактивными

Код: Section /o "test1" section1
SectionEnd
Section /o "test2" section2
SectionEnd
Section /o "test3" section3
SectionEnd
Function .onSelChange
SectionGetFlags ${section1} $1
SectionGetFlags ${section2} $2
SectionGetFlags ${section3} $3
StrCmp $1 "1" 0 N1
SectionGetFlags ${section2} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section2} $0
SectionGetFlags ${section3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section3} $0
N1:
StrCmp $2 "1" 0 N2
SectionGetFlags ${section1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section1} $0
SectionGetFlags ${section3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section3} $0
N2:
StrCmp $3 "1" 0 N3
SectionGetFlags ${section1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section1} $0
SectionGetFlags ${section2} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section2} $0
N3:
FunctionEnd
Автор: coptus
Дата сообщения: 09.02.2010 20:41
Не могу скомпилить nsis под FreeBSD 6.
У когонибудь получалось?
Ставлю так
scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no PREFIX=/test3 install-compiler
test3 это куда ставиться будет? у меня такой папки по идее нет, что ставить знаю не особо, но ошибка пока даже не в этом

Вот что выдает

Checking for C library user32... (cached) no
Checking for C library pthread... (cached) yes
Checking for C library iconv... (cached) no
Checking for C library dl... (cached) no
Checking for C library gdi32... (cached) no

Видим, что библиотек нет, верно?
И вот далее пошло падение

scons: done reading SConscript files.
scons: Building targets ...
g++ -o build/release/makensis/build.o -c -Wno-non-virtual-dtor -Wall -O2 -m32 "-DNSISCALL= __attribute__((__stdcall__))" -D_WIN32_IE=0x0500 -Ibuild/release/config Source/build.cpp
In file included from Source/build.cpp:24:
Source/util.h:26:21: iconv.h: No such file or directory


iconv и libiconv стоят
Помогите, пожалуйста
Автор: Victor_VG
Дата сообщения: 10.02.2010 01:26
coptus

Wine HQ и зависимые пакеты нужны. Да и под 6-й вряд-ли будет работать без сбоев. Минимум 7-ка, лучше 8-ка.
Автор: coptus
Дата сообщения: 10.02.2010 14:49
А теперь вот что. Набираю
alivelab# scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no APPEND_LIBPATH="/usr/local/lib" APPEND_CPPPATH="/usr/local/include"

Получаю
.o -L/usr/local/lib -lpthread -liconv
scons: done building targets.
Вроде всё окей
Дальше набираю
alivelab# scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no APPEND_LIBPATH="/usr/local/lib" APPEND_CPPPATH="/usr/local/include" install
Но получаю
scons: done reading SConscript files.
scons: Building targets ...
scons: Nothing to be done for `INSTALL'. scons: done building targets.
И чего теперь делать? КАк скомпилить то? А команду makensis откуда потом набирать? из любого места или из каталога где nsis стоять будет?
Автор: vadimsva
Дата сообщения: 11.02.2010 05:12

Цитата:
[русификатор (без гарантии, что подходит!) ]


Цитата:
Полноценного русификатора пока нет, но кто хочет, может перевести сообщения в исходных текстах NSIS и скомпилировать всё заново - это единственный корректный вариант! Из файлов поддаётся корректному переводу только меню интегратора NSIS, поскольку там HTML, а остальные переводы это в основном "русификаторы" с непредсказуемыми последствиями применения.


Кто это вообще написал? Мой русификатор вполне нормально работает и переведено все что нужно.

Русификатор для 2.хх (2.46) - обновленный
http://vadimsva.ucoz.org/NSIS_2.xx_rus.7z
http://narod.ru/disk/17779078000/NSIS_2.xx_rus.7z.html

Исходники на русском
http://vadimsva.ucoz.org/nsis-2.46_rus-src.tar.bz2
http://narod.ru/disk/17779140000/nsis-2.46_rus-src.tar.bz2.html
Автор: Victor_VG
Дата сообщения: 11.02.2010 11:41
vadimsva

Верно. И у меня в пакете меню переведено и подогнано полностью. Остальное специально не переводил - ведь в нём идёт IDE HM NIS 2.0.3 которую я постоянно доделываю. Кому надо, могут взять в Developer_tools с http://filekeeper.org/download/victorvg/ и NSIS, и GCC 4.4.1 TDM-2 build 1.0.3. Пользуйтесь. Будут ошибки - поправим. В чём проблемы, то? Не вижу проблем.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

Предыдущая тема: The Bat!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.