changed customer to studio

This commit is contained in:
ykcheungab
2026-09-12 14:03:00 +08:00
parent a2db648560
commit 904c27125f
71 changed files with 112 additions and 3959 deletions
+14 -14
View File
@@ -1,19 +1,19 @@
# Build
Windows packaging for the customer desktop app.
Windows packaging for the studio desktop app.
## Layout
```text
build/
customer/
studio/
entry.py # frozen entry (no source chdir)
orisys-customer.spec # PyInstaller onedir spec
orisys-studio.spec # PyInstaller onedir spec
build.ps1 # create/reuse .venv-build and build
_pyinstaller/ # PyInstaller workpath (gitignored)
dist/
OrisysCustomer/
OrisysCustomer.exe
OrisysStudio/
OrisysStudio.exe
config/ # lean locales + sensors (no finger visualization/)
_internal/ # Python, PyQt5, opencv-headless, orisys, …
```
@@ -26,7 +26,7 @@ dist/
## Build
From `build\customer` (recommended):
From `build\studio` (recommended):
```bat
build.bat
@@ -37,7 +37,7 @@ build.bat -SkipInstall
Or from repo root:
```powershell
powershell -ExecutionPolicy Bypass -File .\build\customer\build.ps1
powershell -ExecutionPolicy Bypass -File .\build\studio\build.ps1
```
`build.bat` always resolves `build.ps1` next to itself (cwd-independent) and forwards flags.
@@ -49,7 +49,7 @@ Flags:
| `-Clean` | Pass `--clean` to PyInstaller (use after dep/spec changes) |
| `-SkipInstall` | Reuse packages already in `.venv-build` (faster iteration) |
Output: `dist\OrisysCustomer\OrisysCustomer.exe`
Output: `dist\OrisysStudio\OrisysStudio.exe`
## Dependency notes
@@ -59,22 +59,22 @@ Output: `dist\OrisysCustomer\OrisysCustomer.exe`
## Size / startup
- **onedir** (not onefile): faster cold start; ship the whole `OrisysCustomer` folder.
- **onedir** (not onefile): faster cold start; ship the whole `OrisysStudio` folder.
- Finger `assets/visualization/` is stripped from the shipped `config/` (~11 MB saved).
- Customer shell defers OpenCV / acquisition imports until Preview or Run.
- Studio shell defers OpenCV / acquisition imports until Preview or Run.
Expect hundreds of MB total (Qt + numpy/scipy/numba + OpenCV). Without Open3D this stays smaller than a full `orisys[gui]` bundle.
## Verification
1. Launch `OrisysCustomer.exe` on the build machine (and ideally a clean PC without Python).
1. Launch `OrisysStudio.exe` on the build machine (and ideally a clean PC without Python).
2. Theme / locale / prefs work; `preference.json` and `outputs\` appear next to the EXE.
3. Camera preview + box/mini/finger Run (video) with image modes and force plots.
4. Confirm no `open3d*` files under `dist\OrisysCustomer`.
4. Confirm no `open3d*` files under `dist\OrisysStudio`.
## Editable run (unchanged)
```powershell
$env:PYTHONPATH = "D:\repo\orisys-app\shared\src;D:\repo\orisys-app\apps\customer\src"
python D:\repo\orisys-app\apps\customer\run.py
$env:PYTHONPATH = "D:\repo\orisys-app\shared\src;D:\repo\orisys-app\apps\studio\src"
python D:\repo\orisys-app\apps\studio\run.py
```
-8
View File
@@ -1,8 +0,0 @@
"""Frozen entry for Orisys Customer (no source-tree chdir)."""
from __future__ import annotations
from orisys_customer.main import main
if __name__ == "__main__":
raise SystemExit(main())
@@ -1,6 +1,6 @@
@echo off
setlocal EnableExtensions
REM Build Orisys Customer EXE. Works from any cwd; forwards args to build.ps1
REM Build Orisys Studio EXE. Works from any cwd; forwards args to build.ps1
REM Examples:
REM build.bat
REM build.bat -Clean
@@ -1,7 +1,7 @@
#Requires -Version 5.1
<#
.SYNOPSIS
Build Orisys Customer Windows onedir EXE with PyInstaller.
Build Orisys Studio Windows onedir EXE with PyInstaller.
.PARAMETER Clean
Pass --clean to PyInstaller (slower; use when deps/spec change).
@@ -19,7 +19,7 @@ $ErrorActionPreference = "Stop"
$RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..\..")).Path
$VenvDir = Join-Path $RepoRoot ".venv-build"
$Python = Join-Path $VenvDir "Scripts\python.exe"
$Spec = Join-Path $PSScriptRoot "orisys-customer.spec"
$Spec = Join-Path $PSScriptRoot "orisys-studio.spec"
$WorkPath = Join-Path $RepoRoot "build\_pyinstaller"
$DistPath = Join-Path $RepoRoot "dist"
@@ -31,11 +31,11 @@ if (-not (Test-Path $Python)) {
}
if (-not $SkipInstall) {
Write-Host "Installing build dependencies (editable shared + customer + orisys + pyinstaller)…"
Write-Host "Installing build dependencies (editable shared + studio + orisys + pyinstaller)…"
& $Python -m pip install --upgrade pip
& $Python -m pip install "pyinstaller>=6.0"
& $Python -m pip install -e (Join-Path $RepoRoot "shared")
& $Python -m pip install -e (Join-Path $RepoRoot "apps\customer")
& $Python -m pip install -e (Join-Path $RepoRoot "apps\studio")
# orisys may already be installed; ensure present without [gui]/open3d
& $Python -m pip install "orisys>=0.5"
@@ -73,12 +73,12 @@ if ($LASTEXITCODE -ne 0) {
exit $LASTEXITCODE
}
$OutDir = Join-Path $DistPath "OrisysCustomer"
$OutDir = Join-Path $DistPath "OrisysStudio"
Write-Host ""
Write-Host "Build complete: $OutDir"
# Lean config beside EXE (exclude finger visualization assets)
$ConfigSrc = Join-Path $RepoRoot "apps\customer\config"
$ConfigSrc = Join-Path $RepoRoot "apps\studio\config"
$ConfigDst = Join-Path $OutDir "config"
if (Test-Path $ConfigSrc) {
Write-Host "Copying lean config to $ConfigDst …"
@@ -96,7 +96,7 @@ if (Test-Path $ConfigSrc) {
}
}
Write-Host "Launch: $(Join-Path $OutDir 'OrisysCustomer.exe')"
Write-Host "Launch: $(Join-Path $OutDir 'OrisysStudio.exe')"
# Size summary
if (Test-Path $OutDir) {
+8
View File
@@ -0,0 +1,8 @@
"""Frozen entry for Orisys Studio (no source-tree chdir)."""
from __future__ import annotations
from orisys_studio.main import main
if __name__ == "__main__":
raise SystemExit(main())
@@ -1,5 +1,5 @@
# -*- mode: python ; coding: utf-8 -*-
"""PyInstaller onedir spec for Orisys Customer (Windows)."""
"""PyInstaller onedir spec for Orisys Studio (Windows)."""
from __future__ import annotations
@@ -57,7 +57,7 @@ icon = str(icon_path) if icon_path.is_file() else None
a = Analysis(
[str(ENTRY)],
pathex=[
str(REPO_ROOT / "apps" / "customer" / "src"),
str(REPO_ROOT / "apps" / "studio" / "src"),
str(REPO_ROOT / "shared" / "src"),
],
binaries=binaries,
@@ -105,7 +105,7 @@ exe = EXE(
a.scripts,
[],
exclude_binaries=True,
name="OrisysCustomer",
name="OrisysStudio",
debug=False,
bootloader_ignore_signals=False,
strip=False,
@@ -127,5 +127,5 @@ coll = COLLECT(
strip=False,
upx=False,
upx_exclude=[],
name="OrisysCustomer",
name="OrisysStudio",
)