openvinotoolkit / openvinotoolkit/model_server

Windows Manager: Updates page and staged package upgrade workflow

Open
#4,351 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
931
Forks
277
Avg merge
2d 13h
Merged PRs (30d)
68

Description

Feature request

Add an Updates page to the Windows OVMS Manager that lets users discover when a newer OVMS package is available and apply it through a safe, validated, recoverable upgrade — without manually locating release assets, unzipping, or editing environment variables.

This complements the standalone Windows installer/Manager (see #4347) and is implemented in PR #4350.

Motivation

On Windows, OVMS is distributed as a portable ovms.zip payload. Today, updating means: find the right release asset, download it, stop the server, unzip over the install, fix up environment/config, and restart — error-prone and easy to get into a half-upgraded, non-booting state. Because OVMS ships as a version-matched stack (ovms.exe + OpenVINO runtime + GenAI + tokenizers + Python), mixing individual DLLs across releases is a common failure mode. A guided, all-or-nothing upgrade flow removes that risk.

Components tracked

The Updates page reports installed vs. latest for the package as a matched set:

  • Base package (the OVMS Windows payload / install marker version)
  • OpenVINO Model Server (ovms.exe --version)
  • OpenVINO GenAI backend (bundled GenAI runtime version)

Versions are read from the local install (install.json marker + ovms.exe --version) and compared against release metadata for the matching package variant (python_on / python_off).

Expected behavior

Update check

  • One "Check for updates" action checks all components together (they move as one matched package, not independently).
  • Show, per component: installed version, latest compatible version, and a state — Up to date / Update available / Cannot check (offline/metadata error).
  • Only surface an Install/Upgrade action when a strictly newer, variant-compatible package exists.
  • Provide release-notes links for Model Server and GenAI.
  • Update checks are explicit/manual by default; periodic checks are opt-in (never auto-install).

Staged, validated upgrade (implemented in packaging/windows/scripts/upgrade-package.ps1)

  1. Stop the Manager-owned ovms.exe (or the service, in service mode).
  2. Download the matching package to %LOCALAPPDATA%\OVMS\packages.
  3. Verify the download (checksum/size) and that required files are present.
  4. Extract to a staging dir; run staged ovms.exe --version as a smoke test.
  5. Back up the current install to %LOCALAPPDATA%\OVMS\packages\backup\<version>.
  6. Replace the install files in-place; preserve user data under %LOCALAPPDATA%\OVMS (settings, models, logs).
  7. Re-run configuration/marker update; restart the server if it was running.
  8. Run a health check; roll back from backup if version or health validation fails.

UI (Updates tab)

  • A row per component (Base package / Model Server / GenAI) with installed version, latest version, status badge, and a release-notes link.
  • A single "Check for updates" button and a contextual "Install update" button that appears only when an update is available.
  • Progress and result surfaced inline (checking / downloading / verifying / upgrading / rolled back), with errors shown clearly.
  • Never mixes DLLs from different releases — the package is the unit of upgrade.

Safety / non-goals

  • No silent auto-install; user confirms before download and before applying.
  • Version + variant must match the installed stack, or the action is blocked.
  • User data (%LOCALAPPDATA%\OVMS) is preserved across upgrades.
  • Failed upgrades restore the previous working package from backup.
  • Out of scope for the first version: delta/patch updates, background auto-update, and updating the Manager app itself (tracked separately).

Acceptance criteria

  • Updates page shows accurate installed and latest versions for all three components.
  • A single check covers all components and reports the correct state.
  • Install action appears only when a newer, variant-compatible package is available.
  • Release-notes links open for Model Server and GenAI.
  • Upgrade runs the staged download → verify → back up → replace → validate → reconfigure flow.
  • Settings, models, and logs are preserved across an upgrade.
  • A failed/invalid upgrade rolls back to the previous working install.
  • Offline / metadata-unavailable is handled gracefully (no crash, clear message).

Value

Gives Windows Manager users a clear, guided, and reversible way to keep OVMS current, matching the local-desktop experience of tools like Ollama, while preserving OVMS's version-matched-stack guarantees.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing packaging/windows/scripts/upgrade-package.ps1 and the referenced PR #4350, then trace how the Windows Manager currently represents its pages and package versions. Verify the Updates tab and staged workflow against the acceptance criteria, including compatibility checks, preservation of user data, health validation, and rollback.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, powershell
Domain
desktop-dev, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.