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

hb860
10-01-2010, 20:59
Надеюсь они не последние. »
Не последние, обещаю.
Шкуру надеть на инсталлятор ?

Painkiller
11-01-2010, 01:40
Шкуру надеть на инсталлятор ? »
Ага. Желательно подробнее. А также буду ждать новых уроков.

hb860
11-01-2010, 08:32
Шкуры я сам никогда не надевал. Сегодня вечером попробую и напишу, как это делается.

K.A.V.
11-01-2010, 12:58
Скачиваем SkinCrafter Plugin, устанавливаем, в функции .onInit прописываем

NSIS_SkinCrafter::skin /NOUNLOAD "<Полный путь к файлу скина>"

Насчет имени dll могу ошибаться, уже не помню её имя :)
И не забудьте скачать сам скин :) :) :)

Painkiller
11-01-2010, 20:25
K.A.V. ,hb860, почему то у меня не получается.
Если так :
Function .onInit
SetOutPath $TEMP
NSIS_SkinCrafter::skin /NOUNLOAD $TEMP\V-touch.skf
FunctionEnd.

Компилируется но никаких внешних изменений нету.
Если так :

Function .onInit
SetOutPath $TEMP
File /oname=V-touch.skf "V-touch.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD $TEMP\V-touch.skf
Delete $TEMP\V-touch.skf
FunctionEnd

Выбивает ошибку при компиляции . Что делать? Помогите?

Vsirf
11-01-2010, 20:51
hb860, я никогда не пользовался программой NSIS , но возник такой вопрос: можно ли с помощью NSIS создать Welcom Center ( запуск программ из него , или запуск компонентов панели управления ) для Windows XP , если да , то где можно почитать про команды и компиляцию , у меня есть уже готовый ( разковыряный ) , но что то подобное мне создать никак не удается ? заранее благодарен

K.A.V.
11-01-2010, 21:59
Инструкция по использованию скинов :)

1. Качаем с этой (http://www.skincrafter.com/download) странички "Unicode/ANSI NSIS SkinCrafter Plugin" (если скин не подгружается, попробуйте эту (http://nsis.narod.ru/files/nsis_plugins/nsis_skincrafter_plugin.rar) библиотеку), открываем загруженный архив, распаковываем библиотеку "NSIS_SkinCrafter_Plugin.dll" в каталог с плагинами NSIS (\Program Files\NSIS\Plugins)

2. Загружаем какой-либо файл скина из библиотеки (http://www.skincrafter.com/skins)

3. Добавляем данный кусок кода в NSIS

Function .onInit
SetOutPath $TEMP
File /oname=TEST.skf "TEST.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$TEMP\TEST.skf"
FunctionEnd


И не забудьте выгрузить SkinCrafter

Function .onGUIEnd
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd


В данном коде предположено, что файл скина "TEST.skf" находится в одной папке с NSIS скриптом
Для того, чтобы скин подгружался и в деинсталляторе, добавьте следующие функции
Function un.onInit
SetOutPath $TEMP
File /oname=TEST.skf "TEST.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$TEMP\TEST.skf"
FunctionEnd

Function un.onGUIEnd
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd


P.S.
На некоторых сборках ОС скин может не примениться, т.к. удалены некоторые библиотеки
На момент редактирования поста мной выявлена 1 DLL, без которой скины не подгружаются - mfc71.dll, она должна находиться в директории System32
Если вы не уверены, что данная библиотека присутствует в системе, то добавьте данную библиотеку в пакет инсталлятора и пропишите команду распаковки данной библиотеки в System32 каталог перед тем, как вызовите функцию загрузки скина
Можно конечно обойтись без распаковки библиотеки в системный каталог, для этого поместите mfc71.dll в одну директорию с пакетом инсталлятора



Painkiller, ваши ошибки

NSIS_SkinCrafter_Plugin::skin /NOUNLOAD $TEMP\V-touch.skf
и ещё 1 ошибка, вы же не распаковали файл скина, после команда "SetOutPath $TEMP" должна быть команда распаковки

hb860
11-01-2010, 22:12
K.A.V., добавил в шапку

Painkiller
12-01-2010, 19:12
hb860, у меня вызывает ошибку при компиляции именно вот эта строчка :
File /oname=V-touch.skf "V-touch.skf"
Вот что пишет об ошибке :
Function: ".onInit"
SetOutPath: "$TEMP"
File: "V-touch.skf" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
/oname=outfile one_file_only)
Error in script "C:\2.nsi" on line 94 -- aborting creation process
А вот мой код :
Function .onInit
SetOutPath $TEMP
File /oname=V-touch.skf "V-touch.skf"
NSIS_SkinCrafter_Plugin::skin /NOUNLOAD "$TEMP\V-touch.skf"
FunctionEnd
Function .onGUIEnd
NSIS_SkinCrafter_Plugin::destroy
FunctionEnd

Habetdin
12-01-2010, 19:28
Painkiller, File: "V-touch.skf" -> no files found. »
"Файл не найден." У вас рядом со скриптом нет файла V-touch.skf.. :)

Painkiller
12-01-2010, 19:35
Habetdin , большое спасибо! Вот в чём собака зарыта. Его нужно возле скрипта держать. Вот моя ошибка была сс самого начало. Я же его держал в папке которую я назначил за $TEMP. Но жалко то что скин на семёрке не пашит :(

Painkiller
14-01-2010, 00:50
K.A.V. , странно почему то скин и на чистой xp sp2 не пашит :(

K.A.V.
14-01-2010, 13:36
Попробуйте использовать эту (http://nsis.narod.ru/files/nsis_plugins/nsis_skincrafter_plugin.rar) библиотеку
И ещё, в системе должна присутствовать (в System32 каталоге) библиотека mfc71.dll, если её нет, то скин подгружаться не будет

Painkiller
14-01-2010, 18:20
K.A.V. , скин заработал как я подменил на вашу предложенную библиотеку на семёрке, но только один. А остальные видно что просто не поддерживаются. У них классический вид . В System32 библиотека mfc71.dll в семёрке присутствует .
Возможно установщик защитить паролем от распаковки ?

K.A.V.
14-01-2010, 19:38
Возможно установщик защитить паролем от распаковки ? »
Распаковать NSIS инсталлятор можно с помощью 7-zip, здесь пароль никак не поставить, на сколько мне известно...однако можно поставить запрос пароля, если производится запуск вашего пакета инсталлятора

Painkiller
14-01-2010, 21:12
однако можно поставить запрос пароля, если производится запуск вашего пакета инсталлятора »
А можете показать на примере как прикрутить такую финчу ?

K.A.V.
14-01-2010, 22:06
Самый простой пример, это с использованием плагина DialogsEx (http://winxpregp.narod.ru/mfiles/NSIS/dialogsex.zip)


${InputPwdBox} "Заголовок" "Введите пароль" "" "10" "" "" 0
StrCmp $0 "Это пароль" okPass 0
MessageBox MB_ICONSTOP|MB_YESNO "Пароль неверный!!$\r$\nПовторить ввод пароля?" IDYES -2
quit
okPass:


В представленном коде, число 10 соответствует максимально возможному количеству вводимых символов
Число 0, в самом конце первой строчки означает, что введёное пользователем значение следует поместить в переменную $0

Painkiller
15-01-2010, 00:00
Эxх. Побольше бы такой информации и уроков !!!

K.A.V.
15-01-2010, 00:34
Эxх. Побольше бы такой информации и уроков !!! »
Так кто вам не даёт задавать вопросы :)
Спрашивайте, а мы ответим/поможем на сколько знаний хватит ;)

Painkiller
15-01-2010, 01:00
K.A.V. , я просто не знаю возможностей языка NSIS. Можете хоть описать хоть в вкратце что ещё можно прикрутить к установщику ? Хотя знаю что всё описать не возможно, но из самое интересного?




© OSzone.net 2001-2012