|
Компьютерный форум 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 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Цитата:
В чистом виде ваш скрипт скомпилится, но при добавлении его кода в мой инсталляционный файл уже нет. Проблема была вызвана несколькими причинами: 1. Я прописывыю ланги инсталлера в реестр: !define MUI_LANGDLL_REGISTRY_ROOT "${PACK_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PACK_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "${PACK_NAME_FILE}: Language" 2. Не использую !include "MUI2.nsh", работаю только с !include "MUI.nsh" 3. Резервирую файлы: ReserveFile "setup.ini" !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS !insertmacro MUI_RESERVEFILE_LANGDLL 4. Не использую это: !define MUI_LANGDLL_ALLLANGUAGES 5. Работаю только под Юникодом Нсис... Переписав некоторые части кода и удалив лишнее, наконец-то удалось заставить вывести нормально файлик licence.rtf, именно из той папки откуда мне надо, а не из убого привязанной к корню Нсис... Примерно так: LicenseLangString mylicense ${LANG_ENGLISH} ".\licens\en\licence.rtf" LicenseLangString mylicense ${LANG_ROMANIAN} ".\licens\ro\licence.rtf" LicenseLangString mylicense ${LANG_GERMAN} ".\licens\de\licence.rtf" LicenseLangString mylicense ${LANG_RUSSIAN} ".\licens\ru\licence.rtf" LicenseLangString mylicense ${LANG_ITALIAN} ".\licens\it\licence.rtf" LicenseLangString mylicense ${LANG_CZECH} ".\licens\cz\licence.rtf" LicenseLangString mylicense ${LANG_POLISH} ".\licens\pl\licence.rtf" LicenseLangString mylicense ${LANG_SPANISH} ".\licens\es\licence.rtf" Зы, Да, чуть не забыл. Возможно, что ещё проблема в самих плагинах была, они у меня все были изначально, но один из них имел старую версию сборки, стянул поновее, с оф. форума Нсис в теме автора... |
|
Последний раз редактировалось MaGoth, 29-08-2013 в 18:11. Отправлено: 14:01, 25-08-2013 | #481 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Возникла такая проблемка. Делаю кастомную кнопку About на странице компонентов. Нужно чтобы эта кнопка была только на этой странице. Так вот при нажатии Back на странице компонентов возвращаемся на страницу директории и кнопки действительно нет. Дальше происходят чудеса. Нажимаем Next и снова Back и кнопка About сияет на странице директории. Как это можно победить? Сорри если такой вопрос уже был
!include "MUI2.nsh" Name "About Button Example" OutFile AboutButton.exe InstallDir $TEMP RequestExecutionLevel user !define IDC_ABOUT 1300 !define MUI_PAGE_CUSTOMFUNCTION_SHOW "DirectoryShow" !insertmacro MUI_PAGE_DIRECTORY !define MUI_PAGE_CUSTOMFUNCTION_SHOW "CompShowProc" !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "ComponentsLeave" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "English" Section Install SectionEnd Function CompShowProc System::Call 'user32::CreateWindowEx(i0,t"Button",t"About",i${BS_PUSHBUTTON}|${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},i30,i327,i80,i23,i$HWNDPARENT,i${IDC_ABOUT},ir0,i0)i.R0' CreateFont $0 '$(^Font)' '$(^FontSize)' SendMessage $R0 ${WM_SETFONT} $0 0 FunctionEnd Function DirectoryShow GetDlgItem $1 $HWNDPARENT 1300 EnableWindow $1 0 ShowWindow $1 0 FunctionEnd Function ComponentsLeave GetDlgItem $1 $HWNDPARENT 1300 EnableWindow $1 0 ShowWindow $1 0 FunctionEnd |
Отправлено: 17:08, 26-08-2013 | #482 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата tony1990:
А значит почти все можно... |
|
------- Отправлено: 17:40, 26-08-2013 | #483 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Спасибо огромное ! Всё работает !!!!!
|
Отправлено: 19:25, 26-08-2013 | #484 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Есть ли способ вывести строку Space Available: на стандартной странице компонентов?
|
Отправлено: 18:48, 27-08-2013 | #485 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата tony1990:
В твоём случае текст с информацией о свободном дисковом пространстве - на PAGE_COMPONENTS. Это можно реализовать так : !include "MUI2.nsh" !include "Sections.nsh" !insertmacro MUI_PAGE_DIRECTORY !define MUI_PAGE_CUSTOMFUNCTION_SHOW components_show !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" InstallDir "$TEMP" OutFile "FreeSpace-test.exe" Function .onInit System::Call 'kernel32::GetDiskFreeSpaceEx(t"$instdir",*l.r1,*l,*l)' System::Int64Op $1 / 1024 Pop $1 FunctionEnd Function components_show StrCpy $4 'Space Available: $1 kb' FindWindow $0 "#32770" "" $HWNDPARENT System::Call 'USER32::CreateWindowEx(i0,t "STATIC",t "$4",i ${WS_CHILD}|${WS_VISIBLE},i0,i40,i300,i20,i $0,i222,i0,i0) $R2' GetDlgItem $1 $0 1027 GetDlgItem $2 $0 222 SendMessage $1 ${WM_GETFONT} 0 0 $3 SendMessage $2 ${WM_SETFONT} $3 1 FunctionEnd SectionGroup /e "SectionGroup " SEC0 Section "Section 1" S1 SectionEnd Section /o "Section 2" S2 SectionEnd Section /o "Section 3" S3 SectionEnd SectionGroupEnd А с этим надо определяться сразу же после запуска инсталлятора. О чем выводить соответствующее сообщение. PS Касательно кнопки на стандартных страницах... Пример был дан как пример, годный лишь для случая, когда ну позарез нужна кнопка именно на стандартной странице. А вообще это извращение... Как уже говорили ранее - кнопка нормально отображается только в верхней и нижней частях окна страницы. По центру она закрыта контролом области "поля-окна" стандартной страницы. А это, как оказалось, гадость ещё та (как и вообще, все стандартные страницы )... Можно изменить размер этой закрываюшей кнопку области либо в ресурсе, либо через системные функции. Но это получится гемор, не стоящий того... |
|
Последний раз редактировалось MKN, 28-08-2013 в 16:18. Отправлено: 15:26, 28-08-2013 | #486 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Огромное спасибо !!!
Суть в специфике программы. Юзер выбирает разные компоненты, от этого зависит требуемый размер. Поэтому и хотелось чтобы требуемый и доступный размер были на странице компонентов. А кнопку я решил внизу сделать всё-таки. Пока вроде работает MKN, спасибо за код! Единственное - не читает шрифт в строку Space Available. Буду кумекать |
Последний раз редактировалось tony1990, 28-08-2013 в 19:07. Отправлено: 16:57, 28-08-2013 | #487 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать tony1990,
Измени в GetDlgItem $1 $0 1027 - ID 1027 на 1006. Такой шрифт будет соответствовать тому, что на странице PAGE_COMPONENTS. PS 222 - это ID нашего, созданного на странице, окна с надписью |
Последний раз редактировалось MKN, 28-08-2013 в 20:48. Отправлено: 20:36, 28-08-2013 | #488 |
Пользователь Сообщения: 110
|
Профиль | Сайт | Отправить PM | Цитировать Если щелкать мышью в "переключателе" справа от компонентов, а не по ним, нужный компонент отмечается, но цветной прямоугольник выделения остается на компоненте, ранее выбранном щелчком по нему.
Можно ли вообще избавиться от выделения цветом? Переключатель компонентов с выделением активного жирным шрифтом. |
Отправлено: 12:34, 29-08-2013 | #489 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Привет народ, опять я с неожиданной проблемой...
В скрипте имею 8 языков. Все было нормально и проблем никаких, до тех пор пока не добавил чешский. Появилась проблема, и откуда у нее ноги растут тоже не совсем понятно, хотя догадываюсь что где-то в ресурсах самого Нсис зарыта, в той части которая рулит лангами... Суть проблемы в том, что у созданного деинсталлятора после инсталла и его запуска секция - "итальянская" накладывается на "чешскую" именем, т.е. вместо: ... Деинсталлировать итальянскую версию. Деинсталлировать чешскую версию. ... Выводится: ... Деинсталлировать итальянскую версию. Деинсталлировать итальянскую версию. ... При наведении курсора мыши на секцию, обе секции отображают правильный текст для лангов указанных версий. В самих секциях тоже все ровно: Картинко: Сверху секции при установке, снизу деинсталл.. Собственно сам вопрос, в каком файле надо порыться чтобы это поправить?! Зы, проверил на других лангах инстал и деинстал, пара - чешский итальянский глючат везде при деинсталляции... |
Последний раз редактировалось MaGoth, 29-08-2013 в 18:59. Отправлено: 18:51, 29-08-2013 | #490 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|