TACTSharp 0.0.9-alpha
dotnet add package TACTSharp --version 0.0.9-alpha
NuGet\Install-Package TACTSharp -Version 0.0.9-alpha
<PackageReference Include="TACTSharp" Version="0.0.9-alpha" />
paket add TACTSharp --version 0.0.9-alpha
#r "nuget: TACTSharp, 0.0.9-alpha"
// Install TACTSharp as a Cake Addin #addin nuget:?package=TACTSharp&version=0.0.9-alpha&prerelease // Install TACTSharp as a Cake Tool #tool nuget:?package=TACTSharp&version=0.0.9-alpha&prerelease
TACTSharp
Library utilizing memory-mapped file access to speed up initial loading and have lower RAM usage compared to other libraries that load WoW's CASC storage. Made so Marlamin can extract things on their NAS without it getting resource starved.
Largely based on @bloerwald's memory-mapped file reading implementations.
Current features
- Faster build loading time and lower memory footprint compared to other solutions.
- Loads both online and local World of Warcraft installations.
- Loading of game files by ekey, ckey, ID or by name in install manifest.
TODO for 1.0
- Stabilize and lock-in API usage.
- Support for encrypted products.
- Support for specifying install tag priority (so e.g. the exe for WoW China can be extracted).
- Listfile support (optionally loaded the first time a filename isn't found?).
- Ability to use a folder with CDN-structured files as a data source (similar to local WoW installs).
- Test run on all available WoW CDN data to data starting at 6.0.
Not planned
This may change in the future, but this is currently NOT planned to be part of 1.0.
- Support for other games than WoW.
- GUI tool.
TACTTool
CLI tool using the library for simple file extraction.
Usage
Description:
TACTTool - Extraction tool using the TACTSharp library
Usage:
TACTTool [options]
Options:
-b, --buildconfig <buildconfig> Build config to load (hex or file on disk)
-c, --cdnconfig <cdnconfig> CDN config to load (hex or file on disk)
-p, --product <product> TACT product to load [default: wow]
-r, --region <region> Region to use for patch service/build selection/CDNs [default: us]
-l, --locale <locale> Locale to use for file retrieval [default: enUS]
-m, --mode <mode> Input mode: list, ekey (or ehash), ckey (or chash), id (or fdid), name (or filename)
-i, --inputvalue <inputvalue> Input value for extraction
-o, --output <output> Output path for extracted files, folder for list mode (defaults to 'extract' folder), output filename for other input modes (defaults
to input value as filename)
-d, --basedir <basedir> WoW installation folder to use as source for build info and read-only file cache (if available)
--version Show version information
-?, -h, --help Show help and usage information
Examples
FileDataID
You can use either fdid
or id
modes to extract specific FileDataIDs from the client.
TACTTool -m fdid -i 53188
extracts FileDataID 53188 from Retail WoW to./53188
TACTTool -m fdid -i 53188 -o "warrior terrace.mp3"
extracts FileDataID 53188 from Retail WoW to./warrior terrace.mp3
Filename
You can use either name
, filename
or install
modes to extract files from the install
manifest based on filename.
TACTTool -m name -i Wow.exe
extracts Wow.exe from Retail WoW./Wow.exe
TACTTool -p wowt -m name -i WowT.exe
extracts WowT.exe from WoW PTR to./WowT.exe
EKey/CKey
You can use either ekey
or ehash
to extract files by their EKey or you can use ckey
or chash
to extract files by their CKey.
TACTTool -m ckey -i 7fa7faa0fdece01a838af3c4005f7f69
extracts CKey7fa7faa0fdece01a838af3c4005f7f69
to./7fa7faa0fdece01a838af3c4005f7f69
TACTTool -m ckey -i 7fa7faa0fdece01a838af3c4005f7f69 -o BattlePetAbilityEffect.db2
extracts CKey7fa7faa0fdece01a838af3c4005f7f69
to./BattlePetAbilityEffect.db2
List
TACTTool -m list -i pathtolist.txt
will readpathtolist.txt
and extract files to theextract
folder in the current working directory.TACTTool -m list -i pathtolist.txt -o D:/myoutput
will readpathtolist.txt
and extract files to theD:/myoutput
folder.
Put files to extract in a plain text file in the below format. Similar modes as above are supported. Not giving a mode or FDID assumes it is using the filename
mode. An additional part can be used to set the output filename.
These are all valid lines:
install;WoW.exe
install;Wow.exe;Wow-but-I-wanted-to-rename-it.exe
WoW.exe
Wow.exe;Wow-maybe-this-name-is-better.exe
ckey;7fa7faa0fdece01a838af3c4005f7f69
ckey;7fa7faa0fdece01a838af3c4005f7f69;BattlePetAbilityEffect.db2
ekey;00b797ea435427185f33466495855656
ekey;00b797ea435427185f33466495855656;SomeFile.bytes
801575;DBFilesClient/BattlePetAbilityEffect.db2
801575;BattlePetAbilityEffect.db2
Support
Only tested on WoW, other products not supported.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.0.9-alpha | 10 | 1/29/2025 |
0.0.8-alpha | 11 | 1/29/2025 |