Patching Files: Difference between revisions

From wowdev
Jump to navigation Jump to search
mNo edit summary
(Replacing page with 'For updating files WoW uses bsdiff. Have a look at "http://www.daemonology.net/bsdiff/" or "http://www.pokorra.de/coding/bsdiff.html"')
Line 1: Line 1:
For updating files WoW uses bsdiff.
For updating files WoW uses bsdiff.
Have a look at "http://www.daemonology.net/bsdiff/" or "http://www.pokorra.de/coding/bsdiff.html"
Have a look at "http://www.daemonology.net/bsdiff/" or "http://www.pokorra.de/coding/bsdiff.html"
--------------
I had try bsdiff, but it doesn't work.
  1. extract achievement.dbc from enUS\DBFilesClient in Patches\WoW-3.1.3-to-3.2.0-enUS-Win-patch\wow-partial-1.MPQ
  2. rename it to achievement.dbc.patch (45K)
  3. extract achievement.dbc from DBFilesClient in Data\enUS\patch-enUS-2.MPQ
  4. rename it to achievement.dbc.old
  5. bsdiff
    usage: bspatch.exe oldfile newfile patchfile
  6. bsdiff chievement.dbc.old achievement.dbc achievement.dbc.patch
    Corrupt patch
  7. extract achievement.dbc from DBFilesClient in PTR:Data\enUS\patch-enUS-2.MPQ
  8. rename it to achievement.dbc.ptr
  9. bsdiff achievement.dbc.old achievement.dbc.ptr achievement.dbc.patch-ptr (20K)
althought it shows "BSDIFF40" in it's header, but it is not a bsdiff?
-- chuanhsing
----------------
I got some information about files in pre-download mpq. All files
inside it are "patch" files.
Followings are for new file patch header:
  0x0000 2 bytes: Size of the patch header (I've only seen 0x18)
  0x0002 2 bytes: Flags
                  * 0x0004 seems always set
                  * 0x0100 unknown, set when new file patch
                  * 0x0400 means BSDIFF40 patch
  0x0004 4 bytes: Looks like CRC
  0x0008 4 bytes: unknown
  0x000C 4 bytes: file size (only if Flags = 0x0100)
  0x0010 8 bytes: timestamp as FILETIME
  ---- body ----
  0x0018 n bytes: the real thing
Followings are for BSDIFF40 patch header:
  0x0000 2 bytes: Size of the patch header (I've only seen 0x18)
  0x0002 2 bytes: Flags
                  * 0x0004 seems always set
                  * 0x0100 unknown
                  * 0x0400 means BSDIFF40 patch
  0x0004 4 bytes: Looks like CRC
  0x0008 4 bytes: unknown
  0x000C 4 bytes:
  0x0010 8 bytes: timestamp
  ---- body ----
  0x0018 4 bytes: file size
  0x001C 1 byte: unknown
  0x001D 8 bytes: signature, "BSDIFF40"
  0x0025 n bytes: unknown
For the new files, I can skip heading 24 bytes and get the real
thing! But I still can't understand the things after BSDIFF40.
-- chuanhsing

Revision as of 11:58, 27 November 2009

For updating files WoW uses bsdiff. Have a look at "http://www.daemonology.net/bsdiff/" or "http://www.pokorra.de/coding/bsdiff.html"