Windows WPF frontend for Touhou 3rd-party Patch (.t3pp) packages.
Get the full version: Here
- Apply
.t3pppatches to a directory or single file with hash readout. - Generate
.t3pppatches from old/new directories or files using T3ppNativelite_lib. - View native log output to troubleshoot patching.
- Language toggle (Simplified Chinese default, English included).
- Windows, .NET 8 SDK (desktop workload) to build; .NET 8 Desktop Runtime to run.
- Visual Studio 2022 (optional) for WPF; C++ workload only if building the native helper.
- Native helper: prebuilt
T3ppNativelite_Debug_x64.dll/T3ppNativelite_Release_x64.dlllive inPatchGUIlite/or build them fromT3ppNativeLite/.
dotnet restore PatchGUIlite/PatchGUIlite.csproj
dotnet build PatchGUIlite/PatchGUIlite.csproj -c Debug
dotnet build PatchGUIlite/PatchGUIlite.csproj -c Releasemsbuild T3ppNativeLite/T3ppNativeLite.vcxproj /m /p:Configuration=Release /p:Platform=x64- Debug:
PatchGUIlite/bin/Debug/net8.0-windows7.0/PatchGUIlite.exe - Release:
PatchGUIlite/bin/Release/net8.0-windows7.0/PatchGUIlite.exe
Keep alongside the executable:
PatchGUIlite.dll,PatchGUIlite.deps.json,PatchGUIlite.runtimeconfig.jsonT3ppNativelite_Debug_x64.dll(Debug) orT3ppNativelite_Release_x64.dll(Release)lang/(zh_CN.json,en_US.json)
dotnet publish PatchGUIlite/PatchGUIlite.csproj -c Release -r win-x64 --self-contained true /p:PublishSingleFile=trueOutput: PatchGUIlite/bin/Release/net8.0-windows7.0/win-x64/publish/PatchGUIlite.exe
- Choose target mode (directory/file).
- Pick target.
- Pick
.t3ppfile. - Click Apply Patch; watch logs in the console area.
- Choose mode (
file/directory). - Pick Original and Modified sources.
- (Optional) keep
Pack directoryenabled to bundle outputs. - Click Generate Patch to produce a
.t3pp.
Language files live in PatchGUIlite/lang/*.json. Add a new JSON and wire it into the selector in MainWindow.xaml / code-behind.
- Advantages over raw xdelta: bundles multiple files, embeds hashes/sizes, supports encrypted payloads, and can fall back to full-file data when delta is unsafe or unnecessary.
