Sąraše – 3 versijos programos Zenvara CLI, nuo 2026 m. liepos 21 d. iki dabartinės 1.2.0. Kiekviena veda į diegimo failus leidėjo serveryje.
| Versija | Data | Dydis | Failai |
|---|---|---|---|
| 1.2.0Naujausia | 2026 m. lapkričio 3 d. | — | 64 bitų ZIP Laidos pastaboszen 1.2.0
zen is the Zenvara command-line interface — a single self-contained native binary (NativeAOT, no
.NET runtime required) for installing, operating, and talking to a Zenvara instance.
This release adds typed scripting verbs for the platform (zen entity, zen flow run, zen whoami,
zen diagnostics version) and continues the install-safety work of 1.1.0. Read the breaking changes
before upgrading — several of them turn an install that used to succeed (or half-succeed) into a
refusal, which is the point, but it will surface in automation.
The new scripting verbs need Zenvara server 3.1.0 or later. Everything else works against any
server 1.1.0 worked against.
Breaking changes
- zen service install --service-password is removed. The password is now prompted for (masked)
when --service-user names a real account, or read as one line of strict UTF-8 from stdin for
scripts: cmd /c "zen service install … --service-user .\svc < pw.txt". It used to be visible in
process command lines and in Security event 4688. A leftover script still passing the flag is
refused with a fixed message that does not echo your command line.
- An operator-chosen --data-dir now has its DACL replaced. zen service install and
zen iis install break inheritance on it and grant only the service identity, Administrators and
SYSTEM. Another service or user that relied on access to that directory loses it — if two
installs share a data directory today, give each its own --data-dir before upgrading. The
install refuses (exit non-zero, nothing written) when the directory is a volume root or
machine-wide location, contains or is the application directory, holds any entry owned by an
untrusted principal or carrying its own broad Allow ACE, or cannot be fully inspected. The shared
%ProgramData%\Zenvara\data default is still never re-DACLed, and now says so loudly.
- A --data-dir this run will not apply is refused. Passing a different --data-dir than the
one already configured, without --force, now exits 1 instead of exiting 0 while granting
permissions on a directory the server would not use. Re-passing the same --data-dir is
unaffected. A config with no Storage: block at all now gets one written, without --force.
- A refused zen iis install creates nothing. It used to exit 1 with the site and app pool
created and started; it now exits 1 having created neither.
- Install names are stricter. zen service install --name and zen iis install --name refuse
empty or all-dot names, Windows reserved device names (nul, com1, …), names ending in a dot or
space, the reserved leaves data, extensions, dataprotection, cache, backups, and any
character other than letters, digits, _ and -. remove, start, stop and restart still
accept an existing name, so earlier installs stay controllable.
- Fresh installs use a new per-instance data directory. It is now tagged by installer kind
(…\Zenvara\service-<name>\data vs …\Zenvara\site-<name>\data; on Linux the sibling
/var/lib/zenvara-service-<name>), so a stock service and a stock IIS site no longer share one
directory and each other's secrets. Existing installs do not move — their directory is pinned
in appsettings.user.yaml. A fresh install on a host that still has the old unpinned directory
with content is refused and told to pass --data-dir explicitly.
- zen app fetch refuses a running install. Use zen app update to replace a live install;
fetch into an empty directory or a first install is unchanged.
- zen migrate-user-ids is gone from the CLI's server command surface, matching the server.
New
- zen entity list|get|create|update|delete <type> … — typed one-shot verbs over the server's
platform entities, for scripts. One JSON object on stdout; update/delete require --if-match;
create/update --content-file read back and compare bytes. Distinct exit codes for usage (2),
not-found (4), stale version (5) and could-not-judge (6).
- zen flow run <name> [--param k=v]… [--params-file f.json] runs a flow and waits for it,
printing {"flow","runId |
| 1.1.0 | 2026 m. rugsėjo 8 d. | — | 64 bitų ZIP |
| 1.0.0 | 2026 m. liepos 21 d. | — | 64 bitų ZIP |