Extract Spine assets (.png, .skel, .atlas) from Unity .bundle files.
A lightweight Windows tool that reads Unity asset bundles and exports Spine-related textures and text assets next to the source file. Built with UnityPy.
- Get the installer or portable zip from Releases.
- Or clone and run from source (development / unstable):
git clone https://github.com/com55/QuickExtractSpineAssets.git
cd QuickExtractSpineAssets- Spine asset extract — Exports
.png,.skel, and.atlasassets found in Unity.bundlecontainers - Multi-file — Accepts one or more bundle paths on the command line
- Right-click menu — Installer can register Quick Extract on
.bundlefiles (classic menu / Windows 11 "Show more options") plus an Open with → QuickExtractSpineAssets entry that shows at the top level of the Windows 11 menu; one process per selected file - Resilient load — Truncation fallback when a bundle is slightly corrupted
- Error feedback — On failure, shows a Windows error dialog and writes one
QuickExtractSpineAssets.error.txtfor the whole run (next to a target file when possible) - Silent UI — Release builds run without a console window
- Download
QuickExtractSpineAssets-Setup-x64.exefrom Releases. - Run the setup (per-user install under
%LOCALAPPDATA%\QuickExtractSpineAssets— no admin required). - Keep the Add "Quick Extract" to the right-click menu for .bundle files task enabled.
- Right-click any
.bundlefile → Quick Extract (on Windows 11 it lives under Show more options; the short menu instead offers Open with → QuickExtractSpineAssets).- Tip: Shift + right-click opens the classic menu directly.
- The app is never set as the default
.bundlehandler — double-click behavior is unchanged.
Extracted files are written beside the selected .bundle.
- Download
QuickExtractSpineAssets-Windows-x64-portable.zip. - Extract anywhere and run:
QuickExtractSpineAssets.exe path\to\file.bundle
Multiple files:
QuickExtractSpineAssets.exe a.bundle b.bundle c.bundle
Requires Python 3.12+ and uv (recommended):
uv sync
uv run python main.py path\to\file.bundleOr with pip:
pip install "unitypy>=1.25.0"
python main.py path\to\file.bundleWhen extraction fails for a file:
- A Windows error dialog lists the failed file(s).
- One detailed log for the whole run is written as
QuickExtractSpineAssets.error.txtnext to a target file when that folder exists; otherwise only the dialog is shown.
When the run completes without error but no .png / .skel / .atlas assets were found, an information dialog lists the checked file(s).
If you use Nilesoft Shell to replace the Windows context menu, the registry entries above do not apply — add a native item instead. Skip this section if you don't already use Nilesoft Shell.
Automatic (writes imports\quick-extract.nss and registers it in shell.nss; re-run to update):
powershell -ExecutionPolicy Bypass -File scripts\add_nilesoft_menu.ps1Use -Mode installed (installed app) or -Mode source (this repo's .venv) to override auto-detection, and -ShellDir if Nilesoft is not in %ProgramFiles%\Nilesoft Shell. If the Nilesoft folder is not writable, run from an elevated PowerShell. Uninstalling the app does not remove this menu item — delete imports\quick-extract.nss and its import line from shell.nss, or re-run the script in -Mode source.
Manual — add one of these to your shell.nss, then reload (Ctrl + right-click the taskbar or desktop, or restart Explorer):
// Installed app (adjust the path if you did not use the default per-user install)
item(title='Quick Extract'
image=\uE16A
type='file'
find='.bundle'
mode='multi_single'
cmd='C:\Users\<you>\AppData\Local\QuickExtractSpineAssets\QuickExtractSpineAssets.exe'
args='@sel(true)')
// Run from source (adjust <repo> to your clone; needs `uv sync` first)
item(title='Quick Extract'
image=\uE16A
type='file'
find='.bundle'
mode='multi_single'
cmd='<repo>\.venv\Scripts\pythonw.exe'
args='"<repo>\main.py" @sel(true)')
Release packaging follows the same pattern as AtlasToolkit:
- PyInstaller onedir build (
dist/QuickExtractSpineAssets) - Inno Setup installer (
QuickExtractSpineAssets.iss) - Portable zip of the standalone folder
GitHub Actions workflows:
| Workflow | Trigger | Purpose |
|---|---|---|
auto_tag.yml |
Push to main that changes pyproject.toml |
Creates vX.Y.Z from the project version |
build_release.yml |
Tag v*, workflow call, or manual dispatch |
Builds PyInstaller + Inno Setup + uploads release assets |
Manual test build (Actions → Build and Release → Run workflow):
- Optional
test_versionlike0.1.1(digits only) - Uploads installer + portable zip as artifacts (no GitHub Release unless tagged)
Local Inno compile (after a PyInstaller build into dist/QuickExtractSpineAssets):
ISCC.exe /DMyAppVersion=0.1.0 QuickExtractSpineAssets.iss
Output: installer/QuickExtractSpineAssets-Setup-x64.exe
Optional code signing in CI uses repository secrets CERT_BASE64 and CERT_PASSWORD (same approach as AtlasToolkit).
main.py # CLI entry
icon.ico # App icons
QuickExtractSpineAssets.iss # Inno Setup script
scripts/add_nilesoft_menu.ps1 # Optional Nilesoft Shell menu helper
.github/workflows/ # Build & auto-tag
pyproject.toml # Version + dependencies
- UnityPy — Unity asset reading / export
- PyInstaller — Python to standalone Windows build
- Inno Setup — Windows installer
- Build/release pattern adapted from AtlasToolkit
- Bug reports and ideas: open an issue
- Pull requests are welcome
This project is licensed under the MIT License — see the LICENSE file for details.
This project is not affiliated with, endorsed by, or associated with Unity Technologies, Esoteric Software (Spine), or any game publisher. It is intended for educational and personal use only. Respect the terms of service and copyright of any game or asset you work with.