Показать сообщение отдельно
  #8  
Старый 26.06.2020, 15:05
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну, пиши свой.
Файлы можно жать чем угодно, хоть встроенным компрессором (ZLib).
Т.е. у тебя есть:
1. Некоторые файлы, которые надо установить
2. Проект инсталятора (не самого приложеня, а отдельный проект для инсталляции)

Делаем раз - жмем файлы любым методом. Один файл - один архив.
Делаем два - создаем rc файл со списком сжатых файлов.
Делаем три - запускаем компилятор ресурсов и компилируем файл res из rc.
Делаем четыре - в проект инсталятора подключаем полученный файл res.
Делаем пять - в проекте инсталятора пишем код, который достает нужный ресурс по идентификатору, разжимает его и пишет в нужное место.
Profit.

PS. Запуск компилятора ресурсов можно настроить на автоматический запуск перед компиляцией проекта инсталятора, но если файлы большие, то лучше этого не делать, а самому подготовить его заранее.
Цель не просто сжать а максимально сжать. Файл размером в 599 МБ в 7z при максимальном сжатии имеет всего 349 МБ. Так что примерно такой способ. Единственный вариант это работать с dll 7z но знатьбы как. Официальные библиотеки пас меня мало интересуют так как банально устарели и не имею LZMA2 сжатия.
Параметры сжатия которые использовались для сжатия в 7z
Метод: LZMA2
Уровень сжатия: Ультра
Размер словаря: 128 МБ
Размер слова: 64
Размер блока: 8GB
Число потоков: 4 - 8
Вот примерно такой уровень сжатия меня и интересует. Но исходники 7z на delphi не дают такого большого уровня. Там максимум LZMA с размером словоря 32МБ
И да меня не волнует сколько часов это будет запаковываться. Да хоть часов 10. Главное чтоб распаковка и уровень сжатия была высокая.
И да. Я и так заранее буду готовить данные так как помимо самой запаковки это еще и шифровка. Пакет с данными конечно должен быть отдельным файлом. Его легче будет загрузить из сетки чем грузить вместе с основной программой. Точнее программа будет загружать из сетки.
Ответить с цитированием