GamePacker

GamePacker 4.6.0 Release no redist

Нет прав для скачивания

L-e-o-N

Пользователь
Программа предназначена для упаковки директории игры в архив 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, для загрузки даных)
 
Последнее редактирование:

Krinkels

Он где то тут
Администратор
При нажатии любой клавиши прога падает:
Снимок.JPG
 

Krinkels

Он где то тут
Администратор
Написано же Game not set (Игра не задана).
Ну и что? Вот я просто запустил exe, там написано что игра не задана, я нажимаю любую клавишу и что получаю? Вылет. Недоработка.
З.Ы. не мешает добавить опцию -h или -help, которая будет выводить в консоль описание проги, параметры и прочие
 

L-e-o-N

Пользователь
Ну и что? Вот я просто запустил exe, там написано что игра не задана, я нажимаю любую клавишу и что получаю? Вылет. Недоработка.
З.Ы. не мешает добавить опцию -h или -help, которая будет выводить в консоль описание проги, параметры и прочие
Просто в проводнике перетащи папку с игрой на экзешник программы
Но скачай новый пакет(lzma2 почему то не пакует)
 
Последнее редактирование:

ART

Пользователь
Удалось упаковать файлы:
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$ - выходной файл
    • для указания в команде символа ';' нужно его экранировать ('\;')
    • для указания в команде символа '\' нужно его экранировать ('\\')

Как это правильно прописать так и не докумекал
опцию -h или -help, которая будет выводить в консоль описание проги, параметры и прочие
и как на зло эта опция отсутствует

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

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

ShuLLeR

Пользователь
Сколько я не мучался с командной строкой для installpack.exe
но вот как распаковать файлы так и не понял...
Как я понял оно только запаковывает, распаковывать только с помощью IS, ну или смотреть тот скрипт, который создаёт программа , а с него уже батник делать.
секция настроек прекомпрессоров
Посмотрите в
Код:
;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\;
там есть примеры.
 

ART

Пользователь
распаковывать только с помощью IS
А это что?
нужно что то отдельно качать?

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

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

ShuLLeR

Пользователь
IS - Inno Setup
MSC_Unpack.exe шаманство с его командной строкой ни к чему не привело
Так он нужен будет после упаковки и создания setap'а , который в Inno Setup ещё нужно сделать. Так же для распаковки нужен будет ISDone ( тоже есть на форуме).
В секции настроек прекомпрессоров написано о распаковке
Естественно, вы их добавляете в конфиг, чтобы программа знала как создавать скрипт и с какими параметрами.
 

ART

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

Setup.exe:
 
Последнее редактирование:

ShuLLeR

Пользователь
т.е. если я приложу к ней файл
Если сам setup.exe собирали не вы, то ничего она не установит. Вам надо установить игру, запаковать её, запаковать моды, потом создать свой setup.exe, в котором вы уже прописываете какие архивы и откуда будут подхватываться.
 

ART

Пользователь
создать свой setup.exe
можете дать ссылку на полную инструкцию как все делать, вплоть до прикручивания скрипта, не хотелось бы терять много времени и тестировать каждый метод
Для нахождения правильного пути

Экономия 30 Мб (~2,27% от веса оригинальной игры или ~7,39% веса против архиватора FreeARC)
для распаковки требует 4 Гб, ннда недурно много жрет... (по крайней мере так сказал мне FreeARC, открыть в FreeARC мне подсказали первые байты файла)
интересно, а чисто теоритически, как себя поведет распаковка файлов, если на машине не окажется столько памяти???
 
Последнее редактирование:
Сверху