Показать полную графическую версию : [архив].: NSIS - все вопросы :.
asetin_9207
26-08-2010, 11:17
kotkovets спасибо, но не во всем я разобрался, с секциями, например. Сделал анологию кода, но полезли ошибки, вроде бы все как по образцу, но все же...
Мой код секции:
Section "!Обновление игры" secUpdate SectionIn 1 2 SetOutPath "$INSTDIR" File /r /x *.nsi *.* SectionEnd SectionGroup /e "!Эмуляторы" secEmulator Section "Stryder emulator(для Garena)" secStryder SectionIn 3 SetOutPath "$INSTDIR" File /r E:\stryder\*.* SectionEnd Section /o "Revolution Crew emulator(рекомендуемый)" secRevcrew SectionIn 4 1 SetOutPath "$INSTDIR" File /r E:\revcrew\*.* SectionEnd SectionGroupEnd
Также насчет анимации... там есть примеры, да они работают, но не там, где хотелось бы видеть. Мне надо, чтобы анимация выходила перед самим окном установщика, а в примерах то в приветственном лого стоят, то в лого справа. Это не совсем то...
Извините, а нельзя страниц конкретную с проблемой скоса версии в приветствии?
Справочник у меня есть, но, к сожалению, там не все, чего хотелось бы.
Также хотелось бы узнать: каким образом можно сменить\изменить фон установщика? Например, http://s45.radikal.ru/i108/1008/80/19680a3a23c8.png
kotkovets
26-08-2010, 14:47
не во всем я разобрался, с секциями»
Пост #307 (http://forum.oszone.net/post-1326443-307.html)
Выбор в группе двойным нажатием
Также насчет анимации... »
http://nsis.sourceforge.net/Animate_plug-in
а нельзя страниц конкретную с проблемой скоса версии в приветствии? »
Короче напишите:
Name "BLA BLA BLA"
изменить фон установщика?»
Это скин читайте внимательно шапку темы (http://forum.oszone.net/thread-67386.html)
Расширение функциональности
Belial4444
26-08-2010, 15:26
kotkovets , слушай у меня появились 2 новых вопроса:
1. Как мне считать данные из файла .inf без секции с помощью функции ReadINIStr? Выставление " " на месте параметра секции не помогло.
2. Будет ли в нсисе разбивка на файлы, если дистрибутив больше 2 гигабайт, можно ли будет этим файлам задать имена?
Цитата asetin_9207:а нельзя страниц конкретную с проблемой скоса версии в приветствии? »
Короче напишите:
Код:
Name "BLA BLA BLA" »
А вот тут я позволю себе не согласиться! Почему-то многие разрабочики решают эту проблему именно вот таким, дубовым способом. А между прочим, ответ легко находится в справке.
Достаточно определить константу
!define MUI_WELCOMEPAGE_TITLE_3LINES
И всё, на странице приветствия название будет расширено до трех строчек, которых всегда хватает даже для очень длинного названия.
RTFM, господа
Belial4444
26-08-2010, 17:30
Народ, как можно сделать, чтобы с группы секций нельзя было снять галку?
kotkovets
26-08-2010, 18:18
Народ, как можно сделать, чтобы с группы секций нельзя было снять галку? »
SectionGroup /e "some stuff"
Section "test1" section1
SectionIn RO
SectionEnd
Section "test2" section2
SectionIn RO
SectionEnd
SectionGroupEnd
asetin_9207
26-08-2010, 21:27
kotkovets, да я скачал плагин, но они анимешки вставляют как в примерах только на само окно инсталлятора (вместо лого приветствия или лого заголовка), а мне нужно код, который бы запускал анимешку перед самим процессом запуска окна инсталлятора.
Действие - анимешка, потом выбор языка, потом само окно инсталлятора (так у меня). Может там и написано (ссылка), но нельзя на русском?
kotkovets
26-08-2010, 23:15
asetin_9207,
Покажите скрипт
---------------------------------
Из справки:
Функция .onInit выполняется после инициализации инсталлятора. Это самая первая функция, которая выполняется при запуске вашего инсталлятора.
Function .onInit
MessageBox MB_YESNO "Это установка приложения. Продолжить?" IDYES NoAbort
Abort
NoAbort:
FunctionEnd
asetin_9207
26-08-2010, 23:26
Скрипт:
Function .onInit
SetOutPath $INSTDIR - пытался надеть скин, но не получилось.
File "${NSISDIR}\Plugins\Accent.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$INSTDIR\Accent.skf"
!insertmacro MUI_LANGDLL_DISPLAY
SetOutPath '$PLUGINSDIR' - использовал стандартную аниме, но также нету никакой анимешки. Надо чтобы она была перед запуском самого установщика (окна).
File "E:\sonic.gif"
AnimGif::play /NOUNLOAD '$PLUGINSDIR\sonic.gif'
; Add your page code here
AnimGif::stop
Delete '$PLUGINSDIR\sonic.gif'
FunctionEnd
kotkovets
27-08-2010, 00:45
Как мне считать данные из файла .inf без секции с помощью функции ReadINIStr »
Никак.
Может этот пример поможет в вашем вопросе:
Section
ClearErrors
FileOpen $0 $EXEDIR\test.txt r #открываем файл в режиме чтения
IfErrors done
loop:
StrCmp $1 "" Done #если искомая строка не найдена или файла нет - переход к Done
FileRead $0 $1 #чтение файла, строка помещается в переменную $1
StrCmp $1 "Box ZEROO" 0 +2 #сравнениие если $1=Box ZEROO переход к Yes, а вдруг искомая строка
#первая или последняя!?
Goto Yes
StrCmp $1 "Box ZEROO$\r$\n" 0 +2 #сравнениие если $1="Box ZEROO"
Goto Yes #переход к Yes
Goto loop #переход к loop (получается цикл пока не будет найдена искомая строка)
done:
FileClose $0 #закрытие файла
MessageBox MB_ICONSTOP|MB_OK "Ничего не найдено!" #мессага
Quit #Выход из инсталлятора
Yes:
MessageBox MB_ICONINFORMATION|MB_OK "Найдена строка: $1" #мессага
SectionEnd
#В скрипте искомая строка Box ZEROO
файл test.txt
Setup
Box ZEROO
Box1
Box2
Box3
asetin_9207
27-08-2010, 18:13
Может мне кто-нибудь поможет или нет?
kotkovets, сорри, я прочистил ящик, отправьте плиз.
Может у вас есть СБО? (средство быстрого общения). Например, скайп или агент.
asetin_9207
29-08-2010, 12:43
Народ, не подгружается скин, что делаю не так? Вроде делал все по инструкции от K.A.V.:
Function .onInit
SetOutPath "$PLUGINSDIR"
File "${NSISDIR}\Plugins\V-touch.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "${NSISDIR}\Plugins\V-touch.skf"
FunctionEnd
Function .onGUIEnd
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd
Не получается с функцией .onVerifyInstDir сделать запрет на установку, если нету файла (ов).
Function .onVerifyInstDir
IfFileExists "E:\Left 4 Dead 2\left4dead2\bin\Client.dll" PathGood
Abort
PathGood:
FunctionEnd
Создавал собственную страничку, где прописывал текст в определенном файле:
Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateLabel} 0 5u 100u 10u "Введите свой ник"
Pop $Label
${NSD_CreateText} 0 20u 100% 15u "L4D-Portal.Ru"
Pop $Text
nsDialogs::Show
FunctionEnd
Function fnCustomDestroy
${NSD_GetText} $Text $R0
WriteINIStr $INSTDIR\rev.ini steamclient PlayerName $R0
FunctionEnd
но теперь нужно сделать проверку на наличие устанавливаемого файла (допустим имя его - Х), если его нету (Х), то прописывать текст в другом файле (Y) и также наоборот.
kotkovets
29-08-2010, 14:08
Народ, не подгружается скин, что делаю не так? »
Function .onInit
;-----------------
;анимашка
;-----------------
SetOutPath $TEMP
File "Путь к файлу\Skinastic.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$TEMP\Skinastic.skf"
Delete "$TEMP\Skinastic.skf"
FunctionEnd
Function .onGUIEnd
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd
Скин (Skinastic.skf) прекрасно подгружается!
SetOutPath "$PLUGINSDIR" »
В переменную $PLUGINSDIR значение записывается после команды InitPluginsDir:
Section
InitPluginsDir
MessageBox MB_OK "$PLUGINSDIR"
SectionEnd
asetin_9207
29-08-2010, 14:45
Function .onInit
;анимашка
SetOutPath $TEMP
File "${NSISDIR}\Plugins\Accent.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$TEMP\Accent.skf"
Delete "$TEMP\Accent.skf"
FunctionEnd
Function .onGUIEnd ;подгрузка скина
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd
Так почему не грузится скин?! Файл скина лежит в папке плагинов, путь указан к этой папке.
kotkovets
29-08-2010, 15:10
Так почему не грузится скин?! »
А другой скин не пробывал?
и поменять библиотеку (NSIS_SkinCrafter_Plugin.dll) на версию 2.6.3.0
ANSI NSIS SkinCrafter Plugin (http://www.skincrafter.com/downloads/nsis_skincrafter_plugin_ansi.zip)
asetin_9207
29-08-2010, 17:12
Все равно нету скина. Может потому что у меня сборка винды? Хп зверь стоит. Но mfc71.dll есть у меня, проверял.
kotkovets
29-08-2010, 17:23
Все равно нету скина.»
Версию сменил плагина (http://forum.oszone.net/post-1484185-655.html) ?
Может потому что у меня сборка винды Хп зверь? »
без понятия
Belial4444
29-08-2010, 17:37
Нашел инсталлятор хороший и у меня возникли новые вопросы:
1. Можно ли редактировать стандартные страницы?
2. Как можно производить операции с текстом на странице? (менять стандартный, менять цвет, шрифт)
3. Есть ли визуальный редактор страниц установщика? (осталась проблема с определением нужных координат, а подбирать вручную очень долго и геморройно)
asetin_9207
29-08-2010, 18:05
kotkovets, спасибо новая версия помогла. Теперь хотелось бы уточнить с проверкой.
Идея такая: Имеется 2 компонента (секции). В 1 устанавливаемом компоненте есть файл Х, во втором устанавливаемом компоненте файл Y.
Так вот, допустим, что я выбрал для установки 1-ый компонент и при написании на моей новой страничке текста, он (текст) должен писаться в устанавливаемый компонент Х, если выбрал 2-ой компонент должно писаться в устанавливаемый файл Y.
Создаваться ничего не должно, только писаться в файлах исходя из выбранного компонента (секции). Как это реализовать?
Моя страничка:
Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateLabel} 0 5u 100u 10u "Введите свой ник"
Pop $Label
${NSD_CreateText} 0 20u 100% 15u "L4D-Portal.Ru"
Pop $Text
nsDialogs::Show
FunctionEnd
Мои секции:
Section "Stryder emulator(для Garena)" secStryder
SectionIn 3
SetOutPath "$INSTDIR"
File /r E:\stryder\*.*
SectionEnd
Section "Revolution Crew emulator(рекомендуемый)" secRevcrew
SectionIn 4 1
SetOutPath "$INSTDIR"
File /r E:\revcrew\*.*
SectionEnd
kotkovets
29-08-2010, 18:08
Можно ли редактировать стандартные страницы? »
Можно
Как можно производить операции с текстом на странице? »
Можно
!include "MUI.nsh"
!define MUI_HEADERIMAGE
!define MUI_PAGE_HEADER_TEXT "Установка Belial4444"
!define MUI_PAGE_HEADER_SUBTEXT "Выберите эту установку"
!define MUI_HEADER_TRANSPARENT_TEXT # Устанавливает прозрачный фон для надписи-заголовка
!define MUI_CUSTOMFUNCTION_GUIINIT MyGUIInit
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
Name "Программы"
OutFile "Header.exe"
Function MyGUIInit
!include "WinMessages.nsh"
GetDlgItem $R0 $HWNDPARENT 1037 # получаем указатель на элемент
GetDlgItem $R1 $HWNDPARENT 1038 # получаем указатель на элемент
SetCtlColors $R0 0xFF8040 transparent # цвет текста зеленый, фон прозрачный
SetCtlColors $R1 0x00FF00 transparent # цвет текста красный, фон прозрачный
CreateFont $1 "Verdana" 10 400 # создаём шрифт
SendMessage $R0 ${WM_SETFONT} $1 0 # применяем созданный шрифт
CreateFont $1 "Verdana" 8 400 /ITALIC # создаём наклонный шрифт
SendMessage $R1 ${WM_SETFONT} $1 0 # применяем созданный шрифт
FunctionEnd
Section -Post
SectionEnd
# 1037 это элемент текста верхнего контрола
# 1038 это элемент текста нижнего контрола
Гляньте это ...\NSIS\Docs\Modern UI\Readme.html
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC