|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 |
|
Ветеран Сообщения: 2398
|
Профиль | Отправить 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 | |
|