|
Компьютерный форум 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 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата navab:
Как при отметке определённого компонента изменить каталог установки? Или как создать для каждого компонента отдельное запоминание папки? |
|
------- Отправлено: 12:28, 05-02-2014 | #1001 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать K.A.V, нужно чтобы для каждого выбранного компонента пользователь мог сам выбрать путь, просто записать его в скрипте нельзя.
MKN, я так понял это примерно то что нужно, только код приведенный там не компилируется.
Error in macro MUI_PAGE_DIRECTORY on line 21 |
Отправлено: 12:45, 05-02-2014 | #1002 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать var Component1Dir var Component2Dir var Component3Dir !insertmacro MUI_PAGE_COMPONENTS !define MUI_DIRECTORYPAGE_VARIABLE $Component1Dir !insertmacro MUI_PAGE_DIRECTORY !define MUI_DIRECTORYPAGE_VARIABLE $Component2Dir !insertmacro MUI_PAGE_DIRECTORY !define MUI_DIRECTORYPAGE_VARIABLE $Component3Dir !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES Section TEST1 Component1 SetOutPath "$Component1Dir" # File "..." # File "..." SectionEnd Section TEST2 Component2 SetOutPath "$Component2Dir" # File "..." # File "..." SectionEnd Section TEST3 Component3 SetOutPath "$Component3Dir" # File "..." # File "..." SectionEnd |
------- Отправлено: 13:23, 05-02-2014 | #1003 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать я так понимаю, что мы объявляем две константы времени компиляции. В эти переменные заносится результат возвращаемый Component1Dir например, вызывается макрос и вываливается ошибка в самом макросе:
K.A.V., сделал как Вы написали, всегда выскакивают 3 окна с указанием директории, сколько бы компонентов не было выбрано. |
Отправлено: 13:27, 05-02-2014 | #1004 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата navab:
var Component1Dir var Component2Dir var Component3Dir !insertmacro MUI_PAGE_COMPONENTS !define MUI_PAGE_CUSTOMFUNCTION_PRE Component1DirPre !define MUI_DIRECTORYPAGE_VARIABLE $Component1Dir !insertmacro MUI_PAGE_DIRECTORY !define MUI_PAGE_CUSTOMFUNCTION_PRE Component2DirPre !define MUI_DIRECTORYPAGE_VARIABLE $Component2Dir !insertmacro MUI_PAGE_DIRECTORY !define MUI_PAGE_CUSTOMFUNCTION_PRE Component3DirPre !define MUI_DIRECTORYPAGE_VARIABLE $Component3Dir !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES Section TEST1 Component1 SetOutPath "$Component1Dir" # File "..." # File "..." SectionEnd Section TEST2 Component2 SetOutPath "$Component2Dir" # File "..." # File "..." SectionEnd Section TEST3 Component3 SetOutPath "$Component3Dir" # File "..." # File "..." SectionEnd Function Component1DirPre SectionGetFlags ${Component1} $R0 IntOp $R0 $R0 & 1 StrCmp $R0 "1" +2 0 Abort FunctionEnd Function Component2DirPre SectionGetFlags ${Component2} $R0 IntOp $R0 $R0 & 1 StrCmp $R0 "1" +2 0 Abort FunctionEnd Function Component3DirPre SectionGetFlags ${Component3} $R0 IntOp $R0 $R0 & 1 StrCmp $R0 "1" +2 0 Abort FunctionEnd |
|
------- Отправлено: 14:24, 05-02-2014 | #1005 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Спасибо, все работает. Если можно еще пару вопросов, просто хотел бы разобраться:
1. что тут происходит? 2. Попробовал переделать функции таким образом:
Значения chek1-chek3 получаю все время одинаковые, либо все 0, либо все 1, соответственно вывод страниц работает не правильно. Что не так? |
Отправлено: 14:40, 05-02-2014 | #1006 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата navab:
Справочник по NSIS => Перевод справки NSIS => SectionGetFlags + Справочник по NSIS => Перевод справки NSIS => StrCmp Цитата navab:
Справочник по NSIS => Перевод справки NSIS => Section У вас секции без индексов (в ссылке, данной MKN изначально код не совсем рабочий), а в моём коде там поправлено, смотрите внимательней Было (без указаний идентификаторов секций, как у вас сейчас): В моём коде: |
||
------- Отправлено: 14:56, 05-02-2014 | #1007 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать По моему, идея использовать стандартные страницы PAGE_COMPONENTS для выбора INSTDIR - не удачная...
Ладно, когда компонентов 2-3, а если 10 или более ? Задолбаешься страницы перелистывать и вообще забудешь для какого компонента чего выбрать и уже выбрал... Такие вещи надо делать на кастомной странице, где всё удобно и наглядно. |
Отправлено: 15:11, 05-02-2014 | #1008 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Читал и то и другое, я так понял, что полсле опрератора должны идти метки, типа isless, isequal и т.п.
А такая форма StrCmp $R0 "1" +2 0 означает, что если R0==1, то пропускаем следующую строчку? Но тогда мы просто попадаем на EndFunction, каким образом в этом случае срабатывает механизм отмены показа страницы? По SectionGetFlags вопросов не было. Да, идентификаторы я не заметил, а как они влияют на выполнение функций? Мы то вызываем SectionGetFlags ${Component1}, т.е. по имени обращаемся? MKN, подскажите каким образом это сделать? Про кастом пайдж прочитал в справочнике, но как реализовать не совсем понятно. |
Отправлено: 15:26, 05-02-2014 | #1009 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать и вдогонку, перед !insertmacro MUI_PAGE_COMPONENTS пишу !insertmacro MUI_PAGE_WELCOME - свал,
Error: resolving install function "Nsis2Io" in function "mui.WelcomePre_23.5.9" Error - aborting creation process |
Отправлено: 15:47, 05-02-2014 | #1010 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|