PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

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 гигабайт, можно ли будет этим файлам задать имена?

hb860
26-08-2010, 15:37
Цитата 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