@@ -117,66 +117,106 @@ python test_data/download_osl_hf.py \
117117 --output-dir Test_Data/Localization
118118```
119119---
120+ ## 🧰 Build a standalone app (PyInstaller)
120121
122+ This project can be packaged into a standalone desktop app using ** PyInstaller** .
123+ The commands below assume you run them ** from the repository root** .
124+
125+ > ** Note:** The app bundles runtime assets from ` style/ ` , ` ui/ ` , and ` controllers/ ` .
126+ > This matches the GitHub Actions build configuration.
127+
128+ ---
121129
122- ## 🧰 Build a standalone app (PyInstaller)
123130### ** macOS (.app)**
124131
125- From the repository root:
126132``` bash
127133cd annotation_tool
128- pyinstaller --noconfirm --clean --windowed \
134+
135+ python -m PyInstaller --noconfirm --clean --windowed \
129136 --name " SoccerNetProAnalyzer" \
130137 --add-data " style:style" \
131138 --add-data " ui:ui" \
132- --add-data " ui2:ui2 " \
139+ --add-data " controllers:controllers " \
133140 main.py
134141```
135142
136- ### ** Windows / Linux ** (one-file binary)
143+ Output:
137144
138- From the repository root:
145+ * ` annotation_tool/dist/SoccerNetProAnalyzer.app `
146+
147+ ---
148+
149+ ### ** Windows / Linux (one-file binary)**
150+
151+ #### Linux
139152
140153``` bash
141- cd Tool
142- pyinstaller --noconfirm --clean --windowed --onefile \
154+ cd annotation_tool
155+
156+ python -m PyInstaller --noconfirm --clean --windowed --onefile \
143157 --name " SoccerNetProAnalyzer" \
144158 --add-data " style:style" \
145159 --add-data " ui:ui" \
146- --add-data " ui2:ui2 " \
160+ --add-data " controllers:controllers " \
147161 main.py
148162```
149163
150- In GitHub Actions, the Windows ``` bash--add-data ``` separator is ``` ; ``` instead of ``` : ``` .
164+ Output:
151165
166+ * ` annotation_tool/dist/SoccerNetProAnalyzer `
152167
153- ### 🤖 How executables are built (CI / GitHub Releases)
154168
155- In addition to manual PyInstaller builds, standalone executables are automatically built and published using GitHub Actions.
169+ #### Windows (PowerShell)
156170
157- When a version tag (v* or V* such as V1.0.7) is pushed to the repository, a release workflow is triggered (` .github/workflows/release.yml ` ).
158- This workflow:
171+ On Windows, the ` --add-data ` separator is ** ` ; ` ** (not ` : ` ).
159172
160- - Builds standalone GUI executables using PyInstaller
161- - Targets Windows, macOS, and Linux separately
162- - Bundles required UI assets (` ui/ ` , ` ui2/ ` , ` style/ ` ) into the binary
163- - Packages each platform binary into a ZIP archive
164- - Uploads the artifacts to the corresponding GitHub Release
173+ ``` powershell
174+ cd annotation_tool
165175
166- The build logic in the CI pipeline mirrors the manual PyInstaller commands described above, ensuring consistency between local and automated builds.
176+ python -m PyInstaller --noconfirm --clean --windowed --onefile `
177+ --name "SoccerNetProAnalyzer" `
178+ --add-data "style;style" `
179+ --add-data "ui;ui" `
180+ --add-data "controllers;controllers" `
181+ main.py
182+ ```
167183
168- CI workflows overview :
184+ Output :
169185
170- - ` ci.yml ` : Continuous integration (linting / checks)
171- - ` release.yml ` : Multi-platform executable build and GitHub Release publishing
172- - ` deploy_docs.yml ` : Documentation build and deployment (MkDocs)
186+ * ` annotation_tool\dist\SoccerNetProAnalyzer.exe `
173187
174188---
175- ## 📚 Build the docs
176- ``` bash
177- pip install mkdocs mkdocs-material mkdocstrings[python]
178- mkdocs gh-deploy --force
179- ```
189+
190+ ## 🤖 How executables are built (CI / GitHub Releases)
191+
192+ In addition to manual PyInstaller builds, standalone executables are automatically built using GitHub Actions.
193+
194+ ### Release builds (GitHub Releases)
195+
196+ When a version tag matching ` v* ` or ` V* ` (e.g., ` v1.0.7 ` ) is pushed, the release workflow runs:
197+
198+ * Workflow: ` .github/workflows/release.yml `
199+ * Builds for: ** Windows** , ** macOS** , ** Linux**
200+ * Packages outputs into ZIP archives
201+ * Uploads ZIP files as ** GitHub Release assets**
202+ * Generates release notes from recent commit messages
203+
204+ The build commands in CI mirror the manual PyInstaller commands above (including bundling ` style/ ` , ` ui/ ` , and ` controllers/ ` ).
205+
206+ ### Manual build artifacts (workflow dispatch)
207+
208+ There is also a standalone build workflow that can be triggered manually:
209+
210+ * Workflow: ` .github/workflows/CL.yml `
211+ * Builds for: ** Windows** , ** macOS** , ** Linux**
212+ * On ** manual run** (` workflow_dispatch ` ), it zips the binaries and uploads them as ** Actions artifacts** (short retention)
213+
214+ ### CI workflows overview
215+
216+ * ` CL.yml ` : Multi-platform build (manual artifacts on ` workflow_dispatch ` ; also runs on pushes to selected branches)
217+ * ` release.yml ` : Multi-platform build + GitHub Release publishing (triggered by version tags)
218+ * ` deploy_docs.yml ` : Documentation build and deployment (MkDocs)
219+
180220
181221---
182222
0 commit comments