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

Olef2387
29-03-2012, 04:36
kotkovets
Здравствуйте! Читал в теме, вы давали советы для лучшего сжатия файлов установщика. Это ,конечно хорошо когда всё жмётся по самые пельмени. Но вот когда инсталлер весит больше гигабайта - то распаковывается это дело жутко долго... Ещё вначале "veryfuing installer" вылезает и долго грузится.
Как можно обеспечить более быструю распаковку? Пожалуйста, посоветуйте наиболее оптимальные параметры в соотношении "сжатие - скорость распаковки".
Готов пожертвовать размером установщика (ибо щас это не принципиально, почти у всех безлимитки на хороших скоростях).

Спасибо!

MKN
29-03-2012, 09:50
K.A.V., kotkovets,
Позвольте испытать ещё раз ваше терпение ... :) помочь с вот такой головоломкой :
Опять те же кнопки, те же пронумерованные параметры...

Есть последовательность из 10 чекбоксов для 10 секций с параметрами кнопок.
Отметка чекбокса устанавливает кнопку на тулбар и при этом нумеруются параметры.

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

Например - первым отметили 10й чекбокс - кнопка будет установлена 1й.
Вторым отметили 7й чекбокс - кнопка установится 2й по счёту.
Третьим отметили 1й чекбокс - кнопка установится 3й по счёту.

1 2 3 4 5 6 7 8 9 10
3

И т.д.

Потом решили снять отметку с 10ого чекбокса (который устанавливал 1ую кнопку) - при этом 1ой кнопкой стала 2ая, а 2ой - 1ая

1 2 3 4 5 6 7 8 9 10
2

Далее сняли отметку с 1ого чекбокса - 1ая кнопки осталась на месте

1 2 3 4 5 6 7 8 9 10
1

И так для любых комбинаций снятий-отметок чекбоксов.

зы В примерах по несколько цифер под рядом 1...10 поместить в сообщении не получается. Пост как то странно форматируется..

K.A.V.
29-03-2012, 12:00
"veryfuing installer" вылезает и долго грузится. »
Отключите SOLID сжатие и не будет вам этого окошка

Как можно обеспечить более быструю распаковку? Пожалуйста, посоветуйте наиболее оптимальные параметры в соотношении "сжатие - скорость распаковки". »
ZLIB - высокая скорость, низкая степень сжатия
BZIP2 - всё по "средне"
LZMA - низкая скорость, высокая степень сжатия

Уже не раз обсужждалось, можете использовать внешние упаковщики типа RAR и создавать многотомные архивы...Читайте в теме ранее уже раз 100 обсуждали это

MKN, ну прям вынос мозга :)
Сейчас голова не соображает, но может потребуется создать пару отдельных переменных и хранить там какой пункт отметили и из него вычитать...
Позже подумаю, если kotkovets раньше не реализует =)


P.S.
Нужно в справочник добавлять страничку "Часто задаваемые вопросы"
Первым делом добавить инфу по поводу создания многотомных архивов

kotkovets
29-03-2012, 12:19
когда инсталлер весит больше гигабайта - то распаковывается это дело жутко долго... »
ну, уж в таком случае наверно будет лучший вариант делать установщик в роли распаковщика архивов, которые
рядом с установщиком, т.е таскать собой файлы архиватора 7z: 7z.dll и 7z.exe(консольную версию)
Function .onInit
InitPluginsDir
File `/oname=$PLUGINSDIR\7z.dll` `путь_к\7z.dll`
File `/oname=$PLUGINSDIR\7z.exe` `путь_к\7z.exe`
FunctionEnd

Section
nsExec::ExecToLog `"$PLUGINSDIR\7z.exe" x "путь_к архиву" -o"куда_распаковать" -y`
pop `$5`
pop `$3`
DetailPrint `$5`
DetailPrint "Возвращенное значение 7z: $3"
SectionEnd
или воспользоваться плагином 7z: Nsis7z plug-in (http://nsis.sourceforge.net/Nsis7z_plug-in)
Позже подумаю, если kotkovets раньше не реализует »
да уж, работа с массивами назревает...и плаг есть: http://nsis.sourceforge.net/Arrays_in_NSIS
Нужно в справочник добавлять страничку "Часто задаваемые вопросы"
Первым делом добавить инфу по поводу создания многотомных архивов »
сделаем :)

K.A.V.
29-03-2012, 13:50
MKN, возьмите на тест...
Если я правильно понял задачу, то вроде работает =)

Там в папке с EXE в INI файл будет записываться значение чекбоксов, при отметке и при снятии отметки в 2 параметра

P.S.
Вы там взялись за написание софта с помощью NSIS как я? :)
Такие головоломки прям)))

MKN
29-03-2012, 15:11
взялись за написание софта с помощью NSIS как я? »
Куда мне до тебя и kotkovets... :) Задумок много, с реализацией проблема. Точнее со знаниями как и что...

Test делает прямо то, что надо !


ps А можно оформить этот код как .nsh или плагин (приобщив туда же предыдущие изыскания с вставкой кнопки в произволное место последовательности) ? Это я так спросил... :)

K.A.V.
29-03-2012, 16:17
с вставкой кнопки в произволное место последовательности »
Не понял :dont-know

Заменить текстовые поля на кнопки? =)

Вообщем вот смотрите...Если чего не поймёте - спрашивайте

MKN
29-03-2012, 16:35
K.A.V.,
Благодарю за код. Буду изучать.

ps Я имел ввиду объединение кода с предыдущим моим вопросом, о вставки кнопки в произвольное место ряда, когда уже имеется ряд кнопок. Но наверное не нужно смешивать задачи...

K.A.V.
29-03-2012, 16:50
Но наверное не нужно смешивать задачи... »
Добавить отдельную функцию и вызывать её, в которой будет "сдвиг" пунктов...

Сделаю позже ;)
Изучайте пока то что уже есть :tongue:

Olef2387
29-03-2012, 21:05
K.A.V. и kotkovets, спасибо.

Отключите SOLID сжатие и не будет вам этого окошка »
А что это за проверка вообще "verifying installer". Для чего нужна она?

ZLIB - высокая скорость, низкая степень сжатия
BZIP2 - всё по "средне"
LZMA - низкая скорость, высокая степень сжатия »
Ну это понятно... А дополнительные парметры?
SetCompressorDictSize 64
SetDatablockOptimize on
Они на что влияют?

ну, уж в таком случае наверно будет лучший вариант делать установщик в роли распаковщика архивов, которые
рядом с установщиком, т.е таскать собой файлы архиватора 7z: 7z.dll и 7z.exe(консольную версию) »
Не. Не хочу заморачиваться с распаковывающимися архивами.

kotkovets
29-03-2012, 21:25
Ну это понятно... А дополнительные парметры?
SetCompressorDictSize 64
SetDatablockOptimize on
Они на что влияют? »
SetCompressorDictSize - Устанавливает размер словаря в мегабайтах (Мбайт), компрессором LZMA (значение по умолчанию составляет 8 Мбайт). Т.е сколько нужно оперативной памяти для сжатия или расжатия
--
SetDatablockOptimize - оптимизирует блоки данных сжатия. разработчики рекомендуют включать его (on)
--
SetCompressor -Это команда устанавливает алгоритм сжатия файлов/данных в инсталляторе.
Поддерживаются три метода сжатия: ZLIB, BZIP2 и LZMA.
ZLIB (значение по умолчанию) это - быстрый и простой метод. С заданным по умолчанию уровнем сжатия он использует приблизительно 300 Кбайт памяти.
BZIP2 дает лучшую степень сжатия чем ZLIB, но он немного медленнее и использует больше памяти. С заданными по умолчанию уровнем сжатия он использует приблизительно 4 Мбайта памяти.
--
LZMA - метод сжатия, который дает хорошую степень сжатия. Скорость распаковки высокая (10-20 МБ/сек на процессоре в 2 ГГц), а скорость сжатия ниже. Размер памяти, который будет использоваться для распаковки, равен размеру словаря плюс несколько Кбайт, значение по умолчанию составляет 8 Мбайт.
Если используется команда с /FINAL, то последующие запросы в SetCompressor будут проигнорированы.
Если используется команда с /SOLID, то все данные инсталлятора будут сжаты в одном блоке. Это приводит к большому степени сжатия.
Не. Не хочу заморачиваться с распаковывающимися архивами. »
а че там заморачиваться, создал архив(хоть запароленный), установщиком расжал в нужное место, при минимальных размерах установщика,
т.е скорость распаковки в основном зависит от ресурсов компьютера.

K.A.V.
30-03-2012, 00:22
MKN
о вставки кнопки в произвольное место ряда, когда уже имеется ряд кнопок »
Не понятно, что делать с кнопкой, которая идёт следом за добавляемым пунктом... :dont-know
Вот смотрите:

У нас заполнено уже 5 первых кнопок например (для простоты примера кнопка = попытка)
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5

вот...ну добавляю я кнопку с попыткой 6 на место 4 кнопки, ну понятно, значение 4 меняем 6 (ну мы же меняем у чекбокса попытку?) и становится так:

1 = 1
2 = 2
3 = 3
4 = 6
5 = 5

и что дальше?? куда девать 4 попытку? Что, заполнять "случайную" кнопку которая будет пустой при пересчёте или как?? Или заменять 5 на 4?
Даже если мы заменим 5 на 4, то у нас будет "дыра", "пятёрочка" просто исчезнет =)
Вообщем что-то здесь не складывается)))

Толи время суток сказывается толи что, не соображаю чего-то :drug:
Вообщем пойду спать :lazy:

kotkovets
30-03-2012, 00:25
Вообщем пойду спать »
утро вечера мудрее :biggrin:

MKN
30-03-2012, 08:50
K.A.V.,
Чёрт с ней со вставкой. Наверное я перемудрил и зря тебя озадачил...
А мысль была такая : :)
Мы ведь рассматривали вариант, когда устанавливали кнопки на "девственный" тулбар без кнопок, сохраняя последовательность установки кнопок сообразно последовательности выбора чекбоксов.

А если на тулбаре уже есть сколько то кнопок ?

Вот тогда и предполагалось, что новые кнопки (1, 2 или все 10) вставлялись бы и в любое место в уже имеющийся ряд кнопок и, в то же время, сохранялась последовательность установки новых кнопок, как уже было рассмотрено ранее. Вот такая загогулина...
что делать с кнопкой, которая идёт следом за добавляемым пунктом...
последовательность нумерации должна сохраняться "дважды" - для ряда "старых" кнопок и для ряда "новых".

Т.е. "вклинивание" новых кнопок в ряд старых, смещает имеющуюся последовательность старых кнопок (как было в предыдущей задаче).
И в то же время, как бы мы не тасовали новые кнопки, сохранялась бы последовательность их установки сообразно последовательности их выбора чекбоксами (как в последней задаче).

diakov
30-03-2012, 11:57
kotkovets, такой вопрос вот в KMPlayer '"$INSTDIR\KMPlayer.exe" -install' такой ключ устанавливает ассоциации, в PotPlayer '"$INSTDIR\PotPlayerMini64.exe" /RegisterAll' такой ключ устанавливает ассоциации там WinRAR еще какойто не помню. Есть ли возможность узнать как то эти ключи исходя из самого exe-шника? Спасибо.

kotkovets
30-03-2012, 12:44
Есть ли возможность узнать как то эти ключи исходя из самого exe-шника? Спасибо. »
причем здесь nsis? у разрабов спрашивай!

Olef2387
01-04-2012, 00:26
SetCompressorDictSize - Устанавливает размер словаря в мегабайтах (Мбайт), компрессором LZMA (значение по умолчанию составляет 8 Мбайт). Т.е сколько нужно оперативной памяти для сжатия или расжатия »

А если можно, пожалуйста, подробнее рассказать. Если скажем у пользователя имеется 512 мб оперативки, то сколько мне надо поставить в значении SetCompressorDictSize?

kotkovets
01-04-2012, 11:27
Olef2387, сами смотрите...
кстати, настройки архиватора 7z по умолчанию соответствуют балансу между уровнем сжатия и скоростью,
т.е размер словаря по умолчанию 64 Мбайт, в NSIS (?) размер словаря больше, чем 163 Мбайт не поставите,
почему не знаю.

Olef2387
01-04-2012, 14:21
в 7зип Размер словаря по умолчанию 16 mb стоит...

http://files.bestfree.ru/soft/file/7-Zip_5.gif

kotkovets
01-04-2012, 14:59
Olef2387, я имел ввиду при уровне сжатия "ультра"




© OSzone.net 2001-2012