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

  • Автор темы Автор темы zettend
  • Дата начала Дата начала

zettend

Старожил
Здравствуйте!
Видел такую функцию и в Steam и в GOG, но можно ли такое использовать в Inno?
 
@zettend,на самом деле ничего такого.
Steam либо GOG перед началом скачивания файлов игры создаёт на диске файлы-пустышки по размеру оригинальных файлов, тем самым резервируя место на диске под всю игру.
На инно можно сделать, но только вручную, через код.
 
@zettend,на самом деле ничего такого.
Steam либо GOG перед началом скачивания файлов игры создаёт на диске файлы-пустышки по размеру оригинальных файлов, тем самым резервируя место на диске под всю игру.
На инно можно сделать, но только вручную, через код.
Код не подскажите?
 
Щас - нет. Но он будет ооочень костыльный, да и не универсальный. Надо будет строить список файлов с размерами для каждой игры
 
Щас - нет. Но он будет ооочень костыльный, да и не универсальный. Надо будет строить список файлов с размерами для каждой игры
А ведь можно создать cls фильтр, который сможет сделать это. Задача интересная, если будет время, займусь.
 
А ведь можно создать cls фильтр, который сможет сделать это. Задача интересная, если будет время, займусь.
Успехов) Но есть несколько нюансов. Надо будет форсировать опцию -y, чтобы unarc перезаписывал "выделенные" файлы, иначе он будет на каждом файле спотыкаться

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

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

З.Ы. Но честно говоря лучше это сделать отдельной либой, которая принимает на вход список файлов с размерами
Не подскажешь, какими опциями можно влиять на внутреннюю структуру архива FreeArc-а? Я далеко не все опции в нему понимаю, а для выделения, cls-ка должна построить правильную структуру.
 
@L-e-o-N,в плане влиять на внутреннюю структуру?
Сейчас у cls довольно ограниченный набор функционала. И сейчас у него нет доступа к информации о файлах и сжатых блоках
 
@L-e-o-N,в плане влиять на внутреннюю структуру?
Сейчас у cls довольно ограниченный набор функционала. И сейчас у него нет доступа к информации о файлах и сжатых блоках
Эту информацию можно почерпнуть из командной строки архиватора. Поэтому мне и нужна информация о том, какие аргументы влияют на внутреннюю структуру и каким образом. Я смотрел в документации, но несовсем понял, как работают несколько параметров, кроме того не хочу ничего упустить.
 
@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, в данный момент в 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.
 
А, ты об этом. Единственный модификатор, который влияет на структуру архивов - это опция "-ep"
Код:
Исключает часть пути из имени файла, записываемого в архив, или наоборот – расширяет его до полного имени файла на диске:

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

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

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

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

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

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

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

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

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

Вложения

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