Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Какие функции из RegistryFunc.nsh в первую очередь интересуют?
Какие функции из RegistryFunc.nsh в первую очередь интересуют? »
В наипервейшую очередь мне нужно перечисление всех ключей в HKLM\SOFTWARE\Classes\CLSID с параметрами типа REG_BINARY
В ANSI варианте это - ${RegFind} "${HKLM}\SOFTWARE\Classes\CLSID" "/T=REG_BINARY /V=0" EnumReg
Ну и хорошо бы поиск в таком то разделе таких то ключей и значений...
Думаю, RegistryFunc.nsh можно отправлять на пенсию.
Плагин Registry (https://nsis.sourceforge.io/Registry_plug-in) умеет всё и быстрее.
iglezz, действительно, плагин летом обновился, попробую...
Kopejkin
30-12-2023, 13:36
Можно как-либо исправить нечеткое отображение текста элементов при масштабировании дисплея?
https://images2.imgbox.com/59/b4/magu6zWh_o.png
Так выглядит окно инсталлятора при стандартном масштабировании 125%.
Как видно, четким остается только текст заголовка окна.
У меня разрешение экрана небольшое (1366х768).
На дисплеях FHD это выглядит еще хуже.
Kopejkin,
ManifestDPIAware System ; System DPI on Vista/7/8/8.1/10(<10.1607(AU))
ManifestDPIAwareness "PerMonitorV2,System" ; PMv2 on 10.1703(CU)+, System on 10.1607(AU) with NSIS 3.03+
Следует учесть, что в таком случае изображения в MUI будут кривенько отмасштабированы
Kopejkin
30-12-2023, 23:12
Спасибо за подсказку и отсылку на форум Winamp.
Теперь осталось определиться, действительно ли оно мне так уж нужно.
Это решение можно найти и на sf.net и на stackoverflow и даже просто перебором доступных значений (детали в документации (https://learn.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process) и исходниках nsis)
Эта комбинация хорошо работает в многомониторной конфигурации с разным масштабом у мониторов при переносе окна установщика с одного монитора на другой. При этом реализации Per-Monitor V2 DPI Awareness в nsis пока нет.
Свои изображения можно избавить от мыла через подготовку изображений под несколько значений масштабирования (100,125,150,..%) до или в процессе сборки установщика. При запуске - получить от системы используемый масштаб и загрузить подходящее изображение.
С MUI такое не прокатит без переписывания кода, отвечающего за изображения.
Если в Win API найдутся методы качественного масштабирования битмапов - можно будет применить их.
iglezz, Хорошего дня.
Вы ранее приводили пример быстрого извлечения/поиска информации в файле.
Не могли бы вы привести еще и пример удаления строки таким же способом.
Например удаления строк из файла host
0.0.0.0 www.google.com
127.0.0.1 www.google.com
И еще не известно, что там может быть, 0.0.0.0 www.google.com или 127.0.0.1 www.google.com и неизвестна длина пробела после 0.0.0.0 и 127.0.0.1.
Наиболее адекватный способ работы с файлом hosts в nsis на сегодня - использование программы вроде BlueLife Hosts Editor.
Обработка hosts-записей не столь тривиальна, как это может казаться на первый взгляд.
iglezz,
Наиболее адекватный способ работы с файлом hosts в nsis на сегодня - использование программы вроде BlueLife Hosts Editor.
Я правильно понял, вы советуете в установщик вставить два файла программы BlueLife Hosts Editor х32 и х64 версию и в нужном месте, когда дойдет установка до проверки файла hosts, вызывать эту программу и пусть пользователь с помощью этой программы исследует hosts и если обнаружит некие записи, которые нужно удалить, то удалит их с помощью этой программы?
inco1, BlueLife Hosts Editor умеет работать с командной строки, при этом достаточно одного 32-битного hEdit.exe
iglezz, Спасибо, это меняет дело. Попробую.
Всем доброго дня.
Есть вопрос, на который я нигде не нашел ответа. Помогите, пожалуйста.
Как известно некоторые программы в реестре прописывают свое место установки в кавычках и в конце ставят слэш \.
Это в реестре выглядит так:
InstallLocation REG_SZ "C:\Program Files\"
или
InstallLocation REG_SZ "C:\Program Files"
Ни первое, ни второе, если это считать с реестра и записать в переменную не работает для определения файла из этой папки.
Для считывания и записи в переменную использую ReadRegStr
В связи с этим вопрос, как можно удалить кавычки и слэш, чтобы в переменную записалось правильно C:\Program Files, без кавычек и слэша в конце?
В большинстве сборок портативных программ созданных с помощью NSIS которыми пользуюсь, есть директория \App\AppInfo\Launcher с файлами настроек. Это ведь не нативная фишка NSIS, где найти пример такого исходника?
VV189,
Лаунчеры в портативках, которыми вы пользуетесь, созданные в PortableApps com, а не в NSIS.
Лаунчеру, созданном в NSIS не нужен файл сценария App\AppInfo\Launcher\"Прога".ini, потому что работа идет напрямую без "посредника". Это, примерно, как передаешь сообщение с уст в уши посыльному, а посыльный передает со своих уст в уши нужному человеку, а не прямое сообщение с уст в уши нужному человеку.
PortableApps com имеет свою собственную оболочку, на основе NSIS. Для "нормальных" лаунчеров сама оболочка PortableApps com скудненькая и всё равно придется дополнительно писать скрипт "Custom.nsh", который немного расширяет возможности оболочки. Некоторые возможности NSIS даже не удастся реализовать через PortableApps com.
Kopejkin
06-04-2024, 17:36
30 марта NSIS обновился.
Текущая версия: NSIS 3.10 (https://nsis.sourceforge.io/Download)
Я создал свою версию репака для IDM с собственным брендингом, заголовком, заставкой и музыкой в фоновом режиме, а установщик не автоматизирован, просто распаковываю файлы в папку Program Files, но у меня есть проблема, связанная с расширением браузера для Chrome, Brave и Firefox, я не могу понять, как их интегрировать в браузеры?
Здравствуйте. Для модификации файлов JSON пробовал использовать плагин nsJSON. Столкнулся с проблемой, файл перезаписывается, остается только новая запись. У автора плагина, в docs, про модификацию написано мало, примеров вообще нет: Modifying JSON
------------------------------------------------------------------------
nsJSON::Set [/tree Tree] [NodePath] /value "Value"
Sets the value of the given node. The value can be any single value or it can be JSON code. The node will be created if it does not exist.
Multiple JSON trees can be manipulated at the same time. Add /tree Tree (where Tree is the tree name) before all other plug-in
arguments to specify which JSON tree you are manipulating.
В этом "tree name" кажется все и дело, как правильно написать, перепробовал очень много вариантов- замена вообще не происходит, в случае "" вместо "tree name" - перезапись файла.
Пробовал по автору плагина:
nsJSON::Set /tree Tree 'i18n' 'locale' /value '"en"' /file "$EXEDIR\Data\EDRLab\state.json" ,где Tree у меня должна быть нода 'i18n', начало ветки, и старше нет, NodePath тоже с нее начинается. Пробовал писать по разному.
nsJSON::Serialize /file "$EXEDIR\Data\EDRLab\state.json"
Решение нашел, простой заменой текста другим плагином, но помогите разобраться с nsJSON.
Сырок Дружба
24-05-2024, 11:23
Доброго времени суток, товарищи знатоки. Есть вопрос. Подскажите толковый способ, плагин, макрос снять IP адрес с ПК? Необходим для сверки в процессе установки.
Процесс поиска пока приводит к старым либо неподдерживаемым плагинам.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.