|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
|
|
Отправлено: 23:35, 17-06-2006 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Такая ситуация:
Есть два компонента которые нельзя устанавливать одновременно (как это осуществить с помощью радиобутонов я знаю), но так же нужно сделать так, чтобы оба компонента можно было не устанавливать. Как я понял, радиобутонами такое сделать можно, если просто добавить "пустой" третий компонент, при выборе которого не будет, соответственно, устанавливаться ни один из первых двух. Считаю такое решение не очень красивым. Слышал что можно сделать выбор с помощью обычных чекбоксов, на вроде проверки. Если стоит галочка 1, то галочка 2 убирается и наоборот, если стоит галочка 2, то галочка 1 убирается. При этом галочку можно убрать совсем ,и ни один из двух компонентов выбран не будет. Но никак не соображу как такое реализовать. Подскажите пожалуйста, лучше с примером сразу. |
Отправлено: 02:23, 27-01-2011 | #941 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата silione:
Т.е выбор нужной секции - двойным нажатием. |
|
------- Отправлено: 12:30, 27-01-2011 | #942 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Всплыла другая проблема.
Если имеются несколько групп секций и в какой-либо функции используется SectionSetFlags ${IDG} ${SECTION_OFF} с групп секций (всех) перестают сбрасываться флажки. Например, если секции в группах относятся к разным InstType и при одном из вариантов должны отключаться все секции в одной из групп, то секции-то отключаются, а вот флажок на самой группе - нет (отключается только если по нему вручную щелкнуть). Можно ли это как-то исправить? !include "MUI2.nsh" !include "Sections.nsh" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" InstType "все" InstType "один" OutFile "File.exe" Section "Компонент №0" ID_0 SectionIn 1 2 SectionEnd SectionGroup /e "Компоненты" IDG Section "Компонент №1" ID_1 SectionIn 1 SectionEnd Section /o "Компонент №2" ID_2 SectionEnd SectionGroupEnd SectionGroup /e "Компоненты 2" IDG2 Section "Компонент №3" ID_3 SectionIn 1 SectionEnd Section /o "Компонент №4" ID_4 SectionIn 1 SectionEnd SectionGroupEnd Function .onInit StrCpy $1 ${ID_1} FunctionEnd Function .onSelChange !insertmacro StartRadioButtons $1 !insertmacro RadioButton ${ID_1} !insertmacro RadioButton ${ID_2} SectionSetFlags ${IDG} ${SECTION_OFF} !insertmacro EndRadioButtons FunctionEnd |
Последний раз редактировалось silione, 03-02-2011 в 14:46. Причина: добавил пример Отправлено: 14:36, 03-02-2011 | #943 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать silione,
Ну здесь, уже не прокатит трюк фиктивного отключения группы - в наличие неопределенные состояния групп, отсюда и глюки. 1. Нужно определить начальное состояние секций и групп. 2. Разработать логику переключения и рулить флагами секций. И дальше "прыгать" по логическим меткам (Это вечная проблема с секциями в NSIS). |
------- Отправлено: 17:45, 03-02-2011 | #944 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Есть
из инета, который ставить радиобаттон в группе только на одну секцию из этой группы, но при нажатии на общую группу "GROUP"в случайном порядке выставляются галочки, что совсем не нужно. Подскажите плиз как сделать так, чтобы при клике на "GROUP" галочки выставлялись по умолчанию на первые секции в группе? |
Отправлено: 17:34, 04-02-2011 | #945 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать shell7777,
По этому поводу я уже отвечал здесь Function .onInit SectionSetFlags ${www} ${SECTION_OFF} #отключаем группу SectionSetFlags ${g1o1} ${SF_SELECTED} #определяем, как отмеченный компонент SectionSetFlags ${g2o1} ${SF_SELECTED} #определяем, как отмеченный компонент StrCpy $1 ${g1o1} ; Group 1 - Option 1 is selected by default StrCpy $2 ${g2o1} ; Group 2 - Option 1 is selected by default FunctionEnd |
------- Отправлено: 17:40, 04-02-2011 | #946 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать kotkovets,
огромнейшее приогромнейшее спасибо!!!! Урааа.... |
Отправлено: 17:47, 04-02-2011 | #947 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Я, видимо, дуб.
Почему у меня "компонент №3" может отмечаться одновременно с первым или вторым? И как при всем этом сделать так, чтобы при нажатии на группу "компоненты 1" галочка, либо снималась совсем, либо происходил последовательный перебор между 1, 2 и 3 компонентой? !include "MUI2.nsh" !include "Sections.nsh" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" InstType "все" InstType "не все" OutFile "File.exe" Section "Компонент 0" ID_0 SectionIn 1 2 SectionEnd SectionGroup /e "Компоненты 1" IDG1 Section /o "Компонент 1" ID_1 SectionIn 2 SectionEnd Section "Компонент 2" ID_2 SectionIn 1 SectionEnd Section /o "Компонент 3" ID_3 SectionEnd SectionGroupEnd SectionGroup /e "Компоненты 2" IDG2 Section "Компонент 4" ID_4 SectionIn 1 SectionEnd Section "Компонент 5" ID_5 SectionIn 1 SectionEnd SectionGroupEnd Function .onInit Push $0 StrCpy $R0 ${ID_2} SectionGetFlags ${ID_1} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_1} $0 SectionGetFlags ${ID_2} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${ID_2} $0 SectionGetFlags ${ID_3} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_3} $0 Pop $0 FunctionEnd Function .onSelChange Push $0 StrCmp $R0 ${ID_1} Check_ID_1 SectionGetFlags ${ID_1} $0 IntOp $0 $0 & ${SF_SELECTED} IntCmp $0 ${SF_SELECTED} 0 Done Done StrCpy $R0 ${ID_1} SectionGetFlags ${ID_2} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_2} $0 SectionGetFlags ${ID_3} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_3} $0 Goto Done Check_ID_1: StrCmp $R0 ${ID_2} Check_ID_2 SectionGetFlags ${ID_2} $0 IntOp $0 $0 & ${SF_SELECTED} IntCmp $0 ${SF_SELECTED} 0 Done Done StrCpy $R0 ${ID_2} SectionGetFlags ${ID_1} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_1} $0 SectionGetFlags ${ID_3} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_3} $0 Check_ID_2: SectionGetFlags ${ID_3} $0 IntOp $0 $0 & ${SF_SELECTED} IntCmp $0 ${SF_SELECTED} 0 Done Done StrCpy $R0 ${ID_3} SectionGetFlags ${ID_1} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_1} $0 SectionGetFlags ${ID_2} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${ID_2} $0 Done: Pop $0 FunctionEnd |
Отправлено: 12:32, 06-02-2011 | #948 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать silione,
Могу в этом случае (дабы не выносить мозг ![]() http://forum.oszone.net/post-1326443-307.html |
------- Отправлено: 14:54, 06-02-2011 | #949 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Ыыыыыыыыыыыыы... Ну да, это работает, но сейчас задам самый тупой вопрос...
А как при всем этом сделать чтобы только один раз щелкать по строке? У меня такое ощущение, что замкнутый круг получается, исправляя одну траблу, получаем другую... |
Отправлено: 20:35, 06-02-2011 | #950 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|