Skip to content

Releases

7.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 17:08
Immutable release. Only release title and notes can be modified.
  • Entry paths are normalized like the engine does it: \ is a separator, ASCII letters are lowercased, and ./.. are resolved. Invalid names are rejected.
  • Package.Open, OpenEntryStream (read nested VPKs in place) and Verify (all checks in one call, with progress and cancellation).
  • RemoveDirectory and RenameDirectory.
  • Write back over the read file, including a _dir.vpk, or repack into new chunk files with Write(path, repack: true).
  • Path helpers (TryParseEntryPath, NormalizeDirectoryPath, PathComparer) and chunk file helpers (GetChunkFilePath, TryParseChunkFilePath, OpenArchiveStream).
  • Writing refuses to overwrite the package's own chunk files.
  • FindEntry no longer allocates, the library no longer uses LINQ, and writing and verifying allocate less.

7.1.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 08:36
Immutable release. Only release title and notes can be modified.
  • Edit packages that were read, including ones with chunk files, and write them back over the original files. Either every file is replaced or none is.
  • Add Write(path, repack: true), which rewrites chunk files without the data of removed files.
  • Add RenameFile and IsSigned, and add progress reporting to VerifyHashes.
  • Lowercase and normalize added paths, and normalize paths in FindEntry.
  • Change the default chunk size to 100 MiB.
  • Throw after Dispose and on malformed packages.

7.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 09:28
Immutable release. Only release title and notes can be modified.
  • Breaking: call SetFileName("pak01_dir.vpk") before AddFile(..., multiChunk: true). Multi-chunk files are now written to disk when added, so packages of any size can be created, and Write must go to that same path.
  • Breaking: a package can only be read once.
  • Breaking: streams from GetMemoryMappedStreamIfPossible only work while the package is open.
  • Added AddFile(string, Stream, bool).
  • Write(Stream) works with non-seekable streams and multi-chunk packages.
  • Reading entries is thread-safe and much faster.
  • Packages can be read and written at non-zero stream positions.
  • Malformed packages throw InvalidDataException or EndOfStreamException instead of returning bad data.

6.0.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 08:05
Immutable release. Only release title and notes can be modified.
  • Breaking: namespace changed to ValvePak.
  • Added support for writing split packages: AddFile(..., multiChunk: true) writes files into numbered chunk files next to the directory file. Chunk size is controlled by WriteChunkSize (200 MiB default).
  • Write(Stream) now throws for packages containing multi-chunk files; use Write(string) instead.
  • Write now throws if the directory file would exceed 2 GiB or a chunk file would exceed 4 GiB.

5.0.2

Choose a tag to compare

@github-actions github-actions released this 08 Aug 17:48
Immutable release. Only release title and notes can be modified.
  • Now targets .NET 10.
  • Version is now settable to allow writing v1 vpks.
  • Added support for the new VPK signature format (as used by CS2): new ESignatureType enum and Package.SignatureType property, with verification via RSA.VerifyData.
  • Updated Blake3, which is now a fully managed implementation.
  • Hardened VPK write hashing to use Stream.ReadExactly.

4.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Nov 12:51
Immutable release. Only release title and notes can be modified.
  • Renamed ArchiveMD5Entries to AccessPackFileHashes
  • Added support for Blake3 chunk hashes
  • Added an overload FindEntry(ReadOnlySpan<char> filePath)
    • Unlike the FindEntry(string) version, this one does not normalize the directory path separator.

3.0.3

Choose a tag to compare

@github-actions github-actions released this 22 Sep 21:48
Immutable release. Only release title and notes can be modified.
  • Enabled IsAotCompatible and Nullable

2.0.1

Choose a tag to compare

@xPaw xPaw released this 09 May 09:59

Full Changelog: 2.0.0...2.0.1

  • Do not require _dir suffix in chunked vpks
  • Removed System.Security.Cryptography.Algorithms
  • Added ContinuousIntegrationBuild

2.0.0

Choose a tag to compare

@github-actions github-actions released this 22 Mar 11:14
2.0.0

Full Changelog: 1.8.0...2.0.0

  • .NET 8.0 is now required
  • Removed FindEntry overloads
  • Reduced allocations in FindEntry
  • Updated logo

1.8.0

Choose a tag to compare

@github-actions github-actions released this 13 Feb 18:37
1.8.0

Full Changelog: 1.7.0...1.8.0

  • GetMemoryMappedStreamIfPossible will read files smaller or equal to 4096 bytes into memory instead of memory mapping.
  • GetMemoryMappedStreamIfPossible now supports memory mapping files in non-split packages if the package was read from a FileStream or when using Read(file path).
  • CRC32 is now calculated with System.IO.Hashing