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

kotkovets
27-02-2012, 00:51
Sidril эксперементально,расчетом времени, кстати это уже не nsi'шный прогресс
RealProgress::GradualProgress /NOUNLOAD 1 5 25
Означает, что каждую секунду добавлять 5% до 25%, если второй раз прописать команду, то прогресс будет на 50%.
Можно делать скрытой секцией (последней), которая всегда выполняется - прописать на 100 %.
В любом случае завершение - это 100% индикатор
---
Точно, все равно не рассчитаете, ибо родной правильнее будет, потому что компилятор считает сколько команд будет
при разных условиях, еще есть команды из хедеров (!include *.nsh - тысячи команд),
устанавливает шаг изменения прогресса, тем меньше команд - больше шаг.

Sidril
27-02-2012, 13:03
kotkovets. В очередной раз спасибо вам за помощь в разборе вопроса.
Так, GradualProgress не подходит... Т.к в моём случае рассчёт по времени неактуален, потому как время установки зависит от конфигурации компа клиента и от загруженности системы, т.е у всех будет разное время установки в примерных границах от 7 до 30 минут.
***
Собственно, говоря о трёх вариантах прогресса, которые предлагает плагин NSIS Real Rpogress, я понял следующее:

- GradualProgress представляет собой рассчёт процента прогресса исходя из времени (нужен рассчёт секунд).
- DetailProgress ориентирует процент прогресса на количество строк в скрипте секций (нужен рассчёт строк).
- FileProgress даёт возможность выставлять проценты прогресса на определённых этапах выполнения скрипта.

Как Вы сразу правильно предложили - File Progress наиболее оптимален для моего инсталлера.
***
Можно делать скрытой секцией (последней), которая всегда выполняется - прописать на 100 %.
В любом случае завершение - это 100% индикатор »
Это отличная идея. Посмотрел в справке пример скрытых секций.
Подскажите, в данной секции достаточно только прописать команду прогресса на 100%?
Т.е, такой вид скрытой секции будет?

Section "-Секция скрыта"
RealProgress::AddProgress /NOUNLOAD 100
SectionEnd
***
Точно, все равно не рассчитаете, ибо родной правильнее будет, потому что компилятор считает сколько команд будет
при разных условиях, еще есть команды из хедеров (!include *.nsh - тысячи команд),
устанавливает шаг изменения прогресса, тем меньше команд - больше шаг. »
Ну родной за 5 секунд выдаёт прогресс 90%, т.к скрипт уже выполнен настолько. Я не знаю как на это повлиять без плагина.

Sidril
28-02-2012, 20:31
С прогрессом вроде всё ок. Спасибо kotkovets.

Новый вопрос. Хочу перед запуском инсталлятора чтобы появлялось приветственное изображение, и чтобы оно появлялось под сопровождение музыкального отрывка.
Не нашёл этого в справке. NSIS поддерживает такие функции?

Aster
28-02-2012, 20:56
NewAdvSplash plug-in (http://nsis.sourceforge.net/NewAdvSplash_plug-in) поможет.

brauni
29-02-2012, 18:58
Уважаемые форумчане! Подскажите, как в NSIS "вынести" установочные файлы из инсталлятора в отдельные бинарники (с возможностью назначения их количества и размера) --> т.е. получить маленький (~100Kb) файл инсталятора и пару-тройку "привязанных" к нему больших файлов. До этого пользовался Smart Install Maker'ом, но он тупо "делит" большой инсталятор на равные части.

PS: Если ответ уже был - кинте, плз, ссылку на этот пост.

kotkovets
29-02-2012, 19:40
brauni, нет, только можно внешним упаковщиком, например 7z, потом распаковывать консольной утилитой 7z.exe
Естественно придется таскать собой файлы 7z.dll и 7z.exe.
Установщик распаковывает в временную папку 7z.dll и 7z.exe и файлы архивов созданные 7z,
затем установщик заводит 7z.exe c ожиданием завершения (ключи запуска консоли, смотрите в справке 7z),
архивы распаковывается в указанную к ключе запуска 7z.exe, временная папка затем удаляется.

brauni
29-02-2012, 19:57
brauni, нет, только можно внешним упаковщиком ...»

Жаль! Придецца разбираться в InnoSetup или ставить Install Creator Pro 2. Спасибо!

MKN
01-03-2012, 09:24
Естественно придется таскать собой файлы 7z.dll и 7z.exe. »
А зачем их таскать, если вопрос ставится так , что
т.е. получить маленький (~100Kb) файл инсталятора и пару-тройку "привязанных" к нему больших файлов. »
Пусть в этот маленький инсталлятор входят 7z.dll и 7z.exe и скрипт описания что, куда и как распаковать(упаковать)

Sidril
01-03-2012, 14:10
Ребята, подскажите, плиз как в программу внедрить опцию проверки наличия ключа в реестре при запуске инсталлятора? Т.е в момент когда клиент запускает инсталятор шла бы проверка наличия ключа. Если ключ найден то установка переходит сразу на стартовую страницу. Если не найден - предупреждение о том что следы программы не обнаружены, установка может пройти неправильно.
***

И ещё такой вопрос, на что влияет параметр XPStyle on? Какой стиль XP тут имеется ввиду и зачем вообще это нужно.
Спасибо!

kotkovets
01-03-2012, 15:20
Ребята, подскажите, плиз как в программу внедрить опцию проверки наличия ключа в реестре при запуске инсталлятора? Т.е в момент когда клиент запускает инсталятор шла бы проверка наличия ключа. Если ключ найден то установка переходит сразу на стартовую страницу. Если не найден - предупреждение о том что следы программы не обнаружены, установка может пройти неправильно. »
В функции .OnInit проверяем ключ, к примеру параметр ключа по умолчанию,
значение параметра тоже проверяется(если не пустое):

!include "logiclib.nsh"
;--
Function .OnInit
ClearErrors
ReadRegStr $8 HKLM "Software\nsis" ""
${If} ${Errors}
${OrIf} $8 == ""
MessageBox MB_OK "следы программы не обнаружены, установка может пройти неправильно"
${EndIf}
FunctionEnd


И ещё такой вопрос, на что влияет параметр XPStyle on? »
А вы скомпильте такой пример и все увидете:
OutFile "setup.exe"
page instfiles
Section
MessageBox MB_OK "install" IDOK
SectionEnd
Сделали?
добавьте команду в начале скрипта -- XPStyle on,
затем найдите 10 отличий :biggrin:

Sidril
01-03-2012, 15:55
Сделали?
добавьте команду в начале скрипта -- XPStyle on,
затем найдите 10 отличий »
Собственно ничем не отличающиеся инсталляшки получились.
Я уже и в своём скрипте добавлял - изменений не видел, по этому и спросил смысл этой опции. Может как-то влияет что у меня у самого Win XP.

kotkovets
01-03-2012, 16:46
Собственно ничем не отличающиеся инсталляшки получились. »
эээ.... это команда "одевает" инсталлятор в тему оформления Windows, очевидно у вас классика,
ну что бы не заметить... :cool: особенно прогресс

Sidril
01-03-2012, 21:36
На зрение не жалуюсь)
это команда "одевает" инсталлятор в тему оформления Windows »
Ну вот как это понять... А без этой команды тогда инсталлятор во что одевается?:)
Стоит у меня классическая тема оформления. Что с командой, что нет - тема та же самая. В чём принцип так и не понял.

kotkovets
01-03-2012, 21:55
Sidril, а Вы смените тему оформления Windows на не классическую...и смотрите разницу
с примером, который я приводил: с XPstyle on и c XPstyle off :lol:

Sidril
01-03-2012, 22:33
Sidril, а Вы смените тему оформления Windows на не классическую...и смотрите разницу »
Сменил тему. Сравнил ваши примеры с командой и без - Прогресс и кнопки изменились.

Вставил "XPstyle on" в свой скрипт. сравнил результат с командой и без. всё то же самое. и с командой и без - стиль хп показывается. Опять не догнал в чём смысл команды))
играет она какую-то роль, если подключен MUI?)

BuZzOFF
02-03-2012, 06:34
kotkovets, почитал в справочнике про определение ОС. и чё-то всё равно не понял как можно сделать...
Нужно определить ОС. И если это один из Server'ов, то выполнить одно действо. Если не Server, то другое...

kotkovets
02-03-2012, 09:33
И если это один из Server'ов, то выполнить одно действо. Если не Server, то другое.. »
Этого достаточно, серверное имя узнать, если переменная $0 пуста - это не сервер.
!include "WinVer2.nsh"
;---
${WinServerName} $0
${IfNot} $0 == ""
;---
;это сервер
MessageBox MB_ICONINFORMATION|MB_OK "$0"
;---
${Else}
;---
;это не сервер
;---
${EndIf}
Ну чего уж проще...

Begin2Fly
02-03-2012, 18:50
Товарищи, добрый вечер. Буду очень благодарен, если подскажете как впихнуть изображение на кастомную страницу при помощи плагина nsisSlideshow (http://nsis.sourceforge.net/NsisSlideshow_plug-in).
Надо просто вставить PNG-изображение (справа вверху), а не размазать его по всему окну, как этот плагин делает по умолчанию...

kotkovets
02-03-2012, 19:21
Begin2Fly, на кастомную никак, плаг для этого не предназначен.

Begin2Fly
02-03-2012, 22:36
Begin2Fly, на кастомную никак, плаг для этого не предназначен. »
Быть может, есть другой способ? EBanner можно не предлагать.




© OSzone.net 2001-2012