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

» NSIS (Nullsoft Scriptable Install System)

Автор: Maikl65
Дата сообщения: 08.06.2009 15:26
Hiken
alroy

Вашими молитвами прога обновилась до 2.45
Автор: Victor_VG
Дата сообщения: 11.06.2009 05:59
Maikl65

И кстати, там (в NSIS 2.45) прилично поменялся индекс справки, потому HM NIS 2.03 пришлось поправить до Update 20. Чуть позже выгружу уже сделанный пакет - сейчас надо бежать. Реально он ещё до выходных был готов, но я его решил тщательно проверить - не сделал ли я при его сборке ошибок? Вроде не вижу...

Вот обещанные адреса для закачки:

Зеркало 1
Зеркало 2
Зеркало 3

Данный пакет содержит: сам компилятор, Обновление с поддержкой русского меню и длинных строк до 8192 байта и поддержкой макропрепроцессора, HM NIS Edit Version 2.0.3 Update 20 полностью согласованный с новым компилятором. Кроме того пакет содержит ряд дополнительных инструментов и исходные тексты ряда GNU GPL программ.
Автор: MaxLab2008
Дата сообщения: 23.07.2009 10:22

Ожидаем русификатор для последней версии NSIS в начале августа. Хост вернули, домен в пути.


Автор: Victor_VG
Дата сообщения: 26.07.2009 08:42
MaxLab2008

А смысл в нём если каждый раз ресурсы корячить? Ладно бы языковые файлы, их отредактировал и код не трогаешь, а ресурсы? Мартышкин труд...
Автор: Astra55
Дата сообщения: 13.08.2009 20:21
Поскольку в топике по Inno мне так и не удалось нарыть инфу, буду мучать здешнюю публику
Суть проблемы: нужно получить доступ на запись и удаление ключей реестра в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_.....
Мне крайне нужно знать каким образом это сделать в рамках NSIS. Если не понятна суть проблемы, то попробуйте записать или удалить ключи из этой ветки, разумеется, не получая вручную прав, а скриптом.
Автор: Krinkels
Дата сообщения: 14.08.2009 07:38
Друзья, мне нужно при установке проги сделать бэкап определенных веток реестра , а потом внести туда свои данные. При удалении восстановить первоначальное значение из бэкапа. Как это сделать?
Автор: Victor_VG
Дата сообщения: 14.08.2009 07:48
Astra55

Не сделать с ходу. Нужно менять права доступа на эти ключи, а это можно сделать только через вызовы API и плугин System.

Krinkels

Например через мою библиотеку ProcLib V2.5, но новая версия будет на серверах после того, как я отосплюсь и напишу Обновление - что то код коверкает. Для простого бэкапа хватит плугина Registry. Читай доку экспорт/импорт ключей Реестра. Моя библиотека ещё и менять там куски умеет.
Автор: Astra55
Дата сообщения: 14.08.2009 07:58
Victor_VG

Цитата:
Не сделать с ходу

Вчера пробовал портабельный Virtual Box, там сделано на скриптах NSIS с ланчером, в указанную ветку пишется без проблем. Что автор этой сборки знает такого ценного, что не могут подсказать уже во втором топике по инсталляторам
Автор: Victor_VG
Дата сообщения: 14.08.2009 08:04
Astra55

Просто надо покопаться в плугинах. А я сейчас ног валюсь, башка не варит. Всю ночь код писал и отлаживал.
Автор: Krinkels
Дата сообщения: 14.08.2009 08:10
Victor_VG
Дай ссылочку

Добавлено:
Пробовал через Registry вот что выдает !include: "C:\Program Files\NSIS\Include\registry.nsh"
!define: "REGISTRY_NSH"=""
!include: "C:\Program Files\NSIS\Examples\System\System.nsh"
!define: "System.NSH.Included"=""
!define: "IMAGE_BITMAP" already defined!
!include: error in script: "C:\Program Files\NSIS\Examples\System\System.nsh" on line 267
!include: error in script: "C:\Program Files\NSIS\Include\registry.nsh" on line 3
Error in script "C:\Documents and Settings\Kwant\Рабочий стол\Note\Notepad.nsi" on line 37 -- aborting creation process

Автор: Victor_VG
Дата сообщения: 14.08.2009 08:25
Krinkels

Выложу - будет. Там сейчас у меня 2.4, а ней нового кода ещё нет.

Малости не хватает - строчки !include "registry.nsh" и самой include/registry.nsh нет у тебя. Итог - законный - код не работает. Возьми у меня в файловом архиве нормальный NSIS - там всё работает. Там в Examples лежит полный код обновления использующего этот плугин. Линк в подписи приютился. Щёлкни - попадёшь.
Автор: Krinkels
Дата сообщения: 14.08.2009 08:32
Victor_VG
Как раз эта строчка есть, в личку скинул весь скрипт, как отоспишься глянешь в чем проблема?
Автор: Draik
Дата сообщения: 17.08.2009 12:54
Доброго времени суток, здешние гуру
Victor_VG, особый превед.

У меня вновь накопилась куча вопросов... Молю о помощи.
1. Есть такая чудо-штука, как NSIS Form Designer, с её помощью можно создавать свои собственные формы для дизайна интерфейса установки. Так вот, мне от неё только нужно чтоб битмап-картинка была не размером 164*314, а размером во всё поле окна, примерно 453*219. Создаю я такую форму... И что? Каким образом её задействовать? У программы напрочь отсутствует человеческая справка....
2. Страница лицензии может интегрировать текст из текстовых файлов формата rtf, возможно ли такое для созданных страниц? С ini-файлами возьни много, да и толком не понимаю я как там настраивать размер шрифта, тип шрифта, цвет шрифта и т.п.
3. В каком виде вписывать непосредственно в скрипт команды DOS? Именно в скрипт, а не через интеграцию из bat или cmd-файлов.
4. Ну и мелочи... Как сделать так, чтоб при прерывании установки, инсталлятор не закрывался, а показываласть страница, с текстом о том, что приложение не установлено
надлежащим образом.
Автор: Victor_VG
Дата сообщения: 17.08.2009 20:15
Draik

Ну, с RTF всё элементарно пишется - практически любой уважающий текстовый редактор Write (в Win встроен со времён царя Гороха), AcelPad, Atlantis Ocean Mind, Open/Star Office, Word (любой, хоть для DOS). И я сам часто использую его в лицензиях - просто указываю имя файла вместе с расширением и всё.

С командами вообще просто - или команда Exec в любой форме, либо плугины серии nsExec - эти даже лучше - они прячут окно консоли и умеют много больше чем тот же Exec.

По вопросу 4. я пишу специальый код есть в NSIS такая хитрость пара команд Quit - просто выход, и Abort user_message вот последняя и позволяет вывести сообщение и подключается в функциях, ну и просто тупая логика - посмотри мою библиотеку ProcLib.nsh в том пакете что у меня на серваках. Я её сейчас дописал, но из-за фокусов своей системы обнову никак руки не дойдут вставить в обновление и сплавить на сервера. А кидать на обменник не хочу - там есть ещё задумки. Я в Far её активно применяю - если возникает условие сбоя, выводится диалог и только по кнопке программа завершается. но, тут каждый раз работает собственная, специально написанная логика, зачастую довольно хитрая.

Что касается справки - у NSIS она своя, и я если что нос в неё сую. Файл валяется в каталоге с makensis.exe - nsis.chm плюс в doc есть справки по элементам. NSIS Form Designer я не пользуюсь - я не делаю украшательств, предпочитая писать иной раз затейливую логику в программе и потому с ходу, без чтения ман-ов про него мне сказать нечего.
Автор: Draik
Дата сообщения: 17.08.2009 21:24
Благодарю за ответы, Виктор.
Вобщем, баян конечно, но я так и не понял каким образом прописать именно для созданных страниц интеграцию текста из rtf-файла... Пример напиши, плиз.
Мне пока приходится писать так:

Function .onInit
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "inf.ini"
FunctionEnd

Function CustomPage
!insertmacro MUI_HEADER_TEXT "Информация о программе." "Прочтите информацию о программе."
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "inf.ini"
FunctionEnd

По поводу NSIS Form Designer, я имел ввиду справку конкретно по этой проге.
А прогу, между прочим, я взял из твоего же архива с обновлениями . Мне особых изысков также не надо, всякие скинкрафтер плугины и прочие нестабильные навороты я не использую, мне всего лишь нужно растянуть размер битмап-картинки. Ну так уже буит красивше. А мануалов по этой проге либо вообще нет, либо надо обладать недюженными навыками поисков, чтобы их отыскать.

по 4-му вопросу. И здесь мне пример нужен) что там нужно сделать с командой Abort user_message? я кроме MUI_ABORTWARNING и MUI_ABORTWARNING_TEXT никаких команд аборта не знаю.

Ах да... И еще, мне нужно, чтобы по окончании установки, сохранялся специальный лог-файл, где бы был прописан отчет об установке каждого файла... В моей программе их около двух тысяч... И не дай боже что-то слетит... Выявить вручную какой файл не поставился - практически нереально.
P.s Еще раз огромнейшее спасибо за помощь
Автор: Victor_VG
Дата сообщения: 18.08.2009 00:33
Draik

Мою установку GCC 4.4.0 TD-1(R2) видел? Так вот там файлов почти 10000 и чем закончится слёт компилятора представить себе несложно Что касается лога, то это нужно в компиляторе стубы и makensis менять - нужна специальная версия с расширенным логированием. У меня так же не стандартная - она поддерживает сверх длинные строки до 8192 байта, штатный компилер - 1024. Это всё с офсайта тянем. Если бы не сей фокус, я бы наверное в иные программы 3/4 логики не впихнул.

А с Abort просто, примерно в таком духе:

Цитата:
IfErrors +1 +2
Abort "Извините, произошёл страшный сбой в программе и установка прекращена, все Ваши данные уничтожены, обратитесь в Техподдержку, но готовьтесь заплатить за наши дополнительные услуги VIP клиентам."
MessageBox MB_OK "Привет дружище, хороша шутка? Инфаркта не ещё было?" IDOK +1
MessageBox MB_OK "Ну, коли не было, жаль, но ничего, ща, будет, ты только кнопочку нажми..." IDOK +1
Quit

поплыли - у клиента диалог, хреновое настроение и причитающиеся крепкие слова в адрес шутников...

А что касается интеграции текста из RTF - задачки не было, просто не думал.
Автор: Nureyev
Дата сообщения: 07.09.2009 14:04
Обновил языковые файлы русского языка для NSIS.
Ссылка: http://forums.winamp.com/showthread.php?s=&threadid=302144
Автор: alexeyMEN
Дата сообщения: 12.09.2009 21:41
Прочитал все страницы. нет такого вопроса.
А вопрос в следуующем: есть код:
[more=Спойлер]

Код:
Function .onInit
Push $R0
SetCurInstType 0
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "setup.ini"
SetSilent normal
MessageBox MB_YESNO|MB_ICONINFORMATION 'Выберите тип поиска папки установки игры:$\r$\n\
                                     Нажмите "Да" для автоматического поиска (может занять определённое время)$\n\
                                     Нажмите "Нет" для самостоятельного выбора' IDNO done

StrCpy $0 0
${locate::Open} "C:|D:|E:|F:|G:|H:|I:|J:|K:|L:|M:|N:|O:|P:|Q:|R:|S:|T:|U:|V:|W:|X:|Y:|Z:" "/M=xxx.xxx" $0
StrCmp $0 0 0 loop
loop:
${locate::Find} $0 $1 $2 $3 $4 $5 $6
StrCmp $2 "" goclose
StrCpy $INSTDIR $2
IfFileExists "$INSTDIR\xyy.exe" close
Goto loop
goclose:
MessageBox MB_OK|MB_ICONINFORMATION     'При автоматическом поиске не было обнаружено приложение ". $\n\
                                        Во время инсталляции вам будет предложено самостоятельно указать путь к папке с установленной игрой. $\n\
                                        Для этого в окне "Выбор папки установки" нажмите кнопку "Обзор" и выберите нужный каталог.' IDOK close
close:
${locate::Close} $0
${locate::Unload}
done:
Pop $R0
FunctionEnd
Автор: iglezz
Дата сообщения: 12.09.2009 22:14
alexeyMEN
Копать в сторону Splash-плагинов. Что-то есть в комплекте с самим nsis, а что-то можно взять здесь.
Автор: Victor_VG
Дата сообщения: 13.09.2009 14:08
alexeyMEN

Смысл? Если программа была установлена, и есть запись в Реестре, она элементарно читается из ключей удаления, если она не была установлена, и настроек в Реестре нет, то искать программу по всем слайсам дерева ФС- потеря времени. Поэтому смысла в поиске не вижу. По моему достаточно.

Исправил линк в шапке на страницу закачки на sf.net - теперь он покажет все файлы, а не фиксированную версию 2.43.
Автор: alexeyMEN
Дата сообщения: 14.09.2009 21:26

Цитата:
Копать в сторону Splash-плагинов. Что-то есть в комплекте с самим nsis

Копнул. но так и не понял как нормально зациклить.
почему-то они вызываются один раз, а при повторном прохождении цикла уже не вызывается. пробовал newadvsplash + anigif
Автор: iglezz
Дата сообщения: 15.09.2009 12:46
alexeyMEN
Зачем и кого зацикливать? Дабы не гадать, выложи обновленный .onInit
Автор: Nureyev
Дата сообщения: 22.09.2009 08:40
Возможно ли декомпилировать NSIS со скриптом? Хочу посмотреть, как устроен скрипт инсталлятора Winamp.
Автор: Victor_VG
Дата сообщения: 22.09.2009 08:51
Nureyev

Нет. Скрипт вместе со стубами компилируется в единое целое. При это он ещё и сжимается и как я понял шифруется(?). Потом после завершения установки, этот файл переименовывается в uninstall.exe. Потому разве что логи компилятора анализировать. Других вариантов не вижу.
Автор: 0x000BLAh
Дата сообщения: 22.09.2009 16:51
Nureyev
http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=660#7
http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=660#13
Автор: Victor_VG
Дата сообщения: 23.09.2009 04:25
0x000BLAh
Nureyev

Да, но только если вы сможете взломать RC4 шифрование - вот ссылки: http://nsis.sourceforge.net/DcryptDll_:_Adding_Encryption_to_NSIS и http://nsis.sourceforge.net/Can_I_decompile_an_existing_installer читайте.
Автор: Draik
Дата сообщения: 07.10.2009 10:59
Виктор, драсьте
Можно попросить подробнее рассказать о функции UAC (User Account Control), и как её реализовать в NSIS? Это вроде как полезная штуковина...
Если возможно, хотелось бы увидить примеры скриптов.
Спасибо.
Автор: msatmb
Дата сообщения: 15.10.2009 19:57
Задача стоит следующая. При запуске инсталлятора появляется окно с выбором языка установки. Можно ли при запуске через командную строку чтобы кнопка ОК нажималась автоматом? Если сделать /S то окно выбора языка все равно показывается.
Автор: MANtiCORE
Дата сообщения: 23.10.2009 22:20
всем привет.

вопрос вот возник - а как определить работу в Safe Mode (безопасный режим) в инсталляторе?
ну типа запущен ли инсталлятор в безопасном режиме или в нормальном режиме и в зависимости от этого ветвление алгоритма...
в мануале вроде этого нет. быстренько пробежался по офсайту и плагинам и тоже не нашёл. может есть готовый скриптик?
ткните меня пожалуйста носом.
а то сильно не хочется заморачиваться с вызовом системных dll для определения режима.
Автор: 820815
Дата сообщения: 24.10.2009 13:47
MANtiCORE

http://forums.winamp.com/showthread.php?postid=1285416#post1285416

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

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


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