1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

GamePacker 2.0.1 Release Candidate

Программа для управления freearc'ом и разбивкой файлов

  1. L-e-o-N
    Графическая версия программы, в которой гораздо удобнее работать нежели в консоли
    ПРОГРАММА НАПИСАНА С НУЛЯ И ПРЕДЫДУЩИЙ ФУНКЦИОНАЛ ПОКА НЕ РЕАЛИЗОВАН!!!
    Программа умеет:

    • Сканировать уазаную папку с игрой и выводить список сжымаемых файлов
    • Анализировать файлы и определять приблезительный сжатый размер
    • Создавать множество freearc архивов с заданым алгоритмом сжатия
    • Резервное копирование игровых файлов в временную папку (которая очищаеться после завершения программы)
    • Выбирает конфигурацию (arc-1.ini, ..., arc-n.ini) до тех пор пока не будет успешно создан архив (можно использовать алгоритмы которые в некоторых играх выдают ошибку сжатия, тогда программа просто повторит сжатие файлов с следующим конфигом)
    • Сохраняет предыдущие настройки в реестре, благодаря чему не нужно постоянно изменять их
    • Подсчитывает размер игры и примерное количество архивов
    Анализ выполняется посредством сжатия каждого файла по отдельности и определения размера архива. Он не обязателен, однако, в больших играх, способен значительно уменьшить количество проходов (в малых играх, лучше не использовать - только потеряете время)

    Использование программы очень просто:
    1. Запустить exe-шник
    2. В диалоговом окне выберите папку с игрой
    3. Настройте параметры программы (Имя архива, размер, и тп)
    4. Нажмите кнопку анализ файлов (опционально, если игра должна поместится в один архив, тогда анализ - впустую потраченое время)
    5. Нажмите кнопку упаковка
    6. Закройте программу и заберите архивы из папки out
    ОБНОВЛЕНИЕ 2.0.1 RC
    Изменения:

    • Добавлена возможность сгенерировать скрипт распаковки Inno Setup ISDone, скрипт можно включить в ваш скипт инсталятора директивой:
      Код (Text):
      #include "unpack.iss"
      в месте где прописывается распаковка архивов
    • Заменена иконка (Спасибо пользователю Nemko)
    Программа предназначена для упаковки директории игры в архив freearc с указанными параметрами.
    Файлы которые нужны программе:
    1. installpack.exe Непосредственно сама программа
    2. arc.exe консольная версия архиватора freearc, с помощью которой и происходит упаковка
    3. arc-1.ini Конфиг для freearc'а
    4. config.ini Конфиг для gamepacker'a
    5. nbtdata.dll DLL библиотека для сохранения и загрузки данных
    6. packZIP.exe - Нужно заменить на ту версию которая используется у вас в ISDone (Программа для упаковки ZIP архивов)
    7. 7z.exe - консольная версия 7zip архиватора, используется для распаковки zip архивов
    8. 7z.dll - Нужен для работы 7z.exe
    9. Rar.exe - консольная версия WinRar архиватора, для разбиения больших файлов на части
    10. xdelta3.exe - Служит для патчей zip архивов для уверенности что восстановление файлов произойдет bit to bit
    Остальные файлы программе не нужны, они используются в качестве препроцессоров freearc'а.
    Программа умеет:
    1. Создавать архивы приблизительно одинакового размера
    2. Распаковывать zip архивы (Детект zip архивов происходит по первым 4 байтам)
    3. Делить большие файлы на части с помощью многотомных rar архивов
    4. Генерировать скрипт для распаковки в ISDone(т.е. вы просто копируете команды из файла unpack.iss и вставляете их в свой скрипт)
    5. Возобновлять работу в случае преждевременного прекращения работы(например случайно нажали на крестик)
    Конфиг программы:
    • clearMasks - маски временных файлов, которые могут появится в папке с программой
    • arc.ini - указывает расположение arc.ini, который используется при распаковке (например: {tmp}\\arc.ini)
    • compress - секция настроек сжатия freearc'ом
      • compressLevel - уровень сжатия (значение подставляется в аргумент -m)
      • compressMetaLevel - уровень сжатия (значение подставляется в аргумент -dm)
      • archiveName - имя архивов (в конце будет добавлен номер архива)
      • archivePassword - пароль который нужно установить на архив
      • archiveExt - расширение архива
      • archiveSize - максимальный размер архива (в мегабайтах)
    • rarpartition - секция настроек разбиения больших файлов
      • enable - если true - тогда использовать разбиение иначе - нет
      • size - размер тома в мегабайтах (если 0 - тогда используется значение из archiveSize
    • zipunpack - секция настроек распаковки zip архивов
      • enable - если true - тогда распаковывать zip архивы иначе - нет
      • crcFix - если true - тогда после распаковки будет создан xdelta патч для восстановления исходного файла
      • compressLevel - уровень сжатия файлов zip архива (который задается для создания архива в ISDone)
    • precompress - секция настроек прекомпрессоров
      • все команды сортируются по ASCII таблице (сравнивается каждый символ ключа)
      • синтаксис команд:ключ=команда|команда распаковки в ISDone №1|...|команда распаковки в ISDone №n
        • Команда может иметь следующие переменные
          • $outfile$ - выходной файл
          • $infile$ - входной файл
        • Команда распаковки может иметь следующие переменные
          • $outpath$ - выходной каталог (относительно пути установки)
          • $infile$ - входной файл
          • $outfile$ - выходной файл
      • для указания в команде символа ';' нужно его экранировать ('\;')
      • для указания в команде символа '\' нужно его экранировать ('\\')
    Программа действует за следующим алгоритмом:
    1. Ищет файл save.dat
    2. если файл существует - загружает данные из него
    3. если файл не существует программа начинает собирать данные
      1. Сканирует папку с игрой
      2. для каждой папки выполняет шаг 1
      3. анализирует каждый файл
      4. если файл zip архив тогда распаковать, если нет то перейти к шагу 8
      5. создает zip архив из распакованных данных
      6. создает патч разницы между оригиналом и упакованным архивом
      7. для папки распакованного архива выполняет шаг 1
      8. проверяет размер каждого файла
      9. если размер больше заданого в конфиге то создать многотомный архив
      10. каждый проанализированный файл (кроме zip архива и не разбитого файла) заносит в список
      11. каждую пустую папку заносит в список
    4. Сортирует список по размеру в обратном порядке (первый файл - самый больший)
    5. После сбора данных начинается упаковка
      1. Создает список сжимаемых файлов
      2. добавляет в список все файлы пока их общий размер не будет максимально близкий к указаному в конфиге
      3. если в конфиге заданы прекомпрессоры тогда создает временный файл
      4. пропускает временный файл через все прекомпрессоры
      5. создает архив с конфигом arc-1.ini
      6. если не удалось, создает архив с конфигом arc-....ini
      7. если не удалось, создает архив с конфигом arc-n.ini
      8. берет размер созданого архива
      9. добавляет к списку файлы общего размера разницы размера указаного в конфиге и размера архива
      10. если в архив все еще можно вместить файлы возвращается к шагу 3
    6. Генерирует скрипт распаковки

    !!!ВНИМАНИЕ!!! не закрывайте программу в промежутки когда появилась надпись Saving data... и пока не появится надпись Save complete, Если вы это сделаете тогда файл save.dat будет поврежден и упаковку нельзя будет возобновить
    Упаковка игры делается с помощью перетаскивания папки с игрой на exe-шник программы или задания пути к папке с игрой с помощью первого аргумента командной строки (installpack.exe "d:\games\age of empires iii") пути с пробелами нужно указывать в кавычках, программа не должна лежать по пути который имеет в себе пробелы.
    Возобновление сжатия также возможно по даблклику по программе (нужен файл save.dat, для загрузки даных)
    Для работы программы должен быть установлен пакет Microsoft Visual C++ 2015 Redistributable Pack, скачать его можно от сюда
    YURSHAT, sanekbest1, lolli1002 и 3 другим нравится это.