|
Компьютерный форум 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 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Для поиска файлов можно применить Locate из FileFunc.nsh
Для сопоставления имён файлов - WinAPI-функции PathMatchSpec/PathMatchSpecEx PathMatchSpecEx может сопоставлять строку с множеством шаблонов, разделяемых точкой с запятой (из-за чего ";" в шаблонах использовать нельзя). пример
!appendfile 'test ccc' '' !appendfile 'test1234' '' !system 'md "test"' !system 'md " test2"' !system 'md "test aaa"' !system 'md "test bbb"' !system 'md "test xxx"' !system 'md "test yyy"' !system 'md "test_xyz"' ShowInstDetails show RequestExecutionLevel user SetFont 'Fira Code Retina' 9 InstallColors /windows !include LogicLib.nsh !include FileFunc.nsh Section UseLocate ${Locate} $EXEDIR '/M=test *' DeleteFilesByMask SectionEnd Function DeleteFilesByMask SetDetailsPrint both System::Call 'shlwapi.dll::PathMatchSpecEx(tR7, ts, i1)p.R0' 'test xxx;test yyy' ${If} $R0 == 1 ${If} $R6 == '' DetailPrint 'RMDir $R7' ; RMDir /r '$R9' ${Else} DetailPrint 'Delete $R7' ; Delete '$R9' ${EndIf} ${Else} DetailPrint 'Skip $R7' ${EndIf} Push '' SetDetailsPrint textonly FunctionEnd |
Отправлено: 03:13, 26-04-2023 | #2721 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Всем привет. Столкнулся недавно с файлами *.json.
Нашёл плагин NsJSON. Как создать файл с данными я понял: а как потом из этого файла удалить строки не понял. Может кто знает? |
Отправлено: 05:20, 26-04-2023 | #2722 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата AlekseyPopovv:
Автор плагина давно пропал, так что надеятся на исправление ошибок особо не стоит. Лучше использовать более проверенный временем инструмент вроде jq |
|
Отправлено: 13:34, 26-04-2023 | #2723 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Всем хорошего дня и здоровья.
Помогите разобраться. Не могу разобраться с условиями, когда все последующие условия привязаны к первому условию, а в этих последующих условиях есть свои условия.... Правильно ли расставил ${EndIf} с такими условиями. По предварительным тестам работает, но не уверен в правильности кода. Последовательность действий изменять нельзя: Скрытый текст
Section Run64 ; если запущено на х64 ${If} ${RunningX64} ; (здесь некое действие) ;; == произойдет некое действие ${If} ${FileExists} "$R1\A.exe" ; (здесь некое действие) ;; == если найден файл A.exe, то произойдет некое действие ${EndIf} ${IfNot} ${FileExists} "$R2\A.txt" ${AndIfNot} ${FileExists} "$R2\B.txt" ;; == если не найден файл A.txt и B.txt , то произойдет некое действие ; (здесь некое действие) ${EndIf} ${IfNot} ${FileExists} "$R3\B.exe" ;; == если не найден файл B.exe, то произойдет некое действие ; (здесь некое действие) ${EndIf} ${If} $R4 != 1234567890 ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ; (здесь некое действие) ${If} ${FileExists} "$R5\C.exe" ;; == если значение переменной $R4 не равно 1234567890, и найдены файлы C.exe и D.exe, то произойдет некое действие ${AndIf} ${FileExists} "$R5\D.exe" ; (здесь некое действие) ${EndIf} ; (здесь некое действие) ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ${EndIf} ; (здесь некое действие) ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ${EndIf} SectionEnd |
Отправлено: 07:40, 06-05-2023 | #2724 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата inco1:
Так будет легче увидеть логические ошибки, которые не ловятся компилятором. Скрытый текст
Section Run64 ; если запущено на х64 ${If} ${RunningX64} ; (здесь некое действие) ;; == произойдет некое действие ${If} ${FileExists} "$R1\A.exe" ; (здесь некое действие) ;; == если найден файл A.exe, то произойдет некое действие ${EndIf} ${IfNot} ${FileExists} "$R2\A.txt" ${AndIfNot} ${FileExists} "$R2\B.txt" ;; == если не найден файл A.txt и B.txt , то произойдет некое действие ; (здесь некое действие) ${EndIf} ${IfNot} ${FileExists} "$R3\B.exe" ;; == если не найден файл B.exe, то произойдет некое действие ; (здесь некое действие) ${EndIf} ${If} $R4 != 1234567890 ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ; (здесь некое действие) ${If} ${FileExists} "$R5\C.exe" ;; == если значение переменной $R4 не равно 1234567890, и найдены файлы C.exe и D.exe, то произойдет некое действие ${AndIf} ${FileExists} "$R5\D.exe" ; (здесь некое действие) ${EndIf} ; (здесь некое действие) ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ${EndIf} ; (здесь некое действие) ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ${EndIf} SectionEnd Далее нужно избавляться от избыточной вложенности и/или сложности, порой с изменением структуры проекта. |
|
Отправлено: 13:25, 06-05-2023 | #2725 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
Скрытый текст
Section Run64 ; если запущено на х64 ${If} ${RunningX64} ; (здесь некое действие) ;; == произойдет некое действие ${If} ${FileExists} "$R1\A.exe" ; (здесь некое действие) ;; == если найден файл A.exe, то произойдет некое действие ${EndIf} ${IfNot} ${FileExists} "$R2\A.txt" ${AndIfNot} ${FileExists} "$R2\B.txt" ;; == если не найден файл A.txt и B.txt , то произойдет некое действие ; (здесь некое действие) ${EndIf} ${IfNot} ${FileExists} "$R3\B.exe" ;; == если не найден файл B.exe, то произойдет некое действие ; (здесь некое действие) ${EndIf} ${If} $R4 != 1234567890 ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ; (здесь некое действие) ${If} ${FileExists} "$R5\C.exe" ;; == если значение переменной $R4 не равно 1234567890, и найдены файлы C.exe и D.exe, то произойдет некое действие ${AndIf} ${FileExists} "$R5\D.exe" ; (здесь некое действие) ${EndIf} ; (здесь некое действие) ;; == если значение переменной $R4 не равно 1234567890, то произойдет некое действие ${EndIf} ; (здесь некое действие) И еще вопрос, обязательно ли прописывать к примеру условие: "если файл найден" если следует команда на удаление этого самого файла или что то похожее в этом роде? Это будет "легче" для кода или нейтрально? |
|
Отправлено: 07:37, 07-05-2023 | #2726 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата inco1:
|
|
Отправлено: 00:28, 08-05-2023 | #2727 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать И еще вопрос, может кто знает, по каким параметрам некоторые разработчики прописывают проверку, что программа запущена на виртуалке?
|
Отправлено: 06:52, 08-05-2023 | #2728 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать VM обнаруживается по записям с аппаратной конфигурации/драйверов, специфическим записям в реестре, файлам, процессам, сервисам.
В случае универсального детектора требуется проверить множество позиций как минимум для HyperV, VirtualBox, VMWare. |
Отправлено: 07:22, 09-05-2023 | #2729 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:08, 01-06-2023 | #2730 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|