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

GamePacker 3.6.2 Release

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

  1. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    145
    Симпатии:
    39
    Пол:
    Мужской
    Программа предназначена для упаковки директории игры в архив 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. Rar.exe - консольная версия WinRar архиватора, для разбиения больших файлов на части
    9. 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, для загрузки даных)
     
    Последнее редактирование: 19 апр 2017
  2. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    145
    Симпатии:
    39
    Пол:
    Мужской
    Пишите предложения по улучшению программы.
     
  3. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    735
    Симпатии:
    470
    При нажатии любой клавиши прога падает:
    Снимок.JPG
     
    Nemko нравится это.
  4. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    145
    Симпатии:
    39
    Пол:
    Мужской
    Написано же Game not set (Игра не задана). Нужно указать игру с помощью командной строи или перетаскиванием на exe-шник
     
  5. Ветеран

    Регистрация:
    5 мар 2014
    Сообщения:
    379
    Симпатии:
    69
    Запихни программу в ресурсы, там обновлять проще ;)
     
    L-e-o-N нравится это.
  6. Ветеран

    Регистрация:
    5 мар 2014
    Сообщения:
    379
    Симпатии:
    69
    Заходишь сюда: http://krinkels.org/resources/add?resource_category_id=8 заполняешь поля и прикрепляешь архив
     
    L-e-o-N нравится это.
  7. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    735
    Симпатии:
    470
    Ну и что? Вот я просто запустил exe, там написано что игра не задана, я нажимаю любую клавишу и что получаю? Вылет. Недоработка.
    З.Ы. не мешает добавить опцию -h или -help, которая будет выводить в консоль описание проги, параметры и прочие
     
  8. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    145
    Симпатии:
    39
    Пол:
    Мужской
    Просто в проводнике перетащи папку с игрой на экзешник программы
    Но скачай новый пакет(lzma2 почему то не пакует)
     
    Последнее редактирование: 19 апр 2017
  9. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    145
    Симпатии:
    39
    Пол:
    Мужской
  10. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    735
    Симпатии:
    470
    К стати, а почему только папку? Перетаскиваю файл, и ничего не пакуется
     
  11. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    145
    Симпатии:
    39
    Пол:
    Мужской
    Потому что программа предназначена для упаковки всей игры
     
  12. ART ART

    Новичок

    Регистрация:
    29 апр 2017
    Сообщения:
    9
    Симпатии:
    0
    Пишет ошибка компрессии:
    [​IMG]
     
  13. ART ART

    Новичок

    Регистрация:
    29 апр 2017
    Сообщения:
    9
    Симпатии:
    0
    Удалось упаковать файлы:
    1)Нужен MSVCR140.dll / MSVCP140.dll от Microsoft Visual C++ 2015
    Если его нет, то качаем тут
    2) нужно запускать из под администратора installpack.exe
    * возможно стоит и другие *.exe запускать из под админа (не проверял)
    3) желательно иметь в свободного места на диске: часть объем ОЗУ (с запасом можно взять и объем всей ОЗУ) + примерный объем запакованных файлов (с запасом можно взять и объем распакованных файлов)
    иначе программа просто сообщит о нехватке места и завершит создание архива
    Пример как у меня паковалось (ОЗУ 5 Гб):
    Бралась часть ОЗУ: чуть меньше 3 Гб + вес файлов 1,2 Гб
    Итог: 4 Гб для запаковки

    Для сравнения:
    сжимал FreeARC-ом последней версии (сейчас тестирую ключи активно)
    сжатие этих же файлов в районе 406 Мб и меньше (сжимал 20-30 минут)
    для распаковки требует от 170 Мб до 700 Мб
    сжав вашим архиватором получил: 376 Мб!
    Экономия 30 Мб (~2,27% от веса оригинальной игры или ~7,39% веса против архиватора FreeARC)
    для распаковки требует 4 Гб, ннда недурно много жрет... (по крайней мере так сказал мне FreeARC, открыть в FreeARC мне подсказали первые байты файла)
    интересно, а чисто теоритически, как себя поведет распаковка файлов, если на машине не окажется столько памяти???

    Сколько я не мучался с командной строкой для installpack.exe
    но вот как распаковать файлы так и не понял...

    нельзя ли создать пример запаковки и распаковки?
    в плане по шагам, где какие команды прописывать, а то новички могут легко запутаться
    1) Через команды распаковки для Arc.exe не распаковывает
    2) Не понятно какой синтаксис программы installpack.exe:
    • precompress - секция настроек прекомпрессоров
      • все команды сортируются по ASCII таблице (сравнивается каждый символ ключа)
      • синтаксис команд:ключ=команда|команда распаковки в ISDone №1|...|команда распаковки в ISDone №n
        • Команда может иметь следующие переменные
          • $outfile$ - выходной файл
          • $infile$ - входной файл
        • Команда распаковки может иметь следующие переменные
          • $outpath$ - выходной каталог (относительно пути установки)
          • $infile$ - входной файл
          • $outfile$ - выходной файл
      • для указания в команде символа ';' нужно его экранировать ('\;')
      • для указания в команде символа '\' нужно его экранировать ('\\')

    Как это правильно прописать так и не докумекал
    и как на зло эта опция отсутствует

    А вот это плоховатенько, ведь в LZMA2
    • выходной поток может содержать одновременно несжатые и сжатые данные (несжимаемые данные записываются как есть - что экономит биты).
    • Лучшая поддержка многопоточности при компрессии и декомпрессии.

    И последнее самое важное:
    Почему нельзя создавать SFX архив?
    P.S. пытался прикрутить различные SFX модули
    но ни один не заработал, только от FreeARC удалось распаковать каталоги, а после вывалился с ошибкой(
    Я так понимаю это все из-за того что программа компрессор пользовалась и другими методами из других архиваторов
     
    Последнее редактирование: 30 апр 2017
  14. Ветеран

    Регистрация:
    6 янв 2013
    Сообщения:
    70
    Симпатии:
    51
    Пол:
    Мужской
    Как я понял оно только запаковывает, распаковывать только с помощью IS, ну или смотреть тот скрипт, который создаёт программа , а с него уже батник делать.
    Посмотрите в
    Код (Text):
    ;command01=precomp -intense -cn -o$outfile$ $infile$|          LabelCurrentDir:='$outpath$'\;|        if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\\$infile$'),    ExpandConstant('{app}\\$outfile$'), true) then break\;
    ;command02=msc c -v -wav=1 -raw=1 -ddsDXT=1 -ddsRAW=0 -mp3=1 -f -lzma,bt4,lc3,lp0,pb2,fb128 -tak=9 -dxt=2 -t=4 $infile$ $outfile$|        if not ISExec( 0, 0, 0, ExpandConstant('{tmp}\\MSC_Unpack.exe'), ExpandConstant('"{app}\\$infile$" "{app}\\$outfile$"'), ExpandConstant('{app}\\$outpath$'), ExpandConstant('{app}\\$outfile$'),false) then break\;|        DeleteFile(ExpandConstant('{app}\\$infile$'))\;
    ;command03=srep -a1 -m5f -l256 $infile$  $outfile$|          LabelCurrentDir:='$outpath$'\;|        if not ISSRepExtract   ( 0, 0, ExpandConstant('{app}\\$infile$'),ExpandConstant('{app}\\$outfile$'), true) then break\;
    там есть примеры.
     
  15. ART ART

    Новичок

    Регистрация:
    29 апр 2017
    Сообщения:
    9
    Симпатии:
    0
    А это что?
    нужно что то отдельно качать?

    В секции настроек прекомпрессоров написано о распаковке
    Команда распаковки может иметь следующие переменные
    • $outpath$ - выходной каталог (относительно пути установки)
    • $infile$ - входной файл
    • $outfile$ - выходной файл

    Так же в папке присутствует файл MSC_Unpack.exe шаманство с его командной строкой ни к чему не привело :nea:
     
    Последнее редактирование: 30 апр 2017
  16. Ветеран

    Регистрация:
    6 янв 2013
    Сообщения:
    70
    Симпатии:
    51
    Пол:
    Мужской
    IS - Inno Setup
    Так он нужен будет после упаковки и создания setap'а , который в Inno Setup ещё нужно сделать. Так же для распаковки нужен будет ISDone ( тоже есть на форуме).
    Естественно, вы их добавляете в конфиг, чтобы программа знала как создавать скрипт и с какими параметрами.
     
  17. ART ART

    Новичок

    Регистрация:
    29 апр 2017
    Сообщения:
    9
    Симпатии:
    0
    У меня есть игра, она содержит три файла: Setup.exe
    Setup-1.bin (весом в 572 Мб)
    и Setup-2.bin (весом в 22 Мб)
    начинаются они с idska32
    т.е. если я приложу к ней файл:
    Setup-3.bin (со своим архивом, без пароля)
    то она и его установит?
    Setup-3.bin - содержит в себе Mods (устанавливается в ту же папку)

    Setup.exe:
    [​IMG]
     
    Последнее редактирование: 30 апр 2017
  18. Ветеран

    Регистрация:
    6 янв 2013
    Сообщения:
    70
    Симпатии:
    51
    Пол:
    Мужской
    Если сам setup.exe собирали не вы, то ничего она не установит. Вам надо установить игру, запаковать её, запаковать моды, потом создать свой setup.exe, в котором вы уже прописываете какие архивы и откуда будут подхватываться.
     
  19. ART ART

    Новичок

    Регистрация:
    29 апр 2017
    Сообщения:
    9
    Симпатии:
    0
    можете дать ссылку на полную инструкцию как все делать, вплоть до прикручивания скрипта, не хотелось бы терять много времени и тестировать каждый метод
    Для нахождения правильного пути

     
    Последнее редактирование: 30 апр 2017
  20. Ветеран Модератор

    Регистрация:
    11 июн 2012
    Сообщения:
    450
    Симпатии:
    170
    Пол:
    Мужской
    ART, про файл подкачки ты видимо не слышал)
     

Поделиться этой страницей