Вопрос Что такое "Выделение места на диске" и как с этим работать в Inno?

zettend

Старожил
Здравствуйте!
Видел такую функцию и в Steam и в GOG, но можно ли такое использовать в Inno?
 

Shegorat

Lord of Madness
Администратор
@zettend,на самом деле ничего такого.
Steam либо GOG перед началом скачивания файлов игры создаёт на диске файлы-пустышки по размеру оригинальных файлов, тем самым резервируя место на диске под всю игру.
На инно можно сделать, но только вручную, через код.
 

Хамик

Старожил
@zettend,на самом деле ничего такого.
Steam либо GOG перед началом скачивания файлов игры создаёт на диске файлы-пустышки по размеру оригинальных файлов, тем самым резервируя место на диске под всю игру.
На инно можно сделать, но только вручную, через код.
Код не подскажите?
 

Shegorat

Lord of Madness
Администратор
Щас - нет. Но он будет ооочень костыльный, да и не универсальный. Надо будет строить список файлов с размерами для каждой игры
 

L-e-o-N

Старожил
Щас - нет. Но он будет ооочень костыльный, да и не универсальный. Надо будет строить список файлов с размерами для каждой игры
А ведь можно создать cls фильтр, который сможет сделать это. Задача интересная, если будет время, займусь.
 

Shegorat

Lord of Madness
Администратор
А ведь можно создать cls фильтр, который сможет сделать это. Задача интересная, если будет время, займусь.
Успехов) Но есть несколько нюансов. Надо будет форсировать опцию -y, чтобы unarc перезаписывал "выделенные" файлы, иначе он будет на каждом файле спотыкаться

З.Ы. Но честно говоря лучше это сделать отдельной либой, которая принимает на вход список файлов с размерами
 

L-e-o-N

Старожил
Успехов) Но есть несколько нюансов. Надо будет форсировать опцию -y, чтобы unarc перезаписывал "выделенные" файлы, иначе он будет на каждом файле спотыкаться

З.Ы. Но честно говоря лучше это сделать отдельной либой, которая принимает на вход список файлов с размерами
В ISDone файлы автоматом перезаписываются, поэтому проблем не будет.
 

L-e-o-N

Старожил
Успехов) Но есть несколько нюансов. Надо будет форсировать опцию -y, чтобы unarc перезаписывал "выделенные" файлы, иначе он будет на каждом файле спотыкаться

З.Ы. Но честно говоря лучше это сделать отдельной либой, которая принимает на вход список файлов с размерами
Не подскажешь, какими опциями можно влиять на внутреннюю структуру архива FreeArc-а? Я далеко не все опции в нему понимаю, а для выделения, cls-ка должна построить правильную структуру.
 

Shegorat

Lord of Madness
Администратор
@L-e-o-N,в плане влиять на внутреннюю структуру?
Сейчас у cls довольно ограниченный набор функционала. И сейчас у него нет доступа к информации о файлах и сжатых блоках
 

L-e-o-N

Старожил
@L-e-o-N,в плане влиять на внутреннюю структуру?
Сейчас у cls довольно ограниченный набор функционала. И сейчас у него нет доступа к информации о файлах и сжатых блоках
Эту информацию можно почерпнуть из командной строки архиватора. Поэтому мне и нужна информация о том, какие аргументы влияют на внутреннюю структуру и каким образом. Я смотрел в документации, но несовсем понял, как работают несколько параметров, кроме того не хочу ничего упустить.
 

Shegorat

Lord of Madness
Администратор
@L-e-o-N, в данный момент в CLS поддерживаются только следующие команды:
CLS_GET_PARAMSTR - получить канонизированную строку компрессора с параметрами
CLS_FULL_READ, CLS_PARTIAL_READ - читаем данные из потока
CLS_FULL_WRITE, CLS_PARTIAL_WRITE - пишем данные в поток
CLS_MALLOC - выделить кусок памяти
CLS_FREE - освободить выделенный кусок памяти

Поясню за CLS_GET_PARAMSTR:
К примеру мы сжимаем такой строкой "-m=libfilter:a80:d200:b64mb+delta+4x4:b64mb:lzma"
Наш фильтр называется cls-libfilter. Так вот вызвав CLS_GET_PARAMSTR, мы получим "libfilter:a80:d200:b64mb" а дальше уже сами парсим как нам нужно.
За сим всё. Это всё что умеет cls-фильтр на данный момент.
Задавай вопросы, если что-то непонятно.
 

L-e-o-N

Старожил
@L-e-o-N, в данный момент в CLS поддерживаются только следующие команды:
CLS_GET_PARAMSTR - получить канонизированную строку компрессора с параметрами
CLS_FULL_READ, CLS_PARTIAL_READ - читаем данные из потока
CLS_FULL_WRITE, CLS_PARTIAL_WRITE - пишем данные в поток
CLS_MALLOC - выделить кусок памяти
CLS_FREE - освободить выделенный кусок памяти

Поясню за CLS_GET_PARAMSTR:
К примеру мы сжимаем такой строкой "-m=libfilter:a80:d200:b64mb+delta+4x4:b64mb:lzma"
Наш фильтр называется cls-libfilter. Так вот вызвав CLS_GET_PARAMSTR, мы получим "libfilter:a80:d200:b64mb" а дальше уже сами парсим как нам нужно.
За сим всё. Это всё что умеет cls-фильтр на данный момент.
Задавай вопросы, если что-то непонятно.
Я не это имел в виду. Я о аргументах коммандной строки freearc-a, которые влияют на то, каким образом файлы будут помещены в архив (файловая структура архива) вроде аргумента -dp.
 

Shegorat

Lord of Madness
Администратор
А, ты об этом. Единственный модификатор, который влияет на структуру архивов - это опция "-ep"
Код:
Исключает часть пути из имени файла, записываемого в архив, или наоборот – расширяет его до полного имени файла на диске:

-ep0 – записывает голое имя файла без каталога
-ep1 – исключает из имени файла часть, заданную в командной строке
-ep2 – расширяет имя до полного имени файла на диске, за исключением “d:\” или “/” части
-ep3 – записывает полное абсолютное имя

При распаковке абсолютные имена обрезаются, если не указана опция -ep3.
-dp при распаковке указывает папку распаковки
 

L-e-o-N

Старожил
А, ты об этом. Единственный модификатор, который влияет на структуру архивов - это опция "-ep"
Код:
Исключает часть пути из имени файла, записываемого в архив, или наоборот – расширяет его до полного имени файла на диске:

-ep0 – записывает голое имя файла без каталога
-ep1 – исключает из имени файла часть, заданную в командной строке
-ep2 – расширяет имя до полного имени файла на диске, за исключением “d:\” или “/” части
-ep3 – записывает полное абсолютное имя

При распаковке абсолютные имена обрезаются, если не указана опция -ep3.
-dp при распаковке указывает папку распаковки
Да, именно оно.
-ep3 – записывает полное абсолютное имя

При распаковке абсолютные имена обрезаются, если не указана опция -ep3.
Это как? Как раз этого не понял.
 

Shegorat

Lord of Madness
Администратор
Это как? Как раз этого не понял.
Абсолютное имя это полный путь до файла, к примеру
Z:\test\data\pakchunk.pak
Именно так оно и будет записано в архив, обычно используется для создания бэкапов.

Обычно все используют -ep1 и не парятся
 

L-e-o-N

Старожил
Абсолютное имя это полный путь до файла, к примеру
Z:\test\data\pakchunk.pak
Именно так оно и будет записано в архив, обычно используется для создания бэкапов.

Обычно все используют -ep1 и не парятся
Это понятно. Но, при распаковке, архиватор попытается восстановить структуру. Но папку с именем Z: он не сможет создать (двоеточие в Windows запрещенный символ в пути). Вот я и не знаю, как архиватор себя ведёт в таком случае
В общем вот файл со всеми опциями, которые мне нужно обработать. Возле тех опций, какие я не до конца понимаю стоит знак вопроса.
И ещё не ясно, какая из опций имеет больший приоритет -x --exclude или -n --include (тоесть, если для обоих указан один и тот же файл, то он будет включён в архив, или исключён)
 

Вложения

Последнее редактирование:
Сверху