github craftablescience/VPKEdit v4.0.0.3
v4.0.0-beta.3

latest releases: v4.2.3, v4.2.2, v4.2.1...
8 months ago

VPKEdit 4.0 is coming soon! It brings with it a bunch of bug fixes and features. I want to delay the proper release to add more features and properly test everything that's changed, so in the meantime I'm making beta releases.

Warning

You may encounter bugs using this version that I haven't found yet. Hopefully it's more stable than the last release, but after changing so much code, it's possible there's a regression or two. If you encounter any, please make an issue here and I will patch it as soon as possible.

GUI Changes

  • Don't crash after viewing more than 512 items without closing the VPK
  • Center text in info previews
  • Use release name instead of release tag in the update dialog
  • Ignore prereleases in update checker
  • Bundle credits text into the application, so Help > About dialog still works if CREDITS.md isn't present
  • More to come...

Changes since the last beta:

  • Add a progress bar when saving VPK
  • Add a progress bar when creating a VPK from a folder
  • Update the status text at the bottom of the window more consistently
  • Add an option to create a single-file VPK (the default is now a chunked VPK)
  • Fix crash when Steam is installed but no Source games are found
    • Also, don't show the "Open In" menu if no Source games are found
  • When creating a VPK from a folder, append "_dir" to the default name if it is a chunked VPK

CLI Changes

  • Create CLI executable!
    • Add CLI executable to VPKEdit installer
    • -h. --help, or no arguments - print usage and program information
  • Convert directory to VPK (pack)
    • -v, --version - specify version
    • -c, --chunksize - specify chunk size
    • -s, --single-file - pack to single file
    • -o, --output - specify output VPK path
  • Again, more to come...

Changes since the last beta:

  • Don't add "_dir" to automatic output path if already present on the input folder
  • Remove terminal slash from input folder before creating automatic output path
  • Rename -m, --multichunk to -c, --chunksize to be more consistent with Valve's VPK tool
  • Add -p, --preload option that accepts a list of file extensions and/or filenames to preload in the directory VPK
  • Add --gen-md5-entries flag that enables generating per-file MD5 hashes to store in the directory VPK (now disabled by default)

General Changes

  • When creating a VPK from a directory, skip files with non-ASCII names (VPKs don't support those)
  • Don't keep the contents of unbaked entries in memory if added though a file path
    • If the file is moved/deleted before the VPK is baked, it will be empty in the VPK
    • This saves a massive amount of RAM when creating VPKs from folders
  • Fix trying to write to a wonky path when saving an archive to the same folder as the VPK
  • When using the Linux installer, symlinks for the GUI and CLI are now created in /usr/bin, which puts the programs on the PATH
    • This was documented in INSTALL.md by @Nbc66
  • Fix two bugs with using relative paths in different places

Changes since the last beta:

  • Added badges to README.md for license, build status, and associated Discord server
  • Fix the archive paths that will be copied when re-saving an existing VPK to a different folder

For Developers

Note

All changes to libvpkedit will be listed in the full release, since it is evolving quickly right now. In the meantime, here's an overview:

  • Add ability to control VPK chunk size
  • Remove VPKEntry::filenamePair member variable
  • Remove some redundant and not well documented VPK methods
  • Rename all usages of FileName to Filename
  • Move version header from GUI to libvpkedit
  • Split up project CMake for readability
  • Stop uploading artifacts produced by clang in GitHub Actions
  • Strip binaries of debug symbols in Linux installer creation process

Changes since the last beta:

  • Add a callback parameter to all functions that operate on all entries in a VPK (accepts the parent directory and a VPKEntry reference)
  • Add VPK::createFromDirectoryProcedural, which accepts a function that takes in the full entry path and returns if the entry should be saved in the directory VPK and the preload bytes amount
    • This function is then called for each file added to the VPK
  • Add VPK::getEntryCount to get the number of entries in the VPK
  • Add field VPKOptions::generateMD5Entries to control if per-file MD5 entries are generated
  • Fix edge case where it would write to an incorrect path if saving to the same place it was loaded from, when that path was manually specified in the VPK::bake parameters
  • Use a more reliable check for if a filesystem entry is a file or not

Don't miss a new VPKEdit release

NewReleases is sending notifications on new releases.