Skip to content

Repository files navigation

QuickExtractSpineAssets

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.

Download

  • 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

Features

  • Spine asset extract — Exports .png, .skel, and .atlas assets found in Unity .bundle containers
  • Multi-file — Accepts one or more bundle paths on the command line
  • Right-click menu — Installer can register Quick Extract on .bundle files (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.txt for the whole run (next to a target file when possible)
  • Silent UI — Release builds run without a console window

Usage

Installer (recommended)

  1. Download QuickExtractSpineAssets-Setup-x64.exe from Releases.
  2. Run the setup (per-user install under %LOCALAPPDATA%\QuickExtractSpineAssets — no admin required).
  3. Keep the Add "Quick Extract" to the right-click menu for .bundle files task enabled.
  4. Right-click any .bundle file → 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 .bundle handler — double-click behavior is unchanged.

Extracted files are written beside the selected .bundle.

Portable

  1. Download QuickExtractSpineAssets-Windows-x64-portable.zip.
  2. Extract anywhere and run:
QuickExtractSpineAssets.exe path\to\file.bundle

Multiple files:

QuickExtractSpineAssets.exe a.bundle b.bundle c.bundle

From source

Requires Python 3.12+ and uv (recommended):

uv sync
uv run python main.py path\to\file.bundle

Or with pip:

pip install "unitypy>=1.25.0"
python main.py path\to\file.bundle

Errors & notifications

When extraction fails for a file:

  1. A Windows error dialog lists the failed file(s).
  2. One detailed log for the whole run is written as QuickExtractSpineAssets.error.txt next 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).

Nilesoft Shell (advanced, optional)

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.ps1

Use -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)')

Build (CI / local packaging)

Release packaging follows the same pattern as AtlasToolkit:

  1. PyInstaller onedir build (dist/QuickExtractSpineAssets)
  2. Inno Setup installer (QuickExtractSpineAssets.iss)
  3. 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_version like 0.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).

Project layout

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

Acknowledgments

Contributing

License

This project is licensed under the MIT License — see the LICENSE file for details.

Disclaimer

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.

About

Extract Spine .png / .skel / .atlas assets from Unity .bundle files.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages