A CLI/GUI tool to create, read, and write several pack file formats.
MIT License
[!TIP]
Read the install guide for assistance installing VPKEdit.
[!WARNING]
As of v4.2.2, VPKEdit relies on a more recent version of the Visual C++ Redistributables. If you experience a crash when VPKEdit worked before the update, the installer is located here: https://aka.ms/vs/17/release/vc_redist.x64.exe
_test.pak
to the save filename (oops)Open In...
menu at startup (prevents scanning user's Steam library)Open In...
menu in a separate thread to improve startup performance!
in KeyValues previewQString::toStdString
-e
, --extract
parameter to extract files from pack file--add-file
parameter to add a file at the given path in the pack file--remove-file
parameter to remove a file at the given path in the pack filelibvpkedit
library has been migrated to the sourcepp repository, and it has been renamed to vpkpp
. This repository is now solely for the VPKEdit executables, and any submodules of it should be changed to point to the sourcepp
repository.SAPP
, SpeedyKeyV
GUI dependencies in favor of sourcepp
librariesPublished by craftablescience 5 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
Published by craftablescience 5 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
sourcemods
folder to "Open In" menu--verify-checksums
- Verifies VPK checksums. Takes one argument, either files
, vpk
, or all
--verify-signature
- Verifies the VPK signature if present--file-tree
- Prints the VPK file tree to console.grp
and .pak
on Windowslibxcb-cursor0
as an explicit dependencyzstd
compression over gzip
compressionPackFile::verifyEntryChecksums
and PackFile::verifyFileChecksum
have been joined by 4 other functions. One is for signatures, and the other 3 return whether the file has that type of checksum or a signaturePublished by craftablescience 6 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
.pcf
).qci
, .qcx
to the text preview's supported formats<name>.privatekey.vdf
KeyValues file-k
/ --sign
parameter which accepts a path to the private key KeyValues file. The keys held within will be used to sign the output VPK--gen-keypair
command. <path>
will be interpreted as the name of the files, prepended to .[public/private]key.vdf
<path>
is an existing VPK and -k
/ --sign
is present, the existing VPK will be signed using the keys in the private key file--no-progress
Published by craftablescience 7 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
Wrapper
prefix from files and types in the C wrapper librarylibvpkedit
and libvpkeditc
with an extra lib
on LinuxPublished by craftablescience 8 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
Published by craftablescience 8 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
Published by craftablescience 8 months ago
[!TIP]
Read the install guide for assistance installing VPKEdit.
.wav
files only for now, was very buggy with .mp3
files).bns
file type to KeyValues preview--allow-caps
, as case sensitivity is now directly controlled by the pack file and is no longer configurablelibvpkeditc
PackFile
subclass in the example
folderPublished by craftablescience 9 months ago
Published by craftablescience 9 months ago
Delete
(and Shift+Delete
) remove entries from entry tree or folder previewHelp > About
dialog still works if CREDITS.md isn't present^99+$
)-h
. --help
, or no arguments - print usage and program information-v
, --version
- specify version-c
, --chunksize
- specify chunk size-p
, --preload
- accepts a list of file extensions and/or filenames to preload in the directory VPK-s
, --single-file
- pack to single file-o
, --output
- specify output VPK path--gen-md5-entries
- enables generating per-file MD5 hashes to store in the directory VPK--allow-caps
- stops automatically lowercasing filenames (filenames are now lowercased when packing by default)
/usr/bin
, which puts the programs on the PATH
apt
PackFile::open
on the pack file, rather than the filetype-specific open
method (unless you're using a nonstandard file extension)PackFile::bake
parametersPublished by craftablescience 9 months ago
VPKEdit 4.0 is almost done! Assuming no bugs are found with this version, this will become the 4.0.0 full release. All known bugs will be fixed in the full release.
[!WARNING]
You may encounter bugs using this version that I haven't found yet. If you encounter any, please make an issue here so the fix will go in the full release!
Known bugs (fixed in the full release):
_XXX.vpk
next to them) don't copy their chunk files when saved to a different folderHelp > About
dialog still works if CREDITS.md isn't presentDelete
(and Shift+Delete
) remove entries from entry tree or folder preview-h
. --help
, or no arguments - print usage and program information-v
, --version
- specify version-c
, --chunksize
- specify chunk size-p
, --preload
- accepts a list of file extensions and/or filenames to preload in the directory VPK-s
, --single-file
- pack to single file-o
, --output
- specify output VPK path--gen-md5-entries
- enables generating per-file MD5 hashes to store in the directory VPK--allow-caps
- stops automatically lowercasing filenames (filenames are now lowercased when packing by default)/usr/bin
, which puts the programs on the PATH
^99+$
)[!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:
VPKEntry::filenamePair
member variableVPK::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
VPK::getEntryCount
to get the number of entries in the VPKVPKOptions::generateMD5Entries
to control if per-file MD5 entries are generatedVPK::bake
parametersVPKOptions::allowUppercaseLettersInFilenames
, which enables case sensitivity in all VPK operations (false
by default)Published by craftablescience 9 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.
Help > About
dialog still works if CREDITS.md isn't present-h
. --help
, or no arguments - print usage and program information-v
, --version
- specify version-c
, --chunksize
- specify chunk size-p
, --preload
- accepts a list of file extensions and/or filenames to preload in the directory VPK-s
, --single-file
- pack to single file-o
, --output
- specify output VPK path--gen-md5-entries
- enables generating per-file MD5 hashes to store in the directory VPK--allow-caps
flag that stops automatically lowercasing filenames (filenames are now lowercased when packing by default)/usr/bin
, which puts the programs on the PATH
[!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:
VPKEntry::filenamePair
member variableVPK::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
VPK::getEntryCount
to get the number of entries in the VPKVPKOptions::generateMD5Entries
to control if per-file MD5 entries are generatedVPK::bake
parametersVPKOptions::allowUppercaseLettersInFilenames
, which enables case sensitivity in all VPK operations (false
by default)Published by craftablescience 10 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.
Help > About
dialog still works if CREDITS.md isn't present-h
. --help
, or no arguments - print usage and program information-v
, --version
- specify version-c
, --chunksize
- specify chunk size-s
, --single-file
- pack to single file-o
, --output
- specify output VPK path-m
, --multichunk
to -c
, --chunksize
to be more consistent with Valve's VPK tool-p
, --preload
option that accepts a list of file extensions and/or filenames to preload in the directory VPK--gen-md5-entries
flag that enables generating per-file MD5 hashes to store in the directory VPK (now disabled by default)/usr/bin
, which puts the programs on the PATH
[!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:
VPKEntry::filenamePair
member variableVPK::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
VPK::getEntryCount
to get the number of entries in the VPKVPKOptions::generateMD5Entries
to control if per-file MD5 entries are generatedVPK::bake
parametersPublished by craftablescience 10 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.
Help > About
dialog still works if CREDITS.md isn't present-h
. --help
, or no arguments - print usage and program information-m
, --multichunk
- specify chunk size-v
, --version
- specify version-s
, --single-file
- pack to single file-o
, --output
- specify output VPK path/usr/bin
, which puts the programs on the PATH
[!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:
VPKEntry::filenamePair
member variablePublished by craftablescience 10 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 here's a beta release.
[!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.
-h
. --help
, or no arguments - print usage and program information-m
, --multichunk
- specify chunk size-v
, --version
- specify version-s
, --single-file
- pack to single file-o
, --output
- specify output VPK path[!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:
VPKEntry::filenamePair
member variablePublished by craftablescience 10 months ago
Alt + Left
/ Alt + Right
, or Mouse4
/ Mouse5
): go back/forward in the navigation historyAlt + Up
, Backspace
): go up a folder or stop previewing a fileHome
): go to the root folder of the VPK1
, 2
, 3
, 4
per shading mode respectively)Published by craftablescience 10 months ago
Published by craftablescience 11 months ago
Ctrl+Shift+N
Published by craftablescience 11 months ago
Published by craftablescience 11 months ago
VPK::createEmpty
and VPK::createFromDirectory
no longer have a cs2
boolean parameter