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

hb860
27-01-2010, 20:46
Без перепаковки не получится. Окно можно скрыть при помощи утилит cmdow.exe и hidecon.exe. Предотвратить не получится

dracosha
28-01-2010, 01:19
Может и вам есть смысл так сделать ? »
Неа. Такой вариант для моих уже более 100 имеющихся компонентов думаю будет не актуальным.
Я напишу вам это, если уважаемый K.A.V. не сделает раньше. »
Спасибо большое. С этим уже разобрался... Примел выложил NoName01.cpp вот здесь (http://forum.oszone.net/post-1329361-346.html)
hb860, может поможете мне вот с этим:

Мне нужно что бы при выборе компонента 1, стали активными для выбора компонент 2 компонент 3 и компонент 4, и в тоже время компоненты 2, 3 и 4 не должны выбираться 1 из 3, (т.е. что бы можно было поставить галочки на все компоненты 2 ,3 и 4). Если компонент 1 не выбран значит компоненты 2, 3 и 4 должны быть неактивными

Section /o "test1" section1
SectionEnd
Section /o "test2" section2
SectionEnd
Section /o "test3" section3
SectionEnd
Function .onSelChange
SectionGetFlags ${section1} $1
SectionGetFlags ${section2} $2
SectionGetFlags ${section3} $3
StrCmp $1 "1" 0 N1
SectionGetFlags ${section2} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section2} $0
SectionGetFlags ${section3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section3} $0
N1:
StrCmp $2 "1" 0 N2
SectionGetFlags ${section1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section1} $0
SectionGetFlags ${section3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section3} $0
N2:
StrCmp $3 "1" 0 N3
SectionGetFlags ${section1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section1} $0
SectionGetFlags ${section2} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${section2} $0
N3:
FunctionEnd
»
Товарищ K.A.V. очень помог мне этим примером, но я этот пример использовал для других компонентов как самый настоящий скрипт. Смог догадаться только в переименовании секций на свои имена
Народ! Пожалуйста! Растолкуйте для новичка весь этот скрипт... Чтоб было понятно что тут за что отвечает.
Может тогда мне станет понятно как решить мою задачку.

It4a
28-01-2010, 01:32
Интересно даже стало... А что там не получилось на автомате всё сделать? »
К NSIS претензий нет - это проблема с правами пользователей, но это решаемо в процессе.
Нужно что бы было одним файлом, но оказалось что несколькими удобней(даже помоему лучше так, как приложения некоторые не всем нужны), но это не суть.
1. Хотел бы поинтересоваться как в BrandingText сделать тест ссылкой на ресурс кликабельной.
2. При выборе компонент(где галки ставим/снимаем) появляется текст, в пределах окна, компоненту описывающий, а вот возможно сделать рамку с другой стороны которая показывала бы изображения по такому же принципу.

K.A.V.
28-01-2010, 03:45
Нужно что бы было одним файлом, но оказалось что несколькими удобней »
Фишка то в чем, про что я говорил, про то, что у NSIS ограничение в 2 Гб и использование нескольких упакованных с помощью NSIS "инсталляторов" дают возможность создавать:
1. Так сказать "многотомные" архивы :)
2. Обойти ограничение в 2 Гб, сохранив всю гибкость в установке ;)
3. Можно удалять эти отдельные архивы, как вы и сказали, когда разные архивы содержат разные компоненты (как например дополнения в Photoshop CS3)

1. Хотел бы поинтересоваться как в BrandingText сделать тест ссылкой на ресурс кликабельной. »

Сначала необходимо убрать флаг "WS_DISABLED" с элемента 1028 (диалог 105), обычно редактировать необходимо файл (если не прописывали свою оболочку) по пути \Program Files\NSIS\Contrib\UIs\modern.exe

Затем, в начале кода вставить

!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit


И ещё потом

Function myGuiInit
GetDlgItem $0 $HWNDPARENT 1028
Linker::link /NOUNLOAD $0 "http://www.google.com/"
FunctionEnd

Function .onGUIEnd
Linker::unload
FunctionEnd

Кстати не забудьте сам плагин Linker скачать ;)


2. При выборе компонент(где галки ставим/снимаем) появляется текст, в пределах окна, компоненту описывающий, а вот возможно сделать рамку с другой стороны которая показывала бы изображения по такому же принципу. »
Я помню задавался таким же вопросом, когда писал твикер, в итоге - получилось, но только при условии, что изображения будут одинаковыми размерами, доделать я не доделал данную возможность, т.к. многовато скринов нужно было делать... :)
Как делать я сейчас с ходу не вспомню, т.к. того кода вроде нет...а может и есть, не знаю :)
Помню, что я правил файл MUI.nsh а конкретно функцию "onMouseOverSection" :)

drynpavel
28-01-2010, 10:29
может не в тему, но все же про nsis. Подскажите, а есть ли какие нибудь ключи для при запуске деинсталятора nsis для "тихого " удаления программы?
Пробовал /S - не пошло.

hb860
28-01-2010, 11:42
drynpavel, как раз должно было пойти.
Если в деинсталляторе не отключена тихая установка, то пойдет
uninstall.exe /S
S - обязательно большая

hb860
28-01-2010, 19:51
как в BrandingText сделать тест ссылкой на ресурс кликабельной »
В шапке. Включу в статью очередную

dracosha
28-01-2010, 21:15
Господа ГУРУ! Неужели для Вас это (http://forum.oszone.net/post-1331868-362.html) сложный вопрос?
K.A.V., hb860, помогите пожалуйста :help:

NoName01.cpp
29-01-2010, 22:13
Здраствуйте!
Имеется 3 секции. Одна секция RO. В функции .onSelChange я в зависимости от состояния активных секций меняю состояние неактивной(RO).
У меня такая проблемка: после запуска инсталлятора неактивная секция "бледного" цвета. Но когда я меняю ее состояния на SF_SELECTED или наоборот, то она выделяется, продолжает оставаться RO, но становится зеленой. Можно ли сделать чтобы RO секция всегда оставалась бледной???

И еще: как сделать неактивной кнопку Далее на странице компонентов? (Мне нада это впихнуть в функцию .onSelChange)
Решил этот вопрос:
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 0

Заранее спасибо!

dracosha
30-01-2010, 00:18
Ладно... Оставлю этот (http://forum.oszone.net/post-1331868-362.html) вопрос на потом.
Но сразу же хочу попросить помощи о создании странички выбора скина.
Нужно что бы слева шли названия скинов, а справа чтоб при наведении на имя или хотя бы при выборе скина показывалась картинка скина. Чекбоксов для выбора скинов будет 10 штук (т.к. скинов всего 10 штук :) ) ну и надо что бы выбор работал 1 из 10.
Помогите пожалуйста.

K.A.V.
30-01-2010, 06:28
Возможно, сейчас я скажу слова, на которые обидятся некоторые участники, но просить прощения я не собираюсь, говорю только от себя

Господа ГУРУ! Неужели для Вас это сложный вопрос? »
Ладно... Оставлю этот вопрос на потом. »
Я пробовал, но там проблема, что как и написал NoName01.cpp:
SF_SELECTED или наоборот, то она выделяется, продолжает оставаться RO, но становится зеленой. »
я не знаю, скорее всего есть какой-либо флаг или особый синтаксис (а может это и глюк NSIS), то что я вам писал ранее с отметкой и разными манипуляциями с секциями/создание 3х деинсталляторов - я делал в первый раз, не было таких необходимостей

А теперь, вы задаёте следующий вопрос #370 (http://forum.oszone.net/post-1333957-370.html)
Цитирую отдельно:
хочу попросить помощи »
Разве речь идёт о помощи? Мне кажется, здесь смысл другой - напишите за меня, чтобы мне нужно было только скопировать ваш код и вставить в свой скрипт
Нужно что бы слева шли названия скинов, а справа чтоб при наведении на имя или хотя бы при выборе скина показывалась картинка скина. »
А разве я не ответил на вопрос №2 поста It4a - #363 (http://forum.oszone.net/post-1331876-363.html)
А теперь вы задаёте такой же "вопрос", но так сказать о "просьбе" всё-таки написать этот код
ну и надо что бы выбор работал 1 из 10 »
А разве вы это сами не можети реализовать? Даже выбор 1-го компонента из 10? Вам не кажется это "подозрительным"? В работе с секциями я думаю, мы разжевали всё уже очень подробно, например, мой пост #196 (http://forum.oszone.net/post-1243749-196.html)
dracosha, лично вы, что сделали для реализации нужной вам возможности? Ничего...я ведь прав?


А зачем вообще нужна справка по NSIS? И не нужно говорить, что там всё написано на английском языке, я начал изучать NSIS в лет 16-17 не зная английского языка (и сейчас не знаю) и никакого языка программирования, с использованием справки и примеров в папки NSIS\Examples
Это так сложно? Ввести в "указатель" в файле справки нужную вам команду и прочитать её описание? Там на все команды написаны подробнейшие примеры

Этими словами я не обращаюсь к кому-то конкретно и не хочу сказать, что лично я не собираюсь отвечать/помогать в разрешении вопросов, но посмотрите, как называется наша тема? NSIS - все вопросы, а не NSIS - скажите, что вам нужно, а мы напишем за вас готовый код

На написание данного поста меня натолкнуло:
1. У меня сейчас, в данный момент, просто катастрофически не хватает времени
2. Неужели для Вас это сложный вопрос? »
Мы всё видим, мы тоже люди и не сидим каждую секунду в этой теме с включенным HM NIS Edit, чтобы как только появится вопрос, сразу бросаться писать код, и всего о NSIS мы не знаем

Вроде всё.

dracosha
30-01-2010, 16:56
K.A.V., Вы конешно имеете полное право на такие высказывания, но Вас же никто не заставляет помогать! Вас просят о помощи, но помогать или нет это решать Вам.
И по-поводу английского языка хочу сказать что я имею полное право говорить о том что я не знаю английского... Да! Вы можете сказать в ответ что есть куча переводчиков и можно воспользоваться ими... Но переводчики не умеют переводить такие специфические тексты как положено. Так что новичку без знания английского с этим разобраться нереально... Если бы переводчики могли переводить все как положено на русский то уже давным давно был бы готовый для скачивания русский хелп по nsis. Я бы сам лично его сделал. Однако его до сих пор нет.
И таких примеров как давали Вы лично мне в справке нет. Там конешно же есть похожие примеры в 3 строки, но в этих трех строчках я разобраться не могу, т.к. не понимаю за что отвечает каждый элемент. Примеров с прогой идет конешно же тоже много, но того что мне надо я не нашел, хотя скомпилил полностью все примеры которые были с nsis. Да что тут далеко ходить... Вы сами говорите что еще не все знаете, а что тогда говорить о новичках?
Тот скрипт который у меня уже есть на сегодняшний день написан только благодаря Вам и hb860. hb860 сделал отличные примеры на практике. Очень жаль что примеров там еще мало.
Форум же для того и существует что бы помогать друг другу.
И помощи от Вас я конешно же очень жду, :blush2: а поможете Вы мне или нет это безусловно Ваше право.

hb860
30-01-2010, 20:40
Под постом K.A.V. я подписался
Очень жаль что примеров там еще мало. »
Вы и любой желающий может начать писать статьи со мной вместе. Я опубликую их здесь и на своем сайте. Я только "за", это поможет людям быстро освоить NSIS, и , кажется, немного решит проблему:
я имею полное право говорить о том что я не знаю английского »
Я в общем-то, лично далеко не гуру английского, и те посты, которые я делаю на соотв. форумах, вызывают улыбку англоязычных пользователей.
Если бы переводчики могли переводить все как положено »
Зачем переводить то? Вопрос тут не в том чтобы перевести. Надо сесть, подумать и написать.
От вас лично требуется взять блокнот, попихать в него примеры из справки и скомпилить. Увидя, как они работают на практике, необходимо реализовать некий алгоритм, последовательность действий, где вы сможете применить этот функционал команд. Вот что требуется.
Неужели для Вас это сложный вопрос? »
Вовсе нет. Но нам надо сесть, разработать алгоритм и реализовать код- все то, что лично вы не желаете делать, ибо ни я, ни K.A.V., по всей видимости, такую задачу не решали и нам она "в новинку" (и её практическая ценность, я полагаю, весьма сомнительна). Нам несложно, но это требует времени, и немалого. Мы не отказываем вам в помощи и не ставим целью оскорбить вас или ваши навыки, но, действительно, у нас и другие дела. Впрочем, два поста выше это уже было сказано.
dracosha, попробую завтра пописать для вас.

dracosha
31-01-2010, 00:44
что лично вы не желаете делать »
:o почему Вы так решили? Я уже несколько дней мучаюсь над этим, но у меня ничего не получается
И я все больше и больше понимаю что для того что бы я мог разобраться с предстоящими задачами по выбору компонентов мне нужно все таки понимать смысл всех переменных. А я их непонимаю. И то что в хелпе написано для меня непонятно, а когда переводчиком перевожу мне становиться плохо от того как переводится этот текст.

K.A.V.
31-01-2010, 20:18
Вы можете сказать в ответ что есть куча переводчиков и можно воспользоваться ими... »
Так что новичку без знания английского с этим разобраться нереально... »
Вы наверное не внимательно прочитали мой пост ;)
я начал изучать NSIS в лет 16-17 не зная английского языка (и сейчас не знаю) »
Просто было большое желание и очень много тестов :)
Не скажу, что всё получалось сразу, даже сейчас не всё получается с первого раза, но усилия, которые прилагаются для реализации нужной возможности не оказываются напрасными, просто нужно запастись побольше терпением и желанием :)

И таких примеров как давали Вы лично мне в справке нет. »
Сначала команды изучаются по отдельности методом тестов естественно, затем включаем устройство под названием мозг и посылаем ему команду на выявление возможных связок команд в функции, т.е. что можно сделать с использованием нескольких команд, вот тогда и рождаются функции... ;)

Всё, на этом предлагаю прекратить оффтоп :)

NoName01.cpp
31-01-2010, 20:31
Здраствуйте! У меня вопрос по поводу плагина MSSQL OLEDB plug-in.
Я подключаюсь к sql серверу, делаю запрос и получаю результат с помощью MSSQL_OLEDB::SQL_GetRow.
После этого возвращается строка. И если запрос возвращает не одно значение а несколько(можна сказать структуру), то строка будет примерно вот такого типа:
Value1|Value2|...
Тоесть разделитель это символ |
Проблема в том, что мне нужно получить только одно конкретное значение(например первое), а не всю строку.

Как мне разбить эту строку?
Видел в интернете !insertmacro GET_STRING_TOKEN. Но у меня компилятор его не нашел, и оно я так понял разделяет строку с пробелами.

K.A.V.
01-02-2010, 07:54
Видел в интернете !insertmacro GET_STRING_TOKEN »
Читали здесь (http://nsis.sourceforge.net/Split_strings)?
Там нужно добавить целую страницу кода :) И как покзано в том коде, ещё нужно создать пару переменных с помощью !define:

!define PART ""
!define INPUT ""

Я сам не тестировал, поэтому сказать наверняка не могу :)


Но могу представить на обозрение собственный механизм ;)
В начале кода:

!include "StrFunc.nsh"
${StrStrAdv}
${StrRep}


Предположу, что наша строка хранится в переменной $1

strcpy $1 "C|Program Files|NSIS|test1|test2"

# Предварительно, необходимо добавить символ "|" в конец строки, чтобы прочитать последнее значение
StrCpy $1 "$1|"

now:
${StrStrAdv} $0 "$1" "|" ">" "<" "0" "0" "1"
StrCmp $0 "" end 0
# Выполняем код, который нужен [ начало ]
MessageBox MB_OK|MB_ICONINFORMATION "$0$\n$1"
# Выполняем код, который нужен [ конец ]

# Продолжаем фильтр строки
${StrRep} $1 "$1" "$0|" ""
goto now
end:


dracosha, с секциями можно вот так реализовать:
Function .onSelChange
SectionGetFlags ${section1} $1
StrCmp $1 "0" 0 noUnCheck
SectionSetFlags ${section2} 0
SectionSetFlags ${section3} 0
SectionSetFlags ${section4} 0
noUnCheck:
FunctionEnd


Раз уж всем нужна возможность показывать картинки на странице выбора компонентов, то попозже попробую поискать свой код, который я когда-то писал...

NoName01.cpp
02-02-2010, 17:39
Люди, как сделать чтобы при запуске денисталлятора автоматом выбирался язык который юзер выбрал при запуске инсталлятора?
Записывать выбранный язык в реестр?

K.A.V.
02-02-2010, 17:45
Люди, как сделать чтобы при запуске денисталлятора автоматом выбирался язык который юзер выбрал при запуске инсталлятора?
Записывать выбранный язык в реестр? »
А почему бы и нет, вы всё равно создаёте ветку программы в Uninstall в реестре, от добавления 1 параметра я думаю ничего плохого не случится ;)

orthodox
02-02-2010, 20:06
Подскажите, пожалуйста!
Нашел в примерах такое
System::Call '${sysSetupCopyOEMInf}?e (R1, R2, ${SPOST_PATH}, 0, 0, 0, 0, 0) .r0'
Я так понимаю, что таким образом формируется список параметров. Ткните носом, где можно найти описание такого синтаксиса передачи параметров. Ни в документации на nsis.sourceforge.net, ни поиском не могу по этому поводу ничего найти. Наверное не везет :search:




© OSzone.net 2001-2012