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

» NSIS (Nullsoft Scriptable Install System)

Автор: Victor_VG
Дата сообщения: 16.12.2012 12:18
Lex_from_Belarus

там у меня всё расписано, все процедуры описаны, если есть вопросы - задавайте.
Автор: zertyuiop
Дата сообщения: 18.12.2012 15:22
Может кто нибудь скомпилировать эти исходники: Ссылка
Автор: Victor_VG
Дата сообщения: 18.12.2012 16:03
zertyuiop

Не за чем их собирать - это старые исходники. Возьмите готовую бинарную версию с сайта проекта и не ищите бесполезную работу ни себе, ни людям.
Автор: zertyuiop
Дата сообщения: 18.12.2012 19:43
Так это моя попытка русифицировать исходники
Автор: Victor_VG
Дата сообщения: 18.12.2012 20:06
zertyuiop

С этого и надо было начинать - есть ли смысл это делать? Отвечаю нет, т.к. вся локализация осуществляется через HTML файл NSIS\Menu\index.html, а файлы стубов (NSIS/Stubs), исполняемые модули компилятора makensis/makensisw вообще нет смысла переводить - первый вызывается в консоли, а второй использует NSIS\Menu\index.html. Можно только если есть особо сильное желание перевести пару кнопок в MakeLangId.exe и zip2exe.exe. Да последний вызывают очень редко, и я не вижу смысла его переводить. А если их перевести, то можно получить проблемы с ОС - ведь основной алфавит систем разработки и самих ОС исторически латиница, и получить проблемы...
Автор: Lex_from_Belarus
Дата сообщения: 12.02.2013 22:41
Подскажите пожалуйста, как правильно установить шрифты для устанавливаемой программы. Может есть конкретный примеру, а то по примеру с офф.сайте что-то не очень понятно.
Шрифты ttf и otf
Автор: Victor_VG
Дата сообщения: 12.02.2013 22:47
Lex_from_Belarus

Самое простое это скопировать их в каталог $Fonts ($WINDIR\Fonts) и операционная система их сама там подключит, либо как вариант положить их в каталоге рядом с исполняемым модулем - это уже из MSDN:

Цитата:
Путь поиска, используемый Windows для обнаружения библиотеки DLL
_http://msdn.microsoft.com/ru-ru/library/7d83bc18.aspx

Используя механизмы явного и неявного связывания, Windows сначала выполняет поиск "известных библиотек DLL", таких как Kernel32.dll и User32.dll. Затем Windows выполняет поиск библиотек DLL в следующей последовательности:

1) Каталог, в котором находится исполняемый модуль текущего процесса.
2) Текущий каталог.
3) Системный каталог Windows. Путь к этому каталогу извлекается с помощью функции GetSystemDirectory.
4) Каталог Windows. Путь к этому каталогу извлекается с помощью функции GetWindowsDirectory.
5) Каталоги, указанные в переменной среды PATH.

Примечание

Переменная среды LIBPATH не используется.

Автор: jdPhobos
Дата сообщения: 14.03.2013 17:59
Деинсталлятор имеет один чекбокс, можно ли его активировать через ключи? Нужно удалить программу через ключ silent с активацией чекбокса.
Автор: Victor_VG
Дата сообщения: 14.03.2013 23:49
jdPhobos

Если разработчик в программе удаления предусмотрел команды из раздела 4.12 Справки NSIS - да, иначе они бесполезны. Я к примеру их обычно не предусматриваю т.к. мой деинсталлятор написан так, чтобы вычистить все "хвосты" что могут остаться и потому он даже финишный диалог не выводит - отработал и молча завершился чтобы зря не дёргать пользователя - сообщения программы установки/удаления я вывожу только при возникновении не исправимых логикой программы ошибок если нужно вмешательство оператора в процесс. Не иначе.
Автор: MKN
Дата сообщения: 15.03.2013 08:10
jdPhobos

Цитата:
Нужно удалить программу через ключ silent с активацией чекбокса.

Сделай в коде деинсталлятора, условие для командной строки - если удаление silent, то послать команду-сообщение отметки(активации) нужного чекбокса. (ессно также можно делать и для установки)
Как и что - в доке.
Автор: Bulat_Ziganshin
Дата сообщения: 17.04.2013 21:35
Один товарищ разработал библиотеку для распаковки архивов FreeArc в NSIS: http://www.smart-arab.com/2013/04/freearc-for-nsis-plugin/

или на офсайте: http://nsis.sourceforge.net/FreeArc_plug-in
Автор: SaniaNET
Дата сообщения: 02.05.2013 11:12
Подскажите, пожалуйста, если 7-zip не может открыть 1 NSIS-инсталлятор, есть ли другие средства распаковки, которые понимают те вариации компрессии, которые не понимает 7-zip ? Например может кто-то сделал распаковщик на основе исходников NSIS ?
Автор: Victor_VG
Дата сообщения: 02.05.2013 16:22
SaniaNET

Да, есть. Во первых это сам 7-Zip более новых чем у вас версий, к примеру 9.30 Alpha, а во вторых к файл менеджеру Far Manager есть специальный плагин-распаковщик контейнеров Observer v1.90 (в нём исправлено много ошибок, и для текущей версии Far3 подходит только он) который умеет распаковывать в том числе и установки NSIS, но его разрядность (32 или 64 бит) должна соответствовать разрядности установленного у вас Far Manager или он не запустится (как кстати и любой иной плагин для Far Manager, а для текущей версии пакета подходят только UNICODE плагины от Far 3.0 build 3000 и выше и с исключениями ANSI плагины от Far 1.75, а любые плагины от Far Manager 2.x без специального модуля-враппера и дополнительных настроек не будут запущены - механизм подключения плагинов в 3-й версии кардинально изменён), а для его субплагина VDISK нужен MS .NET Framework 3.5 (для данной задачи можно удалить modules\vdisk.so и vodules\DiscUtils.dll и убрать в obsererver.ini строку VDISK=modules\vdisk.so - другие модули .NET не используют). Observer открывает контейнеры по Ctrl+PgDown после чего можно просто скопировать из архива файлы на противоположную панель или задать нужный путь для распаковки в диалоге копирования. Но, скрипт установки будет декомпилирован только частично - вы сможете увидеть только то, что записал в него компилятор при сборке пакета, но не более. Авторские библиотеки и макросы вы не увидите.
Автор: SaniaNET
Дата сообщения: 03.05.2013 08:27
К сожалению, не пмогает. Многие другие NSIS-инсталляторы открываются данным плугином, а один, черт бы его побрал, не хотит никак поддаваться...
Автор: Kumga
Дата сообщения: 11.05.2013 13:50
Уважаемые, подскажите командочку (и что там еще надо) для определения типа файловой системы диска (FAT32 <> NTFS), на который идет установка, чисто на NSIS. Имеется такая?
Автор: Victor_VG
Дата сообщения: 11.05.2013 16:02
SaniaNET

Цитата:
К сожалению, не пмогает.

А может он просто запаролен? или упакован тем же FreeArc?
Автор: private_joker
Дата сообщения: 11.05.2013 16:17
Victor_VG

Цитата:
А может он просто запаролен?

А что, у NSIS есть сторонний плагин для запароливания инсталятора (чтобы даже список файлов не давать)? Когда я интересовался, был только плагин (DCrypt), который шифровал отдельные файлы в инсталяторе и при инсталяции декриптовал их (с помощью файла с хэшем пароля вроде).
Автор: Victor_VG
Дата сообщения: 12.05.2013 02:50
private_joker

Закриптовать можно и с помощью средств той же ОС, было бы желание через плагин System, раз, ну и второе а что к примеру может помешать некоему Х написать плагин-криптор или использовать сжатие NSIS-архива шифрующим криптором, либо как я уже говорил FreeArc? Последнего хватит чтобы Observer не имеющий пока его поддержки не смог распаковать контейнер.

Сейчас мы с вами высказали ряд гипотез, а чтобы они превратились в ответы стоит и глянуть хотя бы на первые 70 Кб этой необычной установки в хексе - вот там и можно было бы что поточнее сказать, а пока мы можем спорить до бесконечности, но ответа не найти.
Автор: 820815
Дата сообщения: 12.05.2013 05:13
Kumga

Код: !macro GetDriveFS _IN _OUT
Push $0
System::Call 'kernel32::GetVolumeInformation(t"${_IN}",t,i${NSIS_MAX_STRLEN},*i,*i,*i,t.r0,i${NSIS_MAX_STRLEN})i'
Push $0
Exch
Pop $0
Pop ${_OUT}
!macroend
!define GetDriveFS "!insertmacro GetDriveFS"
Автор: Astra55
Дата сообщения: 17.05.2013 19:13
Для насущных нужд портабелизации, нужен простейший сценарий установки sys драйверов в ОСь, чтобы можно было создать экзешник без GUI и прочих комстрок, содержащий sys драйвера, ключи реестра и оболочку для их установки. Второй сценарий для второго экзешника должен полностью деинсталлировать установленные на первом шаге sys драйвера и записи в реестре. Ессно, должен быть доступ на запись/удаление в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ Запуск экзешников будет с помощью vbs скриптов ThinApp. Пробовал обойтись подручными средствами, но не работает как должно.
Автор: Victor_VG
Дата сообщения: 17.05.2013 20:47
Astra55

А если проще? NsSCM - этот плагин и поставит и удалит любой драйвер-демон. Управление им по моему достаточно простое, только если в середине какой параметр используется по дефолту и опущен ставь вместо него запятую. Будут вопросы - пиши в личку - дам рабочий код и всё сразу станет ясно. Правда я комменты обычно вычищаю - дурная привычка, факт.
Автор: SaniaNET
Дата сообщения: 17.05.2013 21:04

Цитата:
Сейчас мы с вами высказали ряд гипотез, а чтобы они превратились в ответы стоит и глянуть хотя бы на первые 70 Кб этой необычной установки в хексе


Вот первые 70 кб оверлея: https://dl.dropboxusercontent.com/u/19477699/NSIS/Exe.Ovl
Автор: Victor_VG
Дата сообщения: 18.05.2013 12:13
SaniaNET

Посмотрел. Там вообще не понятно что стоит. Первые байты 0х00000000EFBEADDE, затем стоит сигнатура NullsoftInst а дальше похоже это добро покрыто каким-то самописным криптером. Других предположений с ходу тут не высказать. А т.к. хидер не известен распаковщики не могут за него зацепится... Разве что там использовали NsisCrypt.
Автор: kot280379
Дата сообщения: 23.05.2013 22:38
NSIS 3.0a0

Скачать : http://nsis.sourceforge.net/Download

---
бегло пробежался, что нового... самые существенные:
---
1) Подержка юникода (я так понял примерно..), т.е не нужно отдельно скачивать юникодную версию - текстовый скрипт может быть в любом юникоде..
деинсталлятор всегда "юникодный" - т.е будет работать от windows 2000 (XP) и выше...
--
2) Поддержка Windows 8 и Windows Server 2012
--
3) Плагины отдельно хранятся в папках:
анси - NSIS\Plugins\x86-ansi
юникодные - NSIS\Plugins\x86-unicode
Автор: Victor_VG
Дата сообщения: 24.05.2013 00:32
kot280379

Да, судя по логу изменений. Но, придётся несколько доработать текущие IDE, хотя если воспользоваться той же IDM UEStudio её дорабатывать не придётся. Разве что раскраски.
Автор: Dunkeshu
Дата сообщения: 15.06.2013 21:11
Hi! Так получилось, что искал, для своих нужд, ответы на непонятные вопросы и узрел, для себя, "непонятности" в ответах, по следующим вопросам, которые взаимосвязаны:

1. Какую роль играет длина строки, например при "размещении" в реестре Windows, типа WriteRegBin (REG_BINARY), цифровых данных более 1 Кбайт?
http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=1200#16
http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=1200#17

2. Длина строки 8192 байт, это необходимость или "облегчение" труда "писателя сценария", в NSIS?

3. Как влияет, запись в реестр бинарных (и не бинарных) данных, объёмом 2 кбайт и более, на быстродействие и надёжность операционной системы?

Как видно, эти вопросы касаются длины строки! Ответы на них очевидны, но тем не менее, интересно узнать мнение других!

ИМХО, длина строки до 1024 байт, достаточно для написания любого сценария, даже при условии, что WriteRegBin содержит более 1 Кбайт данных, если не использовать NSIS, как визуальный конструктор программ. И, если руководствоваться согласно ответа от dkom, на вопрос: - "Как с помощью NSIS добавлять в реестр двоичные данные REG_BINARY?" http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=40#7 , то возможно, первый от меня вопрос и соответственно 2-й и 3-й, не будут иметь никакого значения!?

Ещё, не очень интересный момент! На страницах, данной темы, находятся ссылки на неофициальные сборки NSIS:
NSIS 2.47 Preview (Build 10.06.2011) rev6153 (strlen 8192) with UPX 3.08 Dev
http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=1220#8

NSIS 13 Jul 2012 rev6246 strlen 8192 with log v2
http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=1280#14
ИМХО, если хотите потерять своё время, на их(её) переконфигурацию, то с богом!
Автор: SamLab
Дата сообщения: 15.06.2013 22:17

Цитата:
NSIS 13 Jul 2012 rev6246 strlen 8192 with log v2

NSIS 3.0a0 strlen 8192 with UPX 3.09
http://mpc-build.googlecode.com/svn/trunk/nsis/nsis-3.0a0-upx-strlen-8192-setup.exe
Автор: Astra55
Дата сообщения: 16.06.2013 17:21
Есть ли возможность у NSIS (или у другого инсталлера) менять сценарий деинсталляции в зависимости от того, какие папки, файлы и записи реестра уже присутствуют в системе? То есть при инсталле проверяется каждая папка, каждый файл, каждая ветка и запись рееестра. Если перечисленное уже есть в системе, то остается неизменным, и помечается как не подлежащее деинсталляции, а что было установлено инсталлером и является уникальным, удаляется деинсталлятором.
Автор: Victor_VG
Дата сообщения: 16.06.2013 17:33
Astra55

Да есть. И в секции Uninstall можно использовать процедуры управляющие этим процессом. Сам когда надо там и свой код пишу.
Автор: afinik
Дата сообщения: 09.07.2013 15:09
Добрый день, форумчане.

Есть задача формирования конфигурационного файла CONF.INI с клавиатуры. Сделал пример, но он почему-то запихивает туда какое-то число. Причём каждый раз разное... Мануалы курил - не вставило...

Код некого nsi файла ниже:


Код:
!include nsDialogs.nsh
!include LogicLib.nsh

Name nsDialogs
OutFile nsDialogs.exe

XPStyle on

Var Dialog
Var Label1
Var Label2
Var Label3
Var Text

Page custom nsDialogsPage nsDialogsPageLeave
Page instfiles

Function nsDialogsPage

    nsDialogs::Create 1018
    Pop $Dialog

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

    ${NSD_CreateLabel} 0 0 100% 12u "Введите параметры ресторана ниже"
    Pop $Label1
    ${NSD_CreateLabel} 0 13u 100% 12u "Имя клиента: "
    Pop $Label2
    

    ${NSD_CreateText} 0 25u 100% 13u ""
    Pop $Label3
    ${NSD_OnChange} $Text nsDialogsPageTextChange

    nsDialogs::Show

FunctionEnd

Function nsDialogsPageLeave

    FileOpen $R0 "$DESKTOP\CONF.INI" w
    FileWrite $R0 "$\r$\n" ; we write a new line
    FileWrite $R0 "Client = $Label3" ;почему-то выходит фигня - число какое-то
   FileWrite $R0 "$0"
    FileClose $R0 ; and close the file
FunctionEnd

Function nsDialogsPageTextChange

FunctionEnd

Section
SectionEnd

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

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


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