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
30-08-2010, 13:13
А нельзя редагнуть страницу "выбор компонентов" и подключить как-то и корректный выбор секции (1 из 2-х), и запись в секциях файлов. А то писать заново страницу... Лучше редактировать стандартную. Если можно - то как?

Смотри описание в C:\Program Files\NSIS\Docs\InstallOptions\Readme.html »
Простите, с английским не очень хорошо.
Примеры: C:\Program Files\NSIS\Examples\InstallOptions\ »
Так там установщики вообще крохотные. Лучше редактировать стандартную страницу - Выбор компонентов.

kotkovets
30-08-2010, 13:40
А нельзя редагнуть страницу "выбор компонентов" и подключить как-то и корректный выбор секции (1 из 2-х) »
Можно как то, не пробывал..
Простите, с английским не очень хорошо »
Тож самое, беру пример и какую нибудь команду и потиху осмысливаешь, че она творит!
то и вам советую :cool:

asetin_9207
30-08-2010, 14:40
У меня не получается, куча ошибок да и в справочнике такого НЕТУ!

asetin_9207
30-08-2010, 14:57
Наверно редактить страницу тяжело... Помогите сделать описание к этим секция на странице "Ввод ника". Вы говорили использую ${NSD_CreateLabel}, но как? И чтобы координаты были кажется. Я не умею.

kotkovets
30-08-2010, 15:06
Наверно редактить страницу тяжело... Помогите сделать описание к этим секция на странице "Ввод ника". Вы говорили использую ${NSD_CreateLabel}, но как? И чтобы координаты были кажется. Я не умею. »
${NSD_CreateLabel} <координатаХ> <координатаУ> <Ширина> <Высота> <”Текст”>
Координаты, ширина и высота могут быть заданы в трех единицах измерения: пиксели, единицы измерения диалога(dialog units) или проценты от пространства окна страницы. Они могут иметь и отрицательные значения, что указывает, что отсчёт величины будет в обратную сторону, т.е. снизу или справа.
Ну и придется CheckBox-ы сместить вниз.
Да в справочнике по NSIS там все рассказано!
Спасибо hb860!!!

asetin_9207
30-08-2010, 15:08
Не могу высчитать, не умею высчитывать координаты:
${NSD_CreateCheckBox} 0 50u 170 10u "Stryder emulator(для Garena)"
Pop $CheckBox
${NSD_OnClick} $CheckBox Check
${NSD_SetState} $CheckBox 0
${NSD_CreateLabel} 0 5u 100u 10u "Установить Stryder emulator"
Pop $Label
${NSD_CreateCheckBox} 0 70u 235 10u "Revolution Crew emulator(рекомендуемый)"
Pop $CheckBox1
${NSD_OnClick} $CheckBox1 Check1
${NSD_SetState} $CheckBox1 1
${NSD_CreateLabel} 0 5u 100u 10u "Установить Revolution Crew emulator"
Pop $Label

И можно ли сделать нечто похожее на стандарт страницу с описанием, ну там рамку. Ну чтобы было красиво.
Также сменить значки секции, например, на те же синие, что на странице с компонентами.
Код какой? !define MUI_COMPONENTSPAGE_CHECKBITMAP "E:\программы\важные\nsis\Contrib\Graphics\Checks\colorful.bmp"?

kotkovets
30-08-2010, 15:17
И можно ли сделать нечто похожее на стандарт страницу с описанием, ну там рамку. Ну чтобы было красиво »
Можно создать следующие элементы управления при помощи макросов ${NSD_Create*}:
Hline — горизонтальная линия
Vline — вертикальная линия
Label - надпись
Icon - значок(ICO)
Bitmap – картинка BMP
BrowseButton – кнопка «...»
Link - ссылка
Button - кнопка
GroupBox — контейнер группы
CheckBox - флажок
RadioButton — зависимый флажок-точка
Text — текстовое поле
Password — поле ввода пароля
Number - цифра
FileRequest — поле ввода имени файла
DirRequest — поле ввода папки
ComboBox — выпадающий список с возможностью ввода текста
DropList — выпадающий список с фиксированными значениями
ListBox — список значений
ProgressBar — индикатор выполнения

В справочнике все рассказано!
посмотрите: C:\Program Files\NSIS\Docs\nsDialogs\Readme.html
примеры: C:\Program Files\NSIS\Examples\nsDialogs\
Также сменить значки секции, например, на те же синие, что на странице с компонентами.
Код какой? !define MUI_COMPONENTSPAGE_CHECKBITMAP "E:\программы\важные\nsis\Contrib\Graphics\Checks\colorful.bmp"? »
Не знаю скорее нет.

asetin_9207
30-08-2010, 15:23
Так ладно, коды я могу достать, но координаты высчитать?!
Может есть визуальный редактор, чтобы смотреть коррдинаты, а то подбирать - геморой!

kotkovets
30-08-2010, 15:40
Может есть визуальный редактор, чтобы смотреть коррдинаты, а то подбирать - геморой »
Хорошо бы согласен! найдешь сообщи! :clapping:

asetin_9207
30-08-2010, 15:54
А у меня появились еще вопросы:
1. http://rghost.ru/2484080.view Нельзя "введите ник" сделать по центру что ли? А то справа совсем пусто.
2. Почему это окно http://rghost.ru/2484089.view не оделось? То есть скин не такой как у установщика? И как одеть его так же как и все остальные окна?

kotkovets
30-08-2010, 16:47
http://rghost.ru/2484080.view Нельзя "введите ник" сделать по центру что ли? А то справа совсем пусто »
типа так:
MessageBox MB_ICONEXCLAMATION " Введите ник!"
Почему это окно http://rghost.ru/2484089.view не оделось? »
эту мессагу в скрипте удалите, для отладки скрипта прописывал.

asetin_9207
30-08-2010, 17:14
MessageBox MB_ICONEXCLAMATION " Введите ник!" »
Не так как-то не очень, если по центру ставить, то и треугольник с вопросительным знаком надо переносить в центр. Как быть?

И кстати, у меня появилась идея с вводом ника. Мысль такова:
Запускаю инсталлятор, дошел до выбора компонентов и все(!) секции у меня на месте (не скрыты) и в рабочем состоянии. А дальше выходит страница "ввода ника", но(!) уже без выбора секции, обычная страница с вводом ника (как раньше).
Может сделать так: выбрал один из эмуляторов (одну из секции), далее страница "ввода ника" (простая без секции, так как секции уже на странице "выбор компонентов"). Написал ник и он ищет один из устанавливаемых файлов (stryder.ini или rev.ini), найдя один из них (а он полюбому будет, так как выбирать надо одну из секции) пропишет там текст (или в stryder.ini, или в rev.ini), но нужно переменную, которая будет писать в stryder.ini в строке - Name, а в rev.ini в строке - Playername.

Как идея? И не надо парится с созданием\редактированием новой страницы. К тому же страница компонентов - общая!

kotkovets
30-08-2010, 17:51
Как идея? И не надо парится с созданием\редактированием новой страницы. К тому же страница компонентов - общая! »
Хозяин барин. сделаете потестим.. :cool: .Не так как-то не очень, если по центру ставить, то и треугольник с вопросительным знаком надо переносить в центр. Как быть? »
Никак. если не ошибаюсь мессага вызывает user32.dll оттуда и иконку берет.
System::Call 'user32::MessageBoxA(i $HWNDPARENT, t "Введите ник", t "asetin_9207", i 0x30) i.r9'

asetin_9207
30-08-2010, 18:08
Хозяин барин. сделаете потестим.. »
Так реазиловать не могу! Я в этом ноль, а если и буду делать, то 100 процентов ошибки будут в каждой строчке.
Например, как сделать проверку на наличие этих файлов.
Прошу, напишите скрипт на проверку этих устанавливаемых файлов и запись ника в один из найденный файл.

asetin_9207
30-08-2010, 22:27
Нашел баг с анимешкой! На Windows 7 (Seven) не проигрывается анимешка! Ее просто нету! Что делать? Как исправить? А другие инсталляторы у них на 7-ке с аниме идут, а мой - нет!
Хех, я походу понял, что у меня работает только Анси, а у 7-ок - Уникод. Поэтому так выходит. Если сделать наоборот. У них будет работать - у меня не будет.
А для обе ОС нельзя сделать? Чтобы и на хп, и на 7-ке работало? Может есть общий плагин?

kotkovets
30-08-2010, 23:00
На Windows 7 (Seven) не проигрывается анимешка! »
c аистом всё в порядке.чёй вы там на нахимичели...

asetin_9207
31-08-2010, 12:35
С анимацией разобрался.
Ну помогите сделать страницу "ввода ника" примерно такой: http://rghost.ru/2492888.view
Ну не могу я сделать такое оформление, чтобы было и описание, и красиво, и значки выбора другие.

kotkovets
31-08-2010, 13:53
asetin_9207
Нашел способ как, как корректно вытащить значения секций.
Способ не нов, но работает надежно (в этом скрипте).
В функции .onInit предопределяем состояние секций!
можете все секции вернуть на страницу компонентов!
SetCompressor /SOLID lzma

!include "nsDialogs.nsh"
!include "MUI.nsh"

!define PRODUCT_NAME "Left 4 Dead 2 Update"
!define PRODUCT_VERSION "2.0.1.4 - 2.0.3.4"
!define MUI_ABORTWARNING
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_CUSTOMFUNCTION_GUIINIT MUIGUIInit
!define MUI_WELCOMEPAGE_TITLE_3LINES

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY

;===================================
;тут порядок страниц не менять!!!!
!define MUI_PAGE_CUSTOMFUNCTION_Leave Flags
!insertmacro MUI_PAGE_COMPONENTS
Page custom fnCustomInit fnCustomDestroy
!define MUI_PAGE_CUSTOMFUNCTION_Show Page
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
;===================================

InstType "Полная установка"
InstType "Только обновление"
InstType "Только Stryder emulator"
InstType "Только Revolution Crew emulator"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
Caption "Установка ${PRODUCT_NAME} ${PRODUCT_VERSION}"
InstallDir "$PROGRAMFILES\Left 4 Dead 2\"
OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION}.exe"
ShowInstDetails show

Var Dialog
Var Label
Var Text

Function .onInit
StrCpy $2 1 ;предопределение секции
StrCpy $1 0 ;предопределение секции
;продолжение скрипта
FunctionEnd

Function MUIGUIInit
;скрипт
FunctionEnd

Function .onGUIEnd
;скрипт
FunctionEnd

Function Flags ;в этой функции проверяется корректность выбора секций
StrCmp $1 $2 0 +3
MessageBox MB_ICONEXCLAMATION "Выберите необходимый эмулятор!"
Abort
FunctionEnd

Function Page ;в этой функции проверяется корректность ввода ника
StrCmp $Text "" 0 +2
Goto +2
StrCmp $Text "Сюда ввожу ник" 0 +3
MessageBox MB_ICONEXCLAMATION " Введите Ваш ник!"
Call GotoPage
FunctionEnd

Function GotoPage ; Функция для произвольного перехода по страницам
StrCpy $R9 -1
IntCmp $R9 0 0 Move Move
StrCmp $R9 "-1" 0 Move ;-1 переход на предыдущую страницу
StrCpy $R9 "120"
Move:
SendMessage $HWNDPARENT "0x408" "$R9" ""
FunctionEnd

Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
!insertmacro MUI_HEADER_TEXT "Выбор ника" " Ввод своего ника"

${NSD_CreateLabel} 0 5u 100u 10u "Введите свой ник"
Pop $Label
${NSD_CreateText} 0 20u 100% 15u "Сюда ввожу ник"
Pop $Text
nsDialogs::Show
FunctionEnd

Function fnCustomDestroy
${NSD_GetText} $Text $Text
FunctionEnd

Section "!Обновление игры" secUpdate
SectionIn 1 2
SetOutPath "$INSTDIR"
;скрипт
SectionEnd

SectionGroup /e "!Эмуляторы" secEmulator

Section "Revolution Crew emulator(рекомендуемый)" secRevcrew ;<<индефикатор секции
SectionIn 4 1
;File /r E:\revcrew\*.*
WriteIniStr "$INSTDIR\rev.ini" steamclient PlayerName $Text
SectionEnd

Section /o "Stryder emulator(для Garena)" secStryder
SectionIn 3
;File /r E:\stryder\*.*
WriteIniStr "$INSTDIR\stryder.ini" steamclient PlayerName $Text
SectionEnd

SectionGroupEnd

Function .onSelChange
SectionGetFlags ${secStryder} $1
SectionGetFlags ${secRevcrew} $2

StrCmp $1 "1" 0 N1
SectionGetFlags ${secRevcrew} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${secRevcrew} $0
N1:
StrCmp $2 "1" 0 N2
SectionGetFlags ${secStryder} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${secStryder} $0
N2:
FunctionEnd


LangString DESC_UPDATE ${LANG_RUSSIAN} "Обновление игры с 2.0.1.4 до 2.0.3.4 версии"
LangString DESC_EMULATOR ${LANG_RUSSIAN} "Выберите один из предложенных эмуляторов для игры в Left 4 Dead 2 No-Steam"
LangString DESC_STRYDER ${LANG_RUSSIAN} "Установить Stryder emulator$\r$\nВЫБОР ДВОЙНЫМ НАЖАТИЕМ!!!"
LangString DESC_REVCREW ${LANG_RUSSIAN} "Установить Revolution Crew emulator$\r$\nВЫБОР ДВОЙНЫМ НАЖАТИЕМ!!!"

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${secUpdate} $(DESC_UPDATE)
!insertmacro MUI_DESCRIPTION_TEXT ${secEmulator} $(DESC_EMULATOR)
!insertmacro MUI_DESCRIPTION_TEXT ${secStryder} $(DESC_STRYDER)
!insertmacro MUI_DESCRIPTION_TEXT ${secRevcrew} $(DESC_REVCREW)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

Реализовано корректность выбора секции.
Реализовано корректность выбора ника.

asetin_9207
31-08-2010, 15:12
Спасибо большое! Так намного лучше. Хотелось бы уточнить с окном "Введите Ваш ник!" - нельзя его уменшить (окно), чтобы пустые места не бросались, то есть компактно будет.

kotkovets
31-08-2010, 15:23
Хотелось бы уточнить с окном "Введите Ваш ник!" - нельзя его уменшить (окно), чтобы пустые места не бросались »
Заголовок сообщения, (текста меньше):
Caption "полезное сообщение"




© OSzone.net 2001-2012