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

» NSIS (Nullsoft Scriptable Install System)

Автор: John_White
Дата сообщения: 19.07.2010 19:52
AKRAV

Цитата:
Было бы замечательно если бы направили вектор в сторону создания нормального GUI для создания инсталяторов, не тупо редактора скрипта, а полноценного IDE для этого дела, по типу Advanced Inastaller, InstallAware Studio, InstallShield.

Еще альтернатива:
1)Venis (http://www.spaceblue.com/venis/)
2)EclipseNSIS (http://eclipsensis.sf.net/)
Но все таки лучше воспользоваться советом камрада Victor_VG.
Krinkels

Цитата:
А я бы вот хотел чтоб они все таки реализовали разбиение инсталятора на части, на подобии InnoSetup

Если бы реализовать unarc в инсталляторах NSIS, то это была бы просто убойная пара.
Inno Setup со своим "недалеким" делфи и лзма2 курили бы нервно в сторонке...

Victor_VG
Уважаемый, быть может мы совместными усилиями реализуем unarc и NSIS.
У меня не получилось.
Автор: dimbat
Дата сообщения: 21.07.2010 11:52
Victor_VG

Цитата:
Пара операторов Call/Return

Спасибо, всё оказалось просто, как и предполагал

Цитата:
HM NIS я его постоянно доделываю

А нет желания сделать контекст или кнопку "вкл/откл комментирования выделенного"?
Порой нужно целые блоки отключать/включать для отладки, приходится возиться с вертикальным выделением, да и то как-то коряво всё. И шаблон не подойдет для этой цели.
Автор: Victor_VG
Дата сообщения: 22.07.2010 00:45
dimbat

В нём этого нет, правда можно подключить плагины. Основной элемент доделки обычно справка и расцветка операторов - он вызывает контекстную справку NSIS, но там достаточно часто при добавлении новых операторов меняются индексы и я привожу справку и систему расцветки в соответствие с новой версией. Правда, у него есть особенность очень длинные скрипты ~ 20000 строк в нём лучше не запускать на компиляцию - зависнет, их надо через makensisw компилить. Я когда для себя GCC сборку делал на этот эффект нарвался - у меня там под 30000 строк по моему сегодня. Уже и я не помню их точное число - оно зависит от состава компилятора.

John_White

После завершения геморроя с переездом стоит подумать. Идея мне кажется интересной.
Автор: ilyaor
Дата сообщения: 25.07.2010 13:53
простенькая задачка , но голова не варит - нужно найти в реестре путь установленной программы, по этому пути прочитать раздел ini файла - в нем указан путь профиля, и в этом профиле уже изменить в определенном разделе ini пару параметров. вроде все просто, но голова не варит что-то.. нельзя ли для примера нарисовать простенький сценарий с подобной операцией ? ах да.. если нет в реестре записи - указать вручную папку пользователя.
Автор: kot280379
Дата сообщения: 30.07.2010 13:06
Кто нибудь знает как через библиотеку SYSTEM.DLL вызвать функцию поиска новых устройств (обновление списка pnp драйверов)???
Автор: CyberMaster0
Дата сообщения: 16.08.2010 16:56
Помогите пожалуйста решить такую задачу:
Есть файл с атрибутом "Только чтение" File.ext в нем нужно найти и заменить две строчки

Text1 bla bla bla
Text2 bla bla bla

Заменить на

Text3 ololo
Text4 ololo

Как это сделать?
P.s атрибут "Только чтение" файлу File.ext нужно вернуть обратно после его редактирования.
P.p.s замена этого файла, на заранее отредактированный файл не катит.
P.p.p.s Эти две строки можно удалить и записать две новые в конец файла
Автор: dimbat
Дата сообщения: 16.08.2010 18:35
CyberMaster0
SetFileAttributes ... NORMAL
Дальше можно вот так или так
SetFileAttributes ... READONLY
---
Вот целая категория в справке на этот счет, только выбирай.
Автор: CyberMaster0
Дата сообщения: 17.08.2010 04:14
Ничего не получается
Первый способ не подошел, так как в тексте который нужно заменить присутствуют кавычки. Со вторым способом не смог разобраться (Я далеко не кул хацкер).

Собственно объясню суть задачи более подробно:
Есть файл liblist.gam. Вот содержимое данного файла:

Код:
game "Counter-Strike"
url_info "www.counter-strike.net"
url_dl ""
version "1.6"
size "184000000"
svonly "0"
secure "0"
type "multiplayer_only"
cldll "1"
hlversion "1111"
nomodels "1"
nohimodel "1"
mpentity "info_player_start"
gamedll "dlls\mp.dll"
gamedll_linux "dlls/cs_i386.so"
trainmap "tr_1"
Автор: dimbat
Дата сообщения: 17.08.2010 10:24
CyberMaster0

Цитата:
в тексте который нужно заменить присутствуют кавычки

Заключи нужный текст в одинарные кавычки, типа 'gamedll "dlls\mp.dll"'
Автор: CyberMaster0
Дата сообщения: 17.08.2010 20:43
Спасибо! Все получилось.
И Если можно еще такой вопрос: Как сделать так, что бы если необходимый файл не найден, инсталлятор говорил типа "Файл не найден. Продолжить устоновку?"
Автор: dimbat
Дата сообщения: 17.08.2010 21:37
CyberMaster0

Цитата:
если необходимый файл не найден...

Например так:
IfFileExists ...
...
Messagebox MB_OKCANCEL ...
Автор: kot280379
Дата сообщения: 18.08.2010 23:10
кто знает, подскажете, где копать, как назначить функции кнопкам "Да" и "Нет" ?
Messagebox - не предлагайте, я знаю как ....

Код:
OutFile "Пример.exe"

Section
System::Call 'user32::MessageBoxA(i, t, t, i) i($HWNDPARENT, s, "Пример", 0x00000004)' "Пример"
SectionEnd
Автор: 820815
Дата сообщения: 19.08.2010 02:12

Код: System::Call 'user32::MessageBoxA(i $HWNDPARENT, t "text", t "caption", i 4) i.r0'
Автор: kot280379
Дата сообщения: 19.08.2010 12:52
820815
Благодарю
Автор: kot280379
Дата сообщения: 21.08.2010 15:12
820815 или кто нибудь подскажите как добавить иконку инсталятора?

Код: System::Call 'user32::MessageBoxA(i $HWNDPARENT, t "text", t "caption", i 4|0x00000080) i.r9'
Автор: dimbat
Дата сообщения: 21.08.2010 16:36
kot280379
Для классического фейса:
ICON "my_icon.ico"
Для Модерна:
!define MUI_ICON "my_icon.ico"
Автор: kot280379
Дата сообщения: 21.08.2010 17:46
dimbat
Иконку в окошечко
У меня инсталятор с рядом проверок и не очень удобно:
Messagebox - с одним заголовком
По этому вызываю мессагу таким способом:

Код: System::Call 'user32::MessageBoxA(i $HWNDPARENT, t "text", t "caption", i 4|0x00000080) i.r9'
Автор: dimbat
Дата сообщения: 21.08.2010 18:23
kot280379
Понятно, тогда вот так:
System::Call 'user32::MessageBoxA(i $HWNDPARENT, t "text", t "caption", i 0x4|0x10) i.r9'
---
10,20,30 и 40 - четыре основных иконки.
Автор: kot280379
Дата сообщения: 21.08.2010 20:26
dimbat Спасибо
А вот как иконку самого инсталлятора?
103 ресурс

Автор: dimbat
Дата сообщения: 21.08.2010 21:17
kot280379

Цитата:
иконку самого инсталлятора

Так я выше о ней и писал, в самом скрипте добавить. Эта иконка будет во всех окнах инсталла, в т.ч. и в верхнем левом углу мессаджбокса, подменяя собой родную нсисовскую.
Или о чем речь?
Автор: kot280379
Дата сообщения: 22.08.2010 00:29
Dimbat
Мне нужно в окошке вывести подобно так:

Код: MessageBox MB_USERICON|MB_YESNO "text"
Автор: dimbat
Дата сообщения: 22.08.2010 03:00
kot280379
Это вряд ли. Используется же виндузовое окно, а не нсисовское. Соответственно иконки берутся из User32.dll. Хотя категорически утверждать не берусь.
Вот подробнее на msdn.
Автор: 820815
Дата сообщения: 22.08.2010 03:51
dimbat

Да, просто так "левую" иконку туда не впихнуть

kot280379

Вот, нашёл в примерах

!include "${NSISDIR}\Examples\System\SysFunc.nsh"

Код: !insertmacro smMessageBox "i 0" "text" "caption" ${MB_YESNO} "i 103"
Автор: kot280379
Дата сообщения: 22.08.2010 10:40
820815
Вот спасибо!
А этот инклюид себе тихо мирно лежал у меня! ждал своего часа!
А брал еще кажись и отсюда

Добавлено:
Уважаемые форумчане!
Баг, что ли, как исправить?

Код:
!include "${NSISDIR}\Examples\System\SysFunc.nsh"
!include "nsDialogs.nsh"

System::Call '${sysMessageBeep} (0x30)'
!insertmacro smMessageBox "i 0" "<< Вот она Михалыч!" "System Example" "0x4" "i 103"
Автор: kot280379
Дата сообщения: 29.08.2010 21:12

Как правильно вытащить значение секции?
.onSelChange - работает только когда изменишь "мышкой" состояние секции

Код: !include "MUI.nsh"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

OutFile test.exe

Function .onSelChange
SectionGetFlags ${sec1} $1
FunctionEnd

Section test sec1
SectionEnd

Section
MessageBox MB_OK "test: $1"
SectionEnd
Автор: kot280379
Дата сообщения: 31.08.2010 01:04

Цитата:
Как правильно вытащить значение секции?
.onSelChange - работает только когда изменишь "мышкой" состояние секции

Вопрос снят.
Решение нашел.
Автор: Artem_Butenko
Дата сообщения: 10.10.2010 17:11
Ребята, пожалуйста предложите пример скрипта, в котором будет реализовано следующее:
- только страницы выбора каталога установки и прогресса установки;
- бэкап исходных файлов(а) в директории назначения (в создаваемый каталог Backup);
- поддержка скинов NSIS SkinCrafter Plugin.
Только начинаю работать с NSIS, очень хотелось бы поучиться на примерах знатоков, заранее большое Вам спасибо!
Автор: Artem_Butenko
Дата сообщения: 11.10.2010 03:46
Извините, не дождался ответа, назрел еще один вопрос. Каким образом можно изменять текст страниц инсталлятора через код, не прибегая к правке файлов языковой локализации?
Автор: dimbat
Дата сообщения: 11.10.2010 10:17
Artem_Butenko
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
Создаст только эти две нужные страницы.
---
По бекапу - вот готовые примеры
---
!insertmacro MUI_HEADER_TEXT "шапка" "текст"
Поменяет текст страницы
Автор: Victor_VG
Дата сообщения: 11.10.2010 10:22
Artem_Butenko

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

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

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


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