Investigate the index version 2 format and its MSZIP-compressed versionData #1
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jeff/winget-pkgs#1
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The source publishes only
source.msixwith a schema 1.x index (1.7) and plainYAML manifests. The current winget client also reads schema 2.0–2.1, served as
source2.msix, which is what Microsoft's own source uses.Version 2 replaces the per-manifest paths in the index with one file per
package at
packages/<PackageIdentifier>/<first 8 hex of hash>/versionData.mszyml.That file is YAML compressed with the Windows Compression API's MSZIP framing,
which has no ready-made equivalent on Linux, and so is out of scope for the
first version of the source.
To find out:
CKsignature, block size), and whether zlib's raw deflate plus that framing
reproduces a file the client accepts.
sV,vD,v,rP,s256H, …) and how theclient checks them against the index.
ever stops reading 1.x.
Code to read in microsoft/winget-cli:
src/AppInstallerCommonCore/PackageVersionDataManifest.cppsrc/AppInstallerRepositoryCore/Microsoft/SQLiteIndexSourceV2.cppsrc/AppInstallerRepositoryCore/Microsoft/PreIndexed/RemotePackage.cpp