|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать K.A.V.,
- Поиск нужной кнопки по тексту на кнопке, не годится для случаев, когда никакого текста нет... Т.е. когда на кнопке - скин-картинка с текстом (OK, Cancel и т.п. ). Такое встречается очень часто. Особенно в окнах, назовём их тактично, так : "продуктов сопровождения для разных приложений" . Там же , как правило, отключены и табы и др. Нужно поизгиляться для перемещения между разными элементами (комбобоксы с выпадающими списками, разные текстовые поля, кнопки и пр. ) Такие "приложения" - отличный полигон для изучения-применения возможностей NSIS А ещё, совершенно не понятно, как с помощью NSIS можно кликать кнопками в окнах с IEFrame (в инсталляторах Corel и др ). Для AutoIt для этого вроде как есть специальная библиотека. чего делать в NSIS, не ясно... Цитата Dodakaedr:
http://nsis.sourceforge.net/LiteFirewall_Plugin или использовать команды из скрипта : http://webistore.ru/administrirovani...andnoj-stroke/ |
|
Последний раз редактировалось MKN, 02-02-2016 в 13:44. Отправлено: 10:46, 02-02-2016 | #1961 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 83
|
Профиль | Отправить PM | Цитировать Парни, вас приветствует Serg866.
Возникла нестандартная задача, нужно проверить содержимое текстового файла. По принципу: если есть фраза "version1.1", то один путь установки, если нет - другой путь. Может примерчики скинете какие-нибудь? В справке только пример как заменять текст в текстовиках... |
Последний раз редактировалось Serg866, 03-02-2016 в 04:59. Отправлено: 04:39, 03-02-2016 | #1962 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
Тут посмотри => http://nsis.sourceforge.net/WordFind И в теме тоже были примеры использования ${WordFind}. |
|
Отправлено: 09:43, 03-02-2016 | #1963 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
работает и с ANSI и с UNICOD |
|
Отправлено: 16:00, 03-02-2016 | #1964 |
Пользователь Сообщения: 83
|
Профиль | Отправить PM | Цитировать Спасибо, господа!
Не хотелось бы плагины подключать сторонние. Обычно я делаю это только если нельзя решить задачу стандартными средствами НСИС. Но ${WordFind} что-то сложная штука. Мне непонятны опции. Задача искать заданное слово во всём текстовом файле, независимо ни от количества строк, ни от чего. Какой параметр надо для этого задать я не пойму. Что означают параметры +2}}, +2*}, -02, E+1{ и т.д. |
Последний раз редактировалось Serg866, 05-02-2016 в 00:35. Отправлено: 00:25, 05-02-2016 | #1965 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
Цитата Serg866:
Как-то так... Section Call test ${If} $0 == 1 ; если фраза найдена ${Else} ; если фраза не найдена ${EndIf} SectionEnd Function test ClearErrors ${LineSum} "$DESKTOP\test.txt" $R0 ; в переменную $R0 заносим количество строк в файле StrCpy $R1 0 ; обнуляем счетчик read: IntOp $R1 $R1 + 1 ; увеличиваем счетчик и читаем следующую строку IntCmp $R1 $R0 0 0 end ; если значение текущей строки больше, чем общее количество строк в файле - переход на метку end ${LineRead} "$DESKTOP\test.txt" "$R1" $R3 ; читаем содержимое строки ${WordFind} "$R3" "version1.1" "E+1{" $R2 ; ищем фразу в строке IfErrors read 0 ; если фраза не найдена - переход на метку read StrCpy $0 1 end: FunctionEnd |
||
Отправлено: 08:30, 05-02-2016 | #1966 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
Что за проблема, добавить к имеющейся куче "боксовых" плагинов - ещё один или столько, сколько надо, и писать в скрипте одну-две строчки , вместо полутора десятков... ps Как вариант, можно так :
здесь MessageBox - для наглядности результата построчного поиска "version1.1" , в MyFile.txt (начало поиска - почему то с нижней строки) |
|
Последний раз редактировалось MKN, 05-02-2016 в 13:32. Отправлено: 10:09, 05-02-2016 | #1967 |
Пользователь Сообщения: 83
|
Профиль | Отправить PM | Цитировать BuZzOFF, MKN
Ещё раз спасибо, всё разжевали мне. P.S: нашёл ещё такой вариант http://nsis.sourceforge.net/Search_for_text_in_file ------------------------------------ единственная проблема: если текстовик большого размера (5 мб например), то инсталлер виснет... Может быть есть решение специально для больших текстовиков? |
Последний раз редактировалось Serg866, 05-02-2016 в 14:48. Отправлено: 14:03, 05-02-2016 | #1968 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
Для больших файлов можно использовать изврат с плагином nsisFile. Искать HEX значение искомой строки , "внутри" файла (version1.1 - берём в шестнадцатиричном виде). Находит пулей. |
|
Отправлено: 15:42, 05-02-2016 | #1969 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Serg866:
Дело, в общем то, не в размере файла, а в количестве строк, давно всем известная проблема NSIS - он не может с одинаковой скоростью читать каждую строку по мере сдвига от начала, говоря простым языком - при использовании команд типа LineRead происходит замедление скорости чтения в зависимости от позиции читаемой строки Попробуйте написать код с отображением порядкового номера читаемой строки и вы увидите, сколько примерно строк NSIS будет читать без понижения скорости |
|
------- Отправлено: 18:08, 05-02-2016 | #1970 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|