|
#1
|
|||
|
|||
Свой инсталятор
Здравствуйте.
Помогите разобраться с этим вопросом. А именно с созданием своего инсталятора. Для начало меня интересует библиотека или способ сжатия данных в 1 файл. Как4 вариант библиотека SevenZipVCL однако тот факт что на их оф сайте библиотека старая и не содержит метода LZMA2 меня совершенно не устраивает. Можете помочь найти библиотеку. Или расказать о способе упаковать файлы в 1 файл. Файлы большого размера. Примерно пол гига полный объем всех файлов. |
#2
|
||||
|
||||
А создание sfx-архива не рассматривается? Или воспользоваться мощным специализированным инструментом, например Advanced Installer, не? А по вопросу, я думаю, что все требуемые файлы нужно поместить в ресурсы твоего проекта-инсталятора, а при запуске инсталятора ресурсы нужно извлечь в требуемый каталог.
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. Последний раз редактировалось Kailon, 23.06.2020 в 14:52. |
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
И чем готовые решения не годятся?
Я, например, пользуюсь InnoSetup. Там есть все, в том числе и можно свой код (на паскале) написать. |
#5
|
|||
|
|||
Цитата:
|
#6
|
|||
|
|||
Ну, пиши свой.
Файлы можно жать чем угодно, хоть встроенным компрессором (ZLib). Т.е. у тебя есть: 1. Некоторые файлы, которые надо установить 2. Проект инсталятора (не самого приложеня, а отдельный проект для инсталляции) Делаем раз - жмем файлы любым методом. Один файл - один архив. Делаем два - создаем rc файл со списком сжатых файлов. Делаем три - запускаем компилятор ресурсов и компилируем файл res из rc. Делаем четыре - в проект инсталятора подключаем полученный файл res. Делаем пять - в проекте инсталятора пишем код, который достает нужный ресурс по идентификатору, разжимает его и пишет в нужное место. Profit. PS. Запуск компилятора ресурсов можно настроить на автоматический запуск перед компиляцией проекта инсталятора, но если файлы большие, то лучше этого не делать, а самому подготовить его заранее. |
#7
|
||||
|
||||
Цитата:
Цитата:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#8
|
|||
|
|||
Цитата:
Параметры сжатия которые использовались для сжатия в 7z Метод: LZMA2 Уровень сжатия: Ультра Размер словаря: 128 МБ Размер слова: 64 Размер блока: 8GB Число потоков: 4 - 8 Вот примерно такой уровень сжатия меня и интересует. Но исходники 7z на delphi не дают такого большого уровня. Там максимум LZMA с размером словоря 32МБ И да меня не волнует сколько часов это будет запаковываться. Да хоть часов 10. Главное чтоб распаковка и уровень сжатия была высокая. И да. Я и так заранее буду готовить данные так как помимо самой запаковки это еще и шифровка. Пакет с данными конечно должен быть отдельным файлом. Его легче будет загрузить из сетки чем грузить вместе с основной программой. Точнее программа будет загружать из сетки. Последний раз редактировалось Alexandr_57, 26.06.2020 в 15:14. |
#9
|
|||
|
|||
Насколько я знаю, дельфевый 7zip компонент - это просто обертка над соотв. dll от самого 7zip. А не судьба просто попробовать подложить новую библиотеку и попробовать?
Кстати, есть еще компрессор bzip, Тоже дает неплохой коэф. сжатия. |
#10
|
|||
|
|||
Цитата:
Яже сказал та что на сайте это старая обертка там нет данных по сжатию LZMA2 и других данных. Она устарела. Понятное дело что это обертка. Но это обертка по сути над компонентам 7ZA.DLL Когда как в самом архиве используется просто 7z.dll Плюс как уже сказал в обертке нет никаких инструкций по использованию LZMA2, словоря большего объема и прочего. Забыл добавить размер хоть и большой но это не 1 файл и не 2 и не 10 а несколько тысяч Вот и та самая обертка: Последний раз редактировалось Alexandr_57, 27.06.2020 в 15:25. |
#11
|
|||
|
|||
Вариант такой. Пишем сами упаковщик на основе скажем по алгоритма Зеемана или Хаффмана или разработаем свой и вносим вклад в науку и программирование.
Например такая идея. Любое число может быть просуммированы по цифрам от 0 до 9. При этом в конечном итоге получим цифру из этого же диапазона. А дальше полет мысли неограничен. |
#12
|
||||
|
||||
Цитата:
Вот вам XZ, на основе LZMA SDK, пакует используя по умолчанию алгоритм LZMA2, но сперва для объединения всех файлов в один используйте TAR (получится типа TAR.XZ, только не используйте очень длинные имена файлов): https://github.com/delphiunderground/xz-examples-delphi Либо, перекладывайте всю работу на командную строку того же 7-Zip (пример макс сжатия): "C:\Program Files\7-Zip\7z.exe" a -t7z -m0=lzma2:d1024m -mx=9 -aoa -mfb=64 -md=32m -ms=on -sdel filename archive.7z Последний раз редактировалось Vayrus, 11.12.2020 в 15:47. |