|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
![]() Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
|
|
Отправлено: 17:57, 05-03-2023 | #2671 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
Даже адреса с 127.0.0.1 не пропускаются, а бекапятся и записываются как 0.0.0.0 Отступы и пробелы так же четко отрабатываются и не дублируются. Дааа..., код в несколько строчек для качественной правки HOSTS это нечто. Теперь понятно, сколько вложено труда в hostsblock.nsh. MKN, Так же огромная благодарность за отклик и проделанную работу. Но работа iglezz - шедевр. |
|
Отправлено: 18:37, 05-03-2023 | #2672 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать MKN, inco1,
В качестве замечания, на будущее и для лучшего понимания. ${LineRead} В подобных циклах - штука дико неэффективная. Алгоритм маляра Шлемиеля, как шутят. Для N-ой по номеру строки будет сделана куча работы - FileOpen, N FileRead'ов, FileClose, счётчики и проверки Простейший цикл последовательного чтения файла: |
Отправлено: 18:59, 05-03-2023 | #2673 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Проверил множество раз. Ваш предложенный компактный вариант не работает, если файла hosts.ics не существует. Точнее сказать работает, но добавляет только четыре строки без первой. Если же файл hosts.ics уже существует, то работает правильно. как и задумано. Проверял самым простым экзешником: Скрытый текст
Unicode true SetOverwrite on RequestExecutionLevel admin !include "x64.nsh" !include "LogicLib.nsh" !include "hostsblock.nsh" Section ${IfThen} ${RunningX64} ${|} ${DisableX64FSRedirection} ${|} Var /global hostsfile StrCpy $hostsfile "$SYSDIR\drivers\etc\hosts.ics" ${IfNot} ${FileExists} $hostsfile FileOpen $0 $hostsfile W FileClose $0 ${EndIf} SetFileAttributes $hostsfile NORMAL ${hostsfile_BlockHost} $hostsfile 'martau.com' ${hostsfile_BlockHost} $hostsfile 'www.martau.com' ${hostsfile_BlockHost} $hostsfile 'www.total-uninstall.com' ${hostsfile_BlockHost} $hostsfile 'total-uninstall.com' ${hostsfile_BlockHost} $hostsfile '64.91.254.118' SetFileAttributes $hostsfile READONLY SectionEnd Тот, что я предложил с лишними записями работает как надо, и когда файл hosts.ics отсутствует и когда он уже есть: Скрытый текст
Unicode true SetOverwrite on RequestExecutionLevel admin !include "x64.nsh" !include "LogicLib.nsh" !include "hostsblock.nsh" Section Var /global hostsics StrCpy $hostsics "$SYSDIR\drivers\etc" ${IfThen} ${RunningX64} ${|} ${DisableX64FSRedirection} ${|} ${If} ${FileExists} "$hostsics\hosts.ics" SetFileAttributes "$hostsics\hosts.ics" NORMAL StrCpy $0 '$hostsics\hosts.ics' StrCpy $1 '$hostsics\1.txt' StrCpy $2 '$hostsics\2.txt' CopyFiles /SILENT $0 $1 FileOpen $3 $1 A FileSeek $3 0 END FileClose $3 CopyFiles /SILENT $1 $2 FileOpen $3 $2 A FileClose $3 ${hostsfile_BlockHost} $2 'martau.com' ${hostsfile_BlockHost} $2 'www.martau.com' ${hostsfile_BlockHost} $2 'www.total-uninstall.com' ${hostsfile_BlockHost} $2 'total-uninstall.com' ${hostsfile_BlockHost} $2 '64.91.254.118' CopyFiles /SILENT $2 $0 Delete "$hostsics\1.txt" Delete "$hostsics\2.txt" ${Else} FileOpen $0 "$hostsics\hosts.ics" w FileWrite $0 "0.0.0.0 martau.com $\r$\n" FileWrite $0 "0.0.0.0 www.martau.com $\r$\n" FileWrite $0 "0.0.0.0 total-uninstall.com $\r$\n" FileWrite $0 "0.0.0.0 www.total-uninstall.com $\r$\n" FileWrite $0 "0.0.0.0 64.91.254.118 $\r$\n" FileClose $0 ${EndIf} SetFileAttributes "$hostsics\hosts.ics" READONLY SectionEnd Так же правильно работает, как с уже созданным файлом "hosts.ics", так и без него такой вариант: Скрытый текст
Unicode true SetOverwrite on RequestExecutionLevel admin !include "x64.nsh" !include "LogicLib.nsh" !include "hostsblock.nsh" Section Var /global hostsfile StrCpy $hostsfile "$SYSDIR\drivers\etc\hosts.ics" ${IfThen} ${RunningX64} ${|} ${DisableX64FSRedirection} ${|} ${If} ${FileExists} "$hostsfile" SetFileAttributes "$hostsfile" NORMAL ${hostsfile_BlockHost} "$hostsfile" 'martau.com' ${hostsfile_BlockHost} "$hostsfile" 'www.martau.com' ${hostsfile_BlockHost} "$hostsfile" 'www.total-uninstall.com' ${hostsfile_BlockHost} "$hostsfile" 'total-uninstall.com' ${hostsfile_BlockHost} "$hostsfile" '64.91.254.118' ${Else} FileOpen $0 "$hostsfile" w FileWrite $0 "0.0.0.0 martau.com $\r$\n" FileWrite $0 "0.0.0.0 www.martau.com $\r$\n" FileWrite $0 "0.0.0.0 total-uninstall.com $\r$\n" FileWrite $0 "0.0.0.0 www.total-uninstall.com $\r$\n" FileWrite $0 "0.0.0.0 64.91.254.118 $\r$\n" FileClose $0 ${EndIf} SetFileAttributes "$hostsfile" READONLY SectionEnd |
Последний раз редактировалось inco1, 06-03-2023 в 12:39. Причина: Добавлено Отправлено: 01:59, 06-03-2023 | #2674 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать inco1, Файл исправлен по старой ссылке.
Косяков там на самом деле там было больше.. |
Отправлено: 22:28, 06-03-2023 | #2675 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz, Огромнейшая благодарность.
Теперь код, практически в семь строчек работает четко,красиво и правильно, и лучше, чем код в семьдесят строк из "справки", которую всем в свое время навязывал K.A.V. Ему было пытались объяснить, что его код с hosts не корректно работает, но в ответ было, типа "сам дурак, учи справку". |
Отправлено: 12:28, 07-03-2023 | #2676 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать Задача: нужна кастомная страница, на которой, к примеру, вверху страницы помещаются несколько кликабельных либо кнопок, либо текст-заголовков, не суть.
При клике на кнопке-заголовке - раскрывается соответствующий список с чекбоксами. При клике на другой кнопке-заголовке - предыдущий список закрывается, а новый открывается. Ессно запоминается состояние чекбоксов, иходя из которого применяются действия... Список с чекбоксами позволяет сделать плагин ListView. Но возможно ли сделать несколько раскрывающихся списков на кастомной странице ? И ещё, можно ли, имея статичную часть окна на странице с кликабельными заголовками, раскрывать списки с чекбоксами в виде других вновь созданных собственных окон с разными элементами в них ? (Совершенно не ясно, как в NSIS можно на одной странице переключать разные окна, при этом сохраняя статично-видимую часть окна откуда осуществляется переключение...) |
Последний раз редактировалось MKN, 19-03-2023 в 12:19. Отправлено: 11:57, 19-03-2023 | #2677 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата MKN:
А дальше зависит от потребностей и фантазии.. пример
RequestExecutionLevel user !include "LogicLib.nsh" !include "nsDialogs.nsh" Page custom NSD Section SectionEnd Var Dialog Var hButtonOpt1 Var hButtonOpt11 Var hButtonOpt12 Var hButtonOpt13 Var hButtonOpt2 Var hButtonOpt21 Var hButtonOpt22 Var hButtonOpt3 Var hButtonOpt31 Var hButtonOpt32 Function NSD nsDialogs::Create 1018 Pop $Dialog ${NSD_CreateFirstRadioButton} 0u 0u 30% 16u "Options 1" Pop $hButtonOpt1 ${NSD_OnClick} $hButtonOpt1 SwitchOptions ${NSD_CreateAdditionalRadioButton} 33% 0u 30% 16u "Options 2" Pop $hButtonOpt2 ${NSD_OnClick} $hButtonOpt2 SwitchOptions ${NSD_CreateAdditionalRadioButton} 66% 0u 30% 16u "Options 3" Pop $hButtonOpt3 ${NSD_OnClick} $hButtonOpt3 SwitchOptions ${NSD_CreateCheckBox} 10u 30u 80u 20u "111" Pop $hButtonOpt11 ${NSD_AddStyle} $hButtonOpt11 ${WS_GROUP} ${NSD_CreateCheckBox} 10u 50u 80u 20u "222" Pop $hButtonOpt12 ${NSD_CreateCheckBox} 10u 70u -20u 20u "333" Pop $hButtonOpt13 ${NSD_CreateCheckBox} 10u 30u -20u 20u "2x111" Pop $hButtonOpt21 ${NSD_CreateCheckBox} 10u 50u -20u 20u "2x222" Pop $hButtonOpt22 ${NSD_CreateCheckBox} 10u 30u -20u 20u "3x111" Pop $hButtonOpt31 ${NSD_CreateCheckBox} 10u 50u -20u 20u "3x222" Pop $hButtonOpt32 SendMessage $hButtonOpt1 ${BM_CLICK} 0 0 nsDialogs::Show FunctionEnd Function SwitchOptions Pop $0 ${Select} $0 ${Case} $hButtonOpt1 StrCpy $1 ${SW_SHOW} StrCpy $2 ${SW_HIDE} StrCpy $3 ${SW_HIDE} ${Case} $hButtonOpt2 StrCpy $1 ${SW_HIDE} StrCpy $2 ${SW_SHOW} StrCpy $3 ${SW_HIDE} ${Case} $hButtonOpt3 StrCpy $1 ${SW_HIDE} StrCpy $2 ${SW_HIDE} StrCpy $3 ${SW_SHOW} ${EndSelect} ShowWindow $hButtonOpt11 $1 ShowWindow $hButtonOpt12 $1 ShowWindow $hButtonOpt13 $1 ShowWindow $hButtonOpt21 $2 ShowWindow $hButtonOpt22 $2 ShowWindow $hButtonOpt31 $3 ShowWindow $hButtonOpt32 $3 FunctionEnd |
|
Отправлено: 18:56, 19-03-2023 | #2678 |
Ветеран Сообщения: 2371
|
Профиль | Отправить PM | Цитировать iglezz,
Такой способ понятен, но списки хотелось бы выпадающие, а не пропадающие... Если всё же использовать несколько ListView размером во всю страницу, их получится переключать(скрывать) без проблем ? Они ведь будут друг на друге... И запомниться ли состояние выбранных элементов в LV при переключении ? |
Отправлено: 19:12, 19-03-2023 | #2679 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать MKN, А тут всё равно какой контент будет. Хоть Listview, хоть RichText, хоть видео...
На состояние контролов это не повлияет- они просто прячутся/показываются. |
Отправлено: 19:23, 19-03-2023 | #2680 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|