PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [43] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

mshak
08-10-2010, 16:14
касательно закрашивания заднего фона не обязательно редактировать страницу. можно попробовать след образом:

!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}"

MKN
09-10-2010, 16:55
Поиграйся с пробелом: »
Да, это помогло выровнять текст.

MKN
10-10-2010, 18:31
Ещё раз про значок в полосе шапки окна ( рядом с "Установка и т.д." ) - как его вообще убрать ?
Предположил, что с помощью 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" #устанавливаем аттрибут "только для чтения"
Все консольные окна будут скрыты, с ожиданием завершения.

MKN
11-10-2010, 09:06
Необходимо, чтобы при снятии отметки с чекбокса(чекбоксов) выбора устанавливаемых компонентов,
в файле скрипта $TEMP\app.nsi удалялись(или комментировались) все записи о секции этого компонента.

Т.е. , если чекбокс не отмечен, то из файла скрипта "физически" удаляются все записи-строки, относящиеся к секции этого компонента.

Предполагаю, что либо будут удаляться(или комментироваться) конкретные строки, относящиеся к конкретным секциям компонентов, либо в скрипте должны быть какие то идентификаторы для секций, ориентируясь на которые и будут удаляться записи из файла..., или всему содержимому каждой секции присваивается переменное значение, с которым и будут производиться действия...

Далее, из изменённого скрипта, командой компилируется новый дистрибутив в указанное место (например, в $DOCUMENTS\NewSetup) и очищается содержимое $TEMP.
Всё необходимое для компиляции (включая и сам NSIS(только нужное), при запуске "конструктора", распаковывается в $TEMP (или в $TEMP\package).

ps Эта процедура необходима для реализации идеи конструктора(пока в упрощённом виде) создания нового отдельного дистрибутива из выбранных компонентов.
Обсуждалось http://forum.oszone.net/thread-151756-12.html с K.A.V., который заинтересовался этой идеей, но до реализации дело не дошло по объективным причинам...

Подскажите пожалуйста, как такое реализовать ?

mshak
12-10-2010, 13:30
а кто нибудь пробовал вызывать 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 "цвет текста" "цвет фона"

mshak
13-10-2010, 11:08
спасибо. но про эти команды я знаю. меня интерисует раскрасить конкретную запись лога.
точнее я это уже сделал.. но скрипт пока сыроват для его публикации :)... опубликую на днях.

kotkovets
13-10-2010, 11:52
но скрипт пока сыроват для его публикации »
mshak с нетерпением буду ждать...

mshak
13-10-2010, 17:51
в общем 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..(вот не знаю точно !) для восстановления.
или же не все обновляется...предположения....
Или запретить свертывание...

mshak
13-10-2010, 19:23
дело не в сворачивании... а в перерисовке.
если прокрутить лог установки будет тоже самое..

XCV
17-10-2010, 13:08
чтобы задать "боковую" картинку в инсталяторе 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"

truth
21-10-2010, 02:10
Доброго времени суток :) Возможно в этом топике найдется тот, кто сможет мне помочь..
Вот в этом (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