Показать полную графическую версию : [архив].: NSIS - все вопросы :.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC