Sparkle icon indicating copy to clipboard operation
Sparkle copied to clipboard

Preserve bundle creation date when creating and applying delta updates

Open zorgiepoo opened this issue 2 months ago • 6 comments

This will preserve the file creation date of the new app bundle, but not the file creation date of any of the files inside the new app bundle because tracking those changes is complex/undesirable. Other updater systems that use delta updates (like the App Store) also don't make guarantees about preserving that metadata for files inside the app bundle when applying delta updates.

This bumps the major binary delta version to 4 and will need documentation updates. generate_appcast has been updated to handle the major version. A new test has been added for testing that the new bundle creation date is also preserved.

Misc Checklist

  • [x] My change requires a documentation update on Sparkle's website repository
  • [x] My change requires changes to generate_appcast, generate_keys, or sign_update

Testing

I tested and verified my change by using one or multiple of these methods:

  • [x] Sparkle Test App
  • [x] Unit Tests
  • [ ] My own app
  • [x] Other (please specify)

I will run through:

  • [x] Test running Sparkle Test App with DELTA mode for creating/applying version 4 delta patch
  • [x] Test preservation of bundle creation date in unit tests
  • [ ] Test applying old version 3 delta patch
  • [ ] Test creating version 3 delta patch and then applying it
  • [ ] Test creating version 4 delta patch and then applying it
  • [ ] Test creating version 4 delta patch and failing to apply it from older BinaryDelta version
  • [ ] Test creating updates with generate_appcast and ensure it creates version 3 patches for old updates, and version 4 patches for new updates

macOS version tested: 14.5 (23F79)

zorgiepoo avatar Jun 15 '24 15:06 zorgiepoo