Показать полную графическую версию : [архив].: NSIS - все вопросы :.
касательно закрашивания заднего фона не обязательно редактировать страницу. можно попробовать след образом:
!define MUI_BGCOLOR 0x00FF00
!insertmacro MUI_PAGE_WELCOME ;страничка привествия
!insertmacro MUI_UNSET MUI_BGCOLOR
!define MUI_BGCOLOR "FFFFFF" ; если "" то будет цветом окна.
второе определение MUI_BGCOLOR нужно чтобы след страницы отображались другим цветом.
kotkovets
08-10-2010, 16:14
Подскажите пожалуйста, каким образом "отвязать" текст от правого края поля страницы приветствия »
Поиграйся с пробелом:
!define MUI_WELCOMEPAGE_TITLE " ${PRODUCT_NAME} ${PRODUCT_VERSION}"
Поиграйся с пробелом: »
Да, это помогло выровнять текст.
Ещё раз про значок в полосе шапки окна ( рядом с "Установка и т.д." ) - как его вообще убрать ?
Предположил, что с помощью WindowIcon on|off ( 4.8.1.45 Sets whether or not the installer's icon is being displayed. ) для этого.
Но нет не помогло...
И относительно ShowInstDetails nevershow - кнопка то скрывается, а устанавливаемый контент над "индикатором прогресса" установки, мельтешит всё равно. Как это ликвидировать ?
Допустимо ли с скрипте совпадение SetOutPath для файла-папки и точно такого же местоположения в File ? Т.е. компилировать файлы оттуда, куда и устанавливать...
Как реализовать такую конструкцию (для администратора с оч. "шаловливыми пользователями" ?
Перед установкой программы поверх уже установленной предыдущей версии, надо сделать бэкап её настроек(ini файлика), который останется в папке вновь установленной программы), но :
Этот бэкап поместить в запароленный архив, и назначить файлу или"максимальные" права доступа или соответствующий атрибут (чтобы этот архив хотя бы с ходу нельзя было удалить).
kotkovets
10-10-2010, 18:48
устанавливаемый контент над "индикатором" установки, мельтешит всё равно »
Пиши в самом начале секции или в каждой секции или в секции - название устанавливаемого компонента:
Section
SetDetailsPrint textonly
DetailPrint "Установка DVD..."
SetDetailsPrint listonly
---
SectionEnd
Заодно в справке посмотри эти команды
kotkovets
10-10-2010, 19:07
Ещё раз про значок в полосе шапки окна »
Забыл, ну избавиться можно, например так:
1.Открываем любым редактором ресурсов файл ${NSISDIR}\Contrib\UIs\modern.exe
2.Находим диалог 105, удаляем строчку ICON 103, 1039, 300, 8, 21, 20, WS_GROUP
3.Сохраняем как modern_noicon.exe
4.В самом начале скрипта пишем:
!Include "Mui.nsh"
!define MUI_UI "${NSISDIR}\Contrib\UIs\modern_noicon.exe"
kotkovets
10-10-2010, 19:30
Вот еще нашел элегантный способ, скрывать элементы, без правки файлов, через WinApi функцию.
!Include "Mui.nsh"
!define MUI_CUSTOMFUNCTION_GUIINIT MyGUIInit
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "OutFile.exe"
!macro DestroyWindow HWND IDC
GetDlgItem $R0 ${HWND} ${IDC}
System::Call 'user32::DestroyWindow(i R0)'
!macroend
Function MyGUIInit
!insertmacro DestroyWindow $HWNDPARENT 1039
FunctionEnd
Section
SectionEnd
1039 - указатель на иконку в заголовке.
То бишь, зная указатель, можно и скрывать другие элементы.
kotkovets
10-10-2010, 23:29
Допустимо ли с скрипте совпадение SetOutPath для файла-папки и точно такого же местоположения в File ? »
рулите флагом SetOverwrite
SetOverwrite on - перезаписывать файлы
SetOverwrite off - наоборот...
Как реализовать такую конструкцию (для администратора с оч. "шаловливыми пользователями" ?
Перед установкой программы поверх уже установленной предыдущей версии, надо сделать бэкап её настроек(ini файлика), который останется в папке вновь установленной программы), но :
Этот бэкап поместить в запароленный архив, и назначить файлу или"максимальные" права доступа или соответствующий атрибут (чтобы этот архив хотя бы с ходу нельзя было удалить) »
Ну для этого есть консольные утилиты 7z.exe и 7za.exe - c параметрами нужными запускаешь.
Что то типа так(справку почитай по 7z):
SetOutPath "$TEMP"
File "7z.exe"
File "7z.dll"
nsExec::exec '"$TEMP\7z.exe" -p{Password}:1234 -o{Directory}'
SetFileAttributes "Путь к созданному архиву.7z" "READONLY" #устанавливаем аттрибут "только для чтения"
Все консольные окна будут скрыты, с ожиданием завершения.
Необходимо, чтобы при снятии отметки с чекбокса(чекбоксов) выбора устанавливаемых компонентов,
в файле скрипта $TEMP\app.nsi удалялись(или комментировались) все записи о секции этого компонента.
Т.е. , если чекбокс не отмечен, то из файла скрипта "физически" удаляются все записи-строки, относящиеся к секции этого компонента.
Предполагаю, что либо будут удаляться(или комментироваться) конкретные строки, относящиеся к конкретным секциям компонентов, либо в скрипте должны быть какие то идентификаторы для секций, ориентируясь на которые и будут удаляться записи из файла..., или всему содержимому каждой секции присваивается переменное значение, с которым и будут производиться действия...
Далее, из изменённого скрипта, командой компилируется новый дистрибутив в указанное место (например, в $DOCUMENTS\NewSetup) и очищается содержимое $TEMP.
Всё необходимое для компиляции (включая и сам NSIS(только нужное), при запуске "конструктора", распаковывается в $TEMP (или в $TEMP\package).
ps Эта процедура необходима для реализации идеи конструктора(пока в упрощённом виде) создания нового отдельного дистрибутива из выбранных компонентов.
Обсуждалось http://forum.oszone.net/thread-151756-12.html с K.A.V., который заинтересовался этой идеей, но до реализации дело не дошло по объективным причинам...
Подскажите пожалуйста, как такое реализовать ?
а кто нибудь пробовал вызывать vb скрипты из NSIS методами кроме:
... exec "cscript 1.vbs" ...
... exec "wscript 1.vbs" ...
может плагин есть какой либо?
....
прошу прощения.. поторопился ))
http://nsis.sourceforge.net/Run_a_VBScript_from_NSIS
....
но вопрос все-таки есть. Возможно ли как то раскрашивать вывод команды DetailPrint?
например когда происходит ошибка - вывести ее красным цветом..
kotkovets
12-10-2010, 23:28
Возможно ли как то раскрашивать вывод команды DetailPrint? »
InstallColors "цвет текста" "цвет фона" или !define MUI_INSTFILESPAGE_COLORS "цвет текста" "цвет фона"
спасибо. но про эти команды я знаю. меня интерисует раскрасить конкретную запись лога.
точнее я это уже сделал.. но скрипт пока сыроват для его публикации :)... опубликую на днях.
kotkovets
13-10-2010, 11:52
но скрипт пока сыроват для его публикации »
mshak с нетерпением буду ждать...
в общем need help по его доработке.
вот тестовый скрипт:
файл ColorDetailPrint.nsi
!include "MUI2.nsh"
!include "ColorDetailPrint.nsh"
Name "Color DetailPrint"
OutFile "ColorDetailPrint.exe"
InstallDir "$EXEDIR"
RequestExecutionLevel user
!define MUI_ABORTWARNING
!insertmacro MUI_PAGE_COMPONENTS
;!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
;--------------------------------
!insertmacro InitColors ;добавить что бы не было проблем с системными цветами
ShowInstDetails show
Section "Color DetailPrint" SecDummy
SetOutPath "$INSTDIR"
DetailPrint "тест тест тест1"
DetailPrint "тест тест тест ${LVM_FIRST}"
DetailPrint "тест тест тест3 ${LVM_SETTEXTBKCOLOR}"
DetailPrint "тест тест тест4"
DetailPrint "тест тест тест5"
DetailPrint "тест тест тест6"
DetailPrint "тест тест тест7"
!insertmacro ColorPrint 0xFF0000 0x00FF00 `Первый тест`
DetailPrint "тест тест тест1"
DetailPrint "тест тест тест2"
DetailPrint "тест тест тест3"
DetailPrint "тест тест тест4"
DetailPrint "тест тест тест5"
DetailPrint "тест тест тест6"
DetailPrint "тест тест тест7"
!insertmacro ColorPrint 0x00FF00 0x000FF `Второй тест`
DetailPrint "тест тест тест11"
DetailPrint "тест тест тест21"
DetailPrint "тест тест тест31"
DetailPrint "тест тест тест41"
DetailPrint "тест тест тест51"
DetailPrint "тест тест тест61"
DetailPrint "тест тест тест71"
!insertmacro ColorPrint 0x0000FF 0xFF0000 `Третий тест`
SectionEnd
;--------------------------------
файл ColorDetailPrint.nsh
/*
******************************************
NSIS ColorDetailPrint - Version 1.0 (alfa)
******************************************
*/
!ifndef USE_ColorDetailPrint
!define LVM_SETTEXTCOLOR 4132 ; устанавливаем цвет текста
!define LVM_SETTEXTBKCOLOR 4134 ; устанавливаем цвет фона
!define LVM_GETITEMCOUNT 4100 ; получаем количество
!define LVM_REDRAWITEMS 4117 ; перерисовываем
!define LVM_UPDATE 4138 ; обновляем
!macro InitColors
InstallColors "000000" "FFFFFF"
!macroend
!macro ColorPrint FORECOLOR BGCOLOR TEXT
!ifdef MUI_INCLUDED
SendMessage $mui.InstFilesPage.Log ${LVM_SETTEXTCOLOR} 0 ${FORECOLOR}
SendMessage $mui.InstFilesPage.Log ${LVM_SETTEXTBKCOLOR} 0 ${BGCOLOR}
!endif
DetailPrint `${TEXT}`
!ifdef MUI_INCLUDED
SendMessage $mui.InstFilesPage.Log ${LVM_SETTEXTCOLOR} 0 0
SendMessage $mui.InstFilesPage.Log ${LVM_SETTEXTBKCOLOR} 0 0xFFFFFF
!endif
!macroend
/*
!ifndef ColorDetailPrint
!define ColorDetailPrint !insertmacro ColorPrint
!endif
*/
!endif
цветом пишет, но попробуйте свернуть и развернуть установщик.... вот как это побороть?
kotkovets
13-10-2010, 18:18
попробуйте свернуть и развернуть установщик.... вот как это побороть? »
Не знаю, перекрывается чем то, нужен какой то API вызов:
System::Call..(вот не знаю точно !) для восстановления.
или же не все обновляется...предположения....
Или запретить свертывание...
дело не в сворачивании... а в перерисовке.
если прокрутить лог установки будет тоже самое..
чтобы задать "боковую" картинку в инсталяторе nsis используется команда:
!define MUI_WELCOMEFINISHPAGE_BITMAP "Win.bmp"
какой командой можно задать аналогичную картинку в деинсталяторе?
kotkovets
17-10-2010, 14:14
чтобы задать "боковую" картинку в инсталяторе nsis используется команда:
!define MUI_WELCOMEFINISHPAGE_BITMAP "Win.bmp"
какой командой можно задать аналогичную картинку в деинсталяторе? »
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "Win.bmp"
Доброго времени суток :) Возможно в этом топике найдется тот, кто сможет мне помочь..
Вот в этом (http://forum.oszone.net/thread-188288.html) топике я пытался распаковать одну софтину, как выяснилось, это просто проект NSIS, основанный. С помощью Universal Extractor я распаковал его, но сам скрип то никак не вытащить.. возможно кто-то может написать скрипт, для сборки проекта в рабочее состояние (извлеченные ресурсы в указанном ранее топике).
Такая "прога" выполняет всего 3 не сложных действия:
1. Предлагает пользователю ввести ник, после подставляет его в тег и заносит в рядом лежащий конфиг.
2. Предлагает пользователю выбрать путь к папку для скачки, опять же подставляет выбранный путь в нужный тег и заносит в конфиг.
3. Определяет IP пользователя и выводит ему, далее опять подставляет в нужный тег и заносит в конфиг.
Вот и весь функционал. Думаю, человеку, который разбирается в этом, будет не сложно состряпать такой скриптик.. если найдутся такие - смогу более подробно описать что да как..
Спасибо.
kotkovets
21-10-2010, 03:00
truth, Насчет вашего вопроса, если вы дело имели с NSIS,
тут сборник плагинов: http://nsis.sourceforge.net/Category:Plugins
Там есть описание каждого из плагинов (из распакованной папки $PLUGINSDIR) и как пользоваться
В помощь Справочник по NSIS (http://forum.oszone.net/post-1489320-742.html)
Думаю, человеку, который разбирается в этом, будет не сложно состряпать такой скриптик.. если найдутся такие »
Вам, никто не напишет готовый код. Но в конкретном вопросе поможем...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC