[RFC] Standalone Windows installer + tray Manager for OVMS (install / repair / uninstall / update)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Área
- build-system, desktop, operating-systems
Línea de trabajo
Comienza con packaging/windows/OVMS_WINDOWS_INSTALLER_MANAGER_PLAN.md en PR #4350 y el flujo de trabajo de Updates en #4351; primero resuelve con los maintainers las cuestiones sobre el alcance y el modelo de instalación. Los criterios de aceptación enumerados definen cuándo se considera terminado: instalación por usuario, reparación y desinstalación, controles del Manager, configuración atómica, diagnósticos y rollback de actualizaciones por etapas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Propose adding a standalone, self-contained Windows installer / uninstaller / repairer plus a tray-based OVMS Manager GUI, so Windows users can install a working, version-matched OVMS stack; run, monitor, and configure it; repair a broken install; and update it — all without manual unzip/env/config steps. This complements (does not replace) the portable ovms.zip.
Reference implementation: PR #4350. The Updates workflow is detailed in #4351.
Motivation
On Windows, OVMS ships only as a portable archive. There is no guided installer, no Apps & Features uninstaller, no repair path, and no update path. Non-expert users must manually unzip, set environment variables, wire up startup, and hand-edit config to serve a model. Because OVMS is a version-matched stack (ovms.exe + OpenVINO runtime + GenAI + tokenizers + Python), mixing DLLs across releases is a frequent failure. This is a real barrier to local/desktop adoption compared to tools like Ollama.
Architecture
Keep the server headless; add a thin Windows UX layer around it:
OVMS-Setup.exe installs the payload, writes first-run config, registers uninstaller/startup
OVMS.Manager.exe owns the tray icon + GUI; controls start/stop; edits settings; repair/update
ovms.exe unchanged model server process
- Program files:
%LOCALAPPDATA%\Programs\OVMS - User data:
%LOCALAPPDATA%\OVMS(settings.json,models\config.json,logs\,packages\,diagnostics\,runtime.json) - Per-user, no elevation for the default flow (HKCU). Machine-wide/service mode is a follow-up requiring elevation.
Installer (Inno Setup, build-time-only dependency)
- Installs the existing
python_onpackage as a single version-matched payload — no downloads at install time. - Modern wizard UI with OpenVINO branding; existing-install detection with a Repair/upgrade vs. Uninstall choice page.
- Apps & Features uninstaller with a 3-way data choice (preserve all / keep models / remove all).
- Repairer: verify required files, restore from a cached pristine package (
%LOCALAPPDATA%\OVMS\packages\source), re-runovms.exe --version. - Optional PATH entry and start-at-login; Start Menu shortcuts (Open / Start / Stop / Repair / Uninstall).
Manager GUI (.NET WinForms, tray app)
App-shell with a left nav rail and five pages (all responsive; process/HTTP work off the UI thread):
- Dashboard — status/pid, REST endpoint, gRPC, models served, health (
GET /v3/models), package variant, runtime mode; Start / Stop / Restart / Open Logs / Open Model Folder; auto-refresh. - Settings — REST/gRPC ports, bind address, log level/path, model repository (Browse), startup mode, show-tray, start-at-login; atomic save with
.bak, restart prompt for command-line-affecting changes, non-local bind warning. - Logs — tails the server log with auto-scroll, line count, open-folder/clear.
- Advanced — environment info (dirs, versions, effective command line + Copy) and maintenance actions (Repair / Validate / Export Diagnostics bundle).
- Updates (#4351) — installed vs. latest for Base package / Model Server / GenAI, release-note links, and a validated staged upgrade (download → verify → back up → replace → validate → rollback on failure).
Supporting scripts (packaging/windows/scripts)
configure-ovms, start-ovms/stop-ovms (process or service), set-path, ovms-env, install-service/uninstall-service, validate-install, repair-package, upgrade-package, uninstall-ovms. Atomic JSON writes, runtime ownership via runtime.json, port preflight, local-only default bind.
Non-goals (initial)
- Not turning
ovms.exeinto a GUI app; not replacingovms.zip. - Not mixing arbitrary OpenVINO/GenAI/OVMS DLL versions — the package is the unit of install/upgrade.
- Windows Service mode is scaffolded but requires elevation (follow-up); machine-wide install is a separate mode.
- Updating the Manager app itself, and background/silent auto-update, are follow-ups.
Design doc
Full architecture and phased plan: packaging/windows/OVMS_WINDOWS_INSTALLER_MANAGER_PLAN.md (in PR #4350).
Acceptance criteria
- Fresh per-user install succeeds without elevation;
ovms.exe --versionworks afterward. - Existing-install detection offers Repair/upgrade vs. Uninstall.
- Uninstall removes program files, PATH/startup entries, and shortcuts; honors the 3-way data choice.
- Repair restores missing files from the cached package and re-validates.
- Manager starts/stops/restarts the server and reflects live health.
- Settings persist atomically with backup; command-line-affecting changes prompt for restart.
- Diagnostics bundle exports settings/logs/versions/runtime state.
- Updates page + staged upgrade behave per #4351 (with rollback).
- No build artifacts committed; Inno Setup is a build-time-only dependency.
Questions for maintainers
- Is an in-repo Windows installer + manager in scope for
model_server, or preferred as a separate companion project? - Per-user (proposed default) vs. machine-wide as the primary install model?
- Ship both
python_onandpython_offvariants, or one installer that can fetch the other variant? - Preferred source of truth for release metadata/checksums used by the update checker?
Happy to adjust scope based on direction.
- Lenguaje dominante
- C++
- Estrellas
- 932
- Forks
- 278
- Merge medio
- 3 d 5 h
- PR fusionados (30 d)
- 70
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openvinotoolkit/model_server
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
openvinotoolkit/model_server#4613 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
openvinotoolkit/model_server#4609 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
`/v3/models` lists every model twice when `group_name` and `--idle_unload_timeout_seconds` are combinedPosiblemente ocupada @atobiszei la tomó hace 5 días. Abierto
openvinotoolkit/model_server#4604 · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Idle unload never happens again if the client disconnects while a sleeping graph is waking upPosiblemente ocupada @atobiszei la tomó hace 5 días. Abierto
openvinotoolkit/model_server#4603 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
openvinotoolkit/model_server#4599 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de openvinotoolkit/model_server
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Icinga/icinga2#11058 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
component: split-view platform: windows
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
zen-browser/desktop#15616 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
area/ysql kind/bug priority/medium status/awaiting-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
yugabyte/yugabyte-db#34415 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
WayfireWM/wayfire#3148 · 1 comentario ·
Los mantenedores suelen responder en 1 día