Skip to content

Conversation

@SuperJMN
Copy link
Owner

@SuperJMN SuperJMN commented Dec 2, 2025

This PR replaces the DiscUtils-based DMG implementation with the new Dotnet.Dmg library for proper UDIF format support.

Changes

  • Replace DiscUtils/SharpCompress dependencies with Dotnet.Dmg.{Iso,Udif,MachO}
  • Rewrite DmgIsoBuilder using IsoBuilder with full Rock Ridge support
  • Add real UDIF/UDZO wrapping with UdifWriter (Zlib/Bzip2 compression)
  • Use Zafiro.DivineBytes for reactive, functional byte stream handling
  • Update DmgVerifier to parse UDIF Koly block metadata
  • Simplify tests to verify ISO9660 PVD signature (no DiscUtils parsing)
  • Add --compress CLI option for UDIF wrapping control

Benefits

Real DMG format: UDIF container instead of raw ISO
Full metadata: Rock Ridge for symlinks, permissions, timestamps
Better compression: Bzip2 (UDBZ) support for smaller files
Reactive API: ByteSource for composable, observable streams
Cross-platform: No external tools needed

Testing

✅ All 4 DMG tests passing
✅ Code compiles with no errors
✅ Compatible with existing CLI usage

- Replace DiscUtils/SharpCompress with Dotnet.Dmg.Iso, Dotnet.Dmg.Udif, Dotnet.Dmg.MachO
- Rewrite DmgIsoBuilder using IsoBuilder with Rock Ridge support
- Add real UDIF/UDZO support with UdifWriter (Zlib/Bzip2 compression)
- Use Zafiro.DivineBytes for reactive byte stream handling
- Update DmgVerifier to parse UDIF Koly block metadata
- Simplify tests to verify ISO9660 PVD signature instead of parsing with DiscUtils
- Add --compress option to dmg commands for UDIF wrapping

Benefits:
- Real DMG format (UDIF) instead of raw ISO
- Rock Ridge extensions for proper metadata (symlinks, permissions)
- Better compression with Bzip2 (UDBZ) support
- Reactive and functional API with ByteSource
- Cross-platform DMG creation without external tools
@SuperJMN SuperJMN merged commit ea0f764 into master Dec 2, 2025
1 check was pending
@SuperJMN SuperJMN deleted the feature/replace-dmg-with-dotnet-dmg branch December 2, 2025 22:50
SuperJMN added a commit that referenced this pull request Dec 3, 2025
…-dmg

Replace DotnetPackaging.Dmg with Dotnet.Dmg library
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants