Opened 12 years ago

Last modified 10 years ago

#1110 new task

Archive builder support for non-base mods

Reported by: Philip Taylor Owned by:
Priority: Should Have Milestone: Backlog
Component: Core engine Keywords:
Cc: ricotz Patch:

Description (last modified by leper)

Currently the archive builder assumes that you're archiving a single self-contained mod. If you're not (e.g. you're building an update.zip as a way of patching public.zip, or you're archiving a user-made mod that builds on top of public), that fails in various ways:

  • The *.DELETED meta-files are not archived, so update.zip won't have the desired file-removal behaviour.
  • If the public mod has e.g. foo.png (stored as foo.png.cached.dds in public.zip), and the update mod has foo.png.DELETED (stored as foo.png.DELETED in update.zip if we fix the previous point), then loading both archives will result in the file foo.png.cached.dds still being visible. The archive builder needs to copy foo.png.DELETED to foo.png.cached.dds.DELETED to preserve the file-removal semantics.
  • If public has a textures.xml that controls the texture compression behaviour of textures in a subdirectory (compression algorithm, alpha channel usage, etc), that won't be taken into account when compressing the textures for update.zip. We need to use CArchiveBuilder::AddBaseMod (and add some command-line arguments for it) so that it loads public to provide the files like textures.xml that the update archive implicitly depends on. Use -mod=modfolder to specify base mods (also do that for public if you depend on it)

Also, there should be automated tests for this, since the logic is getting quite complex.

Change History (4)

comment:1 by philip, 12 years ago

(In [10907]) Include *.DELETED files when building archives. See #1110.

comment:2 by Kieran P, 12 years ago

Milestone: Alpha 9Backlog

comment:3 by fabio, 10 years ago

Description: modified (diff)

comment:4 by leper, 10 years ago

Description: modified (diff)

r15372 took care of the third bullet point.

Note: See TracTickets for help on using tickets.