|
Компьютерный форум 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 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Как поменять цвет нижней части инсталлятора/деинсталлятора?
|
Отправлено: 14:19, 11-10-2019 | #2351 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата AlekseyPopovv:
|
|
Отправлено: 16:24, 11-10-2019 | #2352 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Как сделать, что бы с ключом /S ни чего не устанавливалось? А с ключом /S /I то что мне нужно. И ключ /D=путь не работает.
|
Отправлено: 20:23, 13-10-2019 | #2353 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата AlekseyPopovv:
${If} ${Silent} ClearErrors ${GetOptions} "$CMDLINE" "/I" $R0 ${IfNot} ${Errors} StrCpy $INSTDIR "$PROGRAMFILES\${APP}" SetOutPath "$INSTDIR" File /r "${APPDIR}\${APP}\*" Quit {Else} ; эта пара строк обеспечит выход Quit ; при отсутствии параметра /I ${EndIf} ${EndIf} Цитата AlekseyPopovv:
Согласно справки (пункт 3.2.1) параметр /D должен быть последним, путь не должен содержать кавычек. В справке это, вроде бы, не упомянуто: все встроенные параметры пишутся с прописной буквы (/S /D, а не /s /d) |
||
Отправлено: 20:45, 13-10-2019 | #2354 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
![]() ${If} ${Silent} ClearErrors ${GetOptions} "$CMDLINE" "/I" $R0 ${IfNot} ${Errors} StrCpy $INSTDIR "$PROGRAMFILES\${APP}" SetOutPath "$INSTDIR" File /r "${APPDIR}\${APP}\*" Quit ${ElseIf} ${Errors} Quit ${Else} ClearErrors ${GetOptions} "$CMDLINE" "/P" $R0 ${IfNot} ${Errors} StrCpy $INSTDIR "$EXEDIR\${APP}" SetOutPath "$INSTDIR" File /r "${APPDIR}\${APP}\*" Quit ${ElseIf} ${Errors} Quit ${Else} ClearErrors ${EndIf} ${EndIf} ${EndIf} |
|
Отправлено: 14:45, 19-10-2019 | #2355 |
![]() Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Если вам сложно ориентироваться в ${If} конструкциях, то лучше на начальном этапе обойдитесь без них, а когда "набьёте" руку и будете легко накидывать большинство кода - можете попробовать снова осилить конструкции с ${If}
В вашем коде не то, что все ключи будут обработаны, а инсталлятор закроется сразу после запуска с ключем /S (тихая установка), по причине, указанной выше - намудрили с конструкцией. Для начала могу посоветовать вам форматировать свой код и писать комментарии (в первую очередь для себя), т.к. частенько при больших размерах кода или из-за недостаточного опыта (да и достаточного), можно допускать ошибки и не видеть их у себя под носом (по личному опыту) Смотрите, как сейчас отрабатывает ваш код (ваша построенная логика): Запускаем с ключем /S Есть ключ /I? Да => Отрабатываю пару команд. Выход из инсталлера Нет => Выход из инсталлера До проверки /P ваш код никогда не дойдёт с тихой установкой Накидаю вам пару одинаковых примеров: 1. Если тихая установка, проверяю наличие сначала ключа I (выполняю команды), затем ключа P (выполняю команды). Если тихая установка, то выход из инсталлера после проверки ключей ${If} ${Silent} ClearErrors ${GetOptions} "$CMDLINE" "/I" $R0 ${IfNot} ${Errors} ; проверка ключа /I MessageBox MB_OK "ключ /I есть" ${EndIf} ; проверка ключа /I завершена ClearErrors ${GetOptions} "$CMDLINE" "/P" $R0 ${IfNot} ${Errors} ; проверка ключа /P MessageBox MB_OK "ключ /P есть" ${EndIf} ; проверка ключа /P завершена Quit ${EndIf} ; проверка на тихую установку завершена ${If} ${Silent} ClearErrors ${GetOptions} "$CMDLINE" "/I" $R0 IfErrors noIkey MessageBox MB_OK "ключ /I есть" noIkey: ClearErrors ${GetOptions} "$CMDLINE" "/P" $R0 IfErrors noPkey MessageBox MB_OK "ключ /P есть" noPkey: Quit ${EndIf} ; проверка на тихую установку завершена ${If} ${Silent} ClearErrors ${GetOptions} "$CMDLINE" "/I" $R0 IfErrors +2 Call silent_I_key ClearErrors ${GetOptions} "$CMDLINE" "/P" $R0 IfErrors +2 Call silent_P_key Quit ${EndIf} ; проверка на тихую установку завершена |
------- Отправлено: 21:28, 19-10-2019 | #2356 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Как удалить папку с деинсталлятором из папки $TEMP?
|
Отправлено: 13:48, 20-10-2019 | #2357 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Мне вот больше всего нравится, что многие знают как защитить инсталлятор от распаковки, т.к. сами этим пользуются. Отправляют искать на просторах интернета, а потом говорят что ты этого ни где не найдёшь, и теперь даже не купишь. Это что, секретная разработка какая то? Или вы это купили по цене квартиры? Прям всё желание отбивает что то писать...
|
Последний раз редактировалось AlekseyPopovv, 22-10-2019 в 19:34. Отправлено: 19:25, 22-10-2019 | #2358 |
![]() Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата AlekseyPopovv:
Если нужно удалить без перезагрузки, то можно сделать отдельный EXE, запускать его со своим ключом, передавая полный путь удаляемого файла деинсталлятора. В коде отдельного EXE, соответственно, нужно будет прочитать значение переданного пути файла деинсталлятора и, поместив в цикл с ожиданием и проверкой существования файла - пытаться удалять файл деинсталлятора Может есть еще какие более красивые методы, не особо интересовался этим вопросом последние "цать" лет ![]() Цитата AlekseyPopovv:
В официальной справке есть Appendix G: Building NSIS, это вам поможет вам пересобрать билд. На вопрос "Как защитить инсталлятор от распаковки" отвечу вам просто: секретной кнопочки нет, которая бы делала это в 1 клик. Там в исходниках самого NSIS и в заголовочных файлах упаковщиков меняется пара надписей и всё это дело пересобирается. Скажите, лично вы, будете так заморачиваться? Прям вижу, как у вас появилось желание качнуть дистрибутив с исходниками NSIS и какой-нибудь Microsoft Visual C++ 2005... 1. Качаете исходники NSIS 2. Правите нужные файлы в нужных местах 3. Правите файлы заголовочных файлов упаковщиков 4. Собираете свой билд NSIS 5. Его все благополучно вскрывают, т.к. метод всем давно известный Так какой смысл в этой "защите"? |
||
------- Отправлено: 20:07, 22-10-2019 | #2359 |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:13, 22-10-2019 | #2360 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|