From 841bc7733032e819f62a791e93c3fede415b2aeb Mon Sep 17 00:00:00 2001 From: LemonNexus Date: Wed, 11 Feb 2026 19:57:22 +0000 Subject: [PATCH] feat: add PyInstaller support for executable builds --- .github/workflows/build.yml | 46 +++++++++++++++++++++++++++++++++++++ README-EU-Icon-Extractor.md | 28 +++++++++++++++++++++- icon_extractor.spec | 44 +++++++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml create mode 100644 icon_extractor.spec diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..4df1c9e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,46 @@ +name: Build Windows Executable + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pyinstaller + pip install -r requirements.txt + + - name: Build executable + run: | + pyinstaller icon_extractor.spec --clean + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: EU-Icon-Extractor-Windows + path: dist/EU-Icon-Extractor.exe + + - name: Create Release + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + uses: softprops/action-gh-release@v1 + with: + files: dist/EU-Icon-Extractor.exe + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README-EU-Icon-Extractor.md b/README-EU-Icon-Extractor.md index be34a35..2e3d9a2 100644 --- a/README-EU-Icon-Extractor.md +++ b/README-EU-Icon-Extractor.md @@ -4,6 +4,12 @@ A standalone tool for extracting item icons from Entropia Universe game cache. EU Icon Extractor +## Download + +**[Download Latest Release](https://github.com/ImpulsiveFPS/EU-Icon-Extractor/releases/latest)** + +Download `EU-Icon-Extractor.exe` and run it - no installation needed! + ## Description Extract item icons from Entropia Universe cache and convert them to PNG format. @@ -12,11 +18,16 @@ Extract item icons from Entropia Universe cache and convert them to PNG format. ## Usage +### Option 1: Download Executable (Recommended) +1. Download `EU-Icon-Extractor.exe` from [Releases](https://github.com/ImpulsiveFPS/EU-Icon-Extractor/releases/latest) +2. Double-click to run - no installation needed! + +### Option 2: Run from Source ```bash python icon_extractor.py ``` -### Requirements +#### Requirements - Python 3.11+ - PyQt6: `pip install PyQt6` - Pillow: `pip install Pillow` @@ -51,6 +62,21 @@ Documents\Entropia Universe\Icons\ Entropia Universe Icon Extractor is a fan-made resource and is not affiliated with [MindArk PE AB](https://www.mindark.com/). [Entropia Universe](https://www.entropiauniverse.com/) is a trademark of MindArk PE AB. +## Building from Source + +If you want to build the executable yourself: + +```bash +# Install dependencies +pip install pyinstaller +pip install -r requirements.txt + +# Build executable +pyinstaller icon_extractor.spec --clean +``` + +The executable will be in `dist/EU-Icon-Extractor.exe` + ## License MIT License - Feel free to use and modify! diff --git a/icon_extractor.spec b/icon_extractor.spec new file mode 100644 index 0000000..e140abf --- /dev/null +++ b/icon_extractor.spec @@ -0,0 +1,44 @@ +# PyInstaller spec file for EU Icon Extractor +# Usage: pyinstaller icon_extractor.spec + +block_cipher = None + +a = Analysis( + ['icon_extractor.py'], + pathex=[], + binaries=[], + datas=[('icon.ico', '.'), ('assets/icon.ico', 'assets')], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False, +) + +pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='EU-Icon-Extractor', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=False, # No console window + disable_windowed_traceback=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon='icon.ico', # App icon +)