Jump to content
Korean Random
Sign in to follow this  
beb

[Решено] Имея разностные файлы .rdiff и/или .xdiff грядущего обновления получить обновленные файлы ресурсов .pkg

Recommended Posts

Например:

  • текущий интересующий ресурс (в подпапке игры) 
    res\packages\gui-part1.pkg
  • грядущее обновление (в имеющемся перечне в подпапке игры)
    updates\a5c09c2fdb416fe3cd9fc672aee448ec7082345a.resume
    updates\wott3rvn3_1.12.0.2653_eu\wott3rvn3_1.12.0.21023_1.11.1.20995_client.wgpkg
    updates\wott3rvn3_1.12.0.2653_eu\wott3rvn3_1.12.0.21023_1.11.1.20995_sdcontent.wgpkg
  • включая обновление интересующего ресурса
    updates\wott3rvn3_1.12.0.2653_eu\wott3rvn3_1.12.0.21023_1.11.1.20995_client.wgpkg\res\packages\gui-part1.pkg.1.12.0.21023.79490109.rdiff


Вопрос: возможно ли прямо сейчас из всего этого, что имеется, получить gui-part1.pkg, ожидаемый после применения обновления?
Что-то гугл в этом вопросе не помогает.

 

edit

нагуглилось:

 

rdiff.exe --help > rdiff_help.txt

Usage: rdiff [OPTIONS] signature [BASIS [SIGNATURE]]
             [OPTIONS] delta SIGNATURE [NEWFILE [DELTA]]
             [OPTIONS] patch BASIS [DELTA [NEWFILE]]
Options:
  -v, --verbose             Trace internal processing
  -V, --version             Show program version
  -?, --help                Show this help message
  -s, --statistics          Show performance statistics
  -f, --force               Force overwriting existing files
Signature generation options:
  -H, --hash=ALG            Hash algorithm: blake2 (default), md4
Delta-encoding options:
  -b, --block-size=BYTES    Signature block size
  -S, --sum-size=BYTES      Set signature strength
      --paranoia            Verify all rolling checksums
IO options:
  -I, --input-size=BYTES    Input buffer size
  -O, --output-size=BYTES   Output buffer size
  -z, --gzip[=LEVEL]        gzip-compress deltas
  -i, --bzip2[=LEVEL]       bzip2-compress deltas

Все сработало.

 

[resolved] how-to: wot resources package .pkg gets updated from the current one with a predownloaded upcoming update binary difference file .rdiff

 

edit2: formatting

Edited by beb
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

@Mixaill, спасибо за подсказку. Теперь мной побежден и .xdiff.
 

.rdiff обрабатывается как показано выше:

rdiff.exe patch old.pkg delta.rdiff new.pkg

.xdiff обрабатывается следующим образом:

xdelta3.exe -d -s old.pkg delta.xdiff new.pkg

 

Пример:

  • имеем в папке клиента игры ресурсы в текущем состоянии:
    res\packages\gui-part1.pkg
    res\packages\gui-part2.pkg
  • имеем в грядущем обновлении, среди прочего, в папке клиента игры, предзагруженные разностные файлы, касающиеся указанных ресурсов:
    updates\wot_1.12.1.2764_ru_pj9v79\wot_1.12.1.21133_1.12.0.21119_client.wgpkg\res\packages\gui-part1.pkg.1.12.1.21133.F28F93AB.xdiff
    updates\wot_1.12.1.2764_ru_pj9v79\wot_1.12.1.21133_1.12.0.21119_client.wgpkg\res\packages\gui-part2.pkg.1.12.1.21133.7A3317D5.rdiff
  • Имеем цель (здесь и сейчас) получить ресурсы  gui-part1.pkg и gui-part2.pkg в том состоянии, какое бы оно было (фактически будет), когда обновление будет применено. Для этого берем текущие (прежние) ресурсы (gui-part1.pkg и gui-part2.pkg) , применяем к ним разностные файлы .rdiff и .xdiff, и получаем ресурсы gui-part1-uptated.pkg и gui-part2-uptated.pkg  уже в обновленном состоянии (здесь и сейчас, не дожидаясь дня, когда обновление будет официально развернутно клиентом).
  • Для реализации обозначенной выше цели используем команды в синтаксисе:
    для .rdiff, следующего типа:
    rdiff.exe patch      gui-part2.pkg    gui-part2.rdiff    gui-part2-uptated.pkg
    для .xdiff, следующего типа:
    xdelta3.exe -d -s    gui-part1.pkg    gui-part1.xdiff    gui-part1-uptated.pkg

 

Вопрос: а зачем это надо?
Ответ: кому надо, тот поймет*.

 

*Как вариант:

Вы делаете какой-то мод, зависимый от состояния ресурсов клиента. При этом уже сейчас у вас на руках предзагруженные обновления и есть время, на то, чтобы в них ковыряться. Но когда обновление будет развернуто официально, то времени у вас не будет.

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

 

Примечания:

  1. Внутри OpenWG.WoT.Patcher от @Mixaill находится rdiff.exe более свежей версии, чем по моей ссылке в первом сообщении (rdiff-2.0.3-win64 vs rdiff-2.0.2-win64), поэтому я предпочитаю теперь использовать его (плюс, как бонус для меня, этот rdiff еще и имеет меньший размер, и не включает четырех внешних библиотек)
  2. На счет xdelta3.exe у меня пока нет понимания, в чем разница версии в OpenWG.WoT.Patcher и, например, доступных здесь: http://xdelta.org
    В любом, и в том, и в другом, и в третьем, и в четвертом случаях, - в интересующих меня сценариях применения утилит, результат их работы не отличается
  3. По всей видимости, для серьезных мододелов и исследователей OpenWG.WoT.Patcher является незаменимым инструментом, но таким мелким копошителям как я, рассматриваемый здесь точечный подход дает существенные преимущеста. Я, ради интереса, попробовал и то, и это, для своих целей, и для использования OpenWG.WoT.Patcher мне потребовалось создать несколько копий клиентов, многие десятки гигабайт места и десятки минут ковровой обработки, тогда как точечный подход дает весьма осязаемую экономию во всем таком, тем, для кого это имеет видимое значение. И еще один плюс - при точечном подходе не потребуется установки dotnet-runtime-5.0.0-win-x64, все что нужно - две утилиты, rdiff.exe (85.7kB) и xdelta3.exe (602.7kB)
Edited by beb
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...