Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Olef2387
29-03-2012, 04:36
kotkovets
Здравствуйте! Читал в теме, вы давали советы для лучшего сжатия файлов установщика. Это ,конечно хорошо когда всё жмётся по самые пельмени. Но вот когда инсталлер весит больше гигабайта - то распаковывается это дело жутко долго... Ещё вначале "veryfuing installer" вылезает и долго грузится.
Как можно обеспечить более быструю распаковку? Пожалуйста, посоветуйте наиболее оптимальные параметры в соотношении "сжатие - скорость распаковки".
Готов пожертвовать размером установщика (ибо щас это не принципиально, почти у всех безлимитки на хороших скоростях).
Спасибо!
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 поместить в сообщении не получается. Пост как то странно форматируется..
"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
Нужно в справочник добавлять страничку "Часто задаваемые вопросы"
Первым делом добавить инфу по поводу создания многотомных архивов »
сделаем :)
MKN, возьмите на тест...
Если я правильно понял задачу, то вроде работает =)
Там в папке с EXE в INI файл будет записываться значение чекбоксов, при отметке и при снятии отметки в 2 параметра
P.S.
Вы там взялись за написание софта с помощью NSIS как я? :)
Такие головоломки прям)))
взялись за написание софта с помощью NSIS как я? »
Куда мне до тебя и kotkovets... :) Задумок много, с реализацией проблема. Точнее со знаниями как и что...
Test делает прямо то, что надо !
ps А можно оформить этот код как .nsh или плагин (приобщив туда же предыдущие изыскания с вставкой кнопки в произволное место последовательности) ? Это я так спросил... :)
с вставкой кнопки в произволное место последовательности »
Не понял :dont-know
Заменить текстовые поля на кнопки? =)
Вообщем вот смотрите...Если чего не поймёте - спрашивайте
K.A.V.,
Благодарю за код. Буду изучать.
ps Я имел ввиду объединение кода с предыдущим моим вопросом, о вставки кнопки в произвольное место ряда, когда уже имеется ряд кнопок. Но наверное не нужно смешивать задачи...
Но наверное не нужно смешивать задачи... »
Добавить отдельную функцию и вызывать её, в которой будет "сдвиг" пунктов...
Сделаю позже ;)
Изучайте пока то что уже есть :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, то все данные инсталлятора будут сжаты в одном блоке. Это приводит к большому степени сжатия.
Не. Не хочу заморачиваться с распаковывающимися архивами. »
а че там заморачиваться, создал архив(хоть запароленный), установщиком расжал в нужное место, при минимальных размерах установщика,
т.е скорость распаковки в основном зависит от ресурсов компьютера.
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:
K.A.V.,
Чёрт с ней со вставкой. Наверное я перемудрил и зря тебя озадачил...
А мысль была такая : :)
Мы ведь рассматривали вариант, когда устанавливали кнопки на "девственный" тулбар без кнопок, сохраняя последовательность установки кнопок сообразно последовательности выбора чекбоксов.
А если на тулбаре уже есть сколько то кнопок ?
Вот тогда и предполагалось, что новые кнопки (1, 2 или все 10) вставлялись бы и в любое место в уже имеющийся ряд кнопок и, в то же время, сохранялась последовательность установки новых кнопок, как уже было рассмотрено ранее. Вот такая загогулина...
что делать с кнопкой, которая идёт следом за добавляемым пунктом...
последовательность нумерации должна сохраняться "дважды" - для ряда "старых" кнопок и для ряда "новых".
Т.е. "вклинивание" новых кнопок в ряд старых, смещает имеющуюся последовательность старых кнопок (как было в предыдущей задаче).
И в то же время, как бы мы не тасовали новые кнопки, сохранялась бы последовательность их установки сообразно последовательности их выбора чекбоксами (как в последней задаче).
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC