Zongsoft.Upgrading.Web
0.1.0
dotnet add package Zongsoft.Upgrading.Web --version 0.1.0
NuGet\Install-Package Zongsoft.Upgrading.Web -Version 0.1.0
<PackageReference Include="Zongsoft.Upgrading.Web" Version="0.1.0" />
<PackageVersion Include="Zongsoft.Upgrading.Web" Version="0.1.0" />
<PackageReference Include="Zongsoft.Upgrading.Web" />
paket add Zongsoft.Upgrading.Web --version 0.1.0
#r "nuget: Zongsoft.Upgrading.Web, 0.1.0"
#:package Zongsoft.Upgrading.Web@0.1.0
#addin nuget:?package=Zongsoft.Upgrading.Web&version=0.1.0
#tool nuget:?package=Zongsoft.Upgrading.Web&version=0.1.0
Zongsoft.Upgrading.Web
Overview
Zongsoft.Upgrading.Web is the Web-side package manager for the Zongsoft automatic upgrading system.
It stores application and release metadata, hosts package files through the configured Zongsoft file-system storage, exposes management services for releases and instances, and provides the discovery endpoint used by the client upgrader.
Responsibilities
- Manage applications, editions, releases, release properties, release executors, and release publishing state.
- Import
.manifestfiles generated bydotnet-upgrade pack. - Upload package files for existing releases and write back file path, size, and checksum.
- Serve release discovery requests from
Zongsoft.Upgrading.Upgrader. - Filter releases by application name, edition, platform, architecture, visibility, published status, deprecation status, version range, package path, and package size.
- Run optional evaluator logic before returning a release to a specific application instance.
Installation
Install the NuGet package into a Zongsoft Web application:
dotnet add package Zongsoft.Upgrading.Web
The package includes plugin, option, deploy, and data-mapping artifacts:
Zongsoft.Upgrading.Web.pluginZongsoft.Upgrading.Web.optionZongsoft.Upgrading.Web.deployZongsoft.Upgrading.mapping
The plugin depends on:
Zongsoft.DataZongsoft.Data.SQLite
Configuration
The default option file declares release storage and the Upgrading database connection:
<options>
<option path="/Upgrading/Settings">
<setting setting.name="server" value="storage=zfs.s3:/upgrading/releases" />
</option>
<option path="/Data">
<connectionSettings>
<connectionSetting connectionSetting.name="Upgrading" driver="SQLite"
value="Database=zongsoft.upgrading.db;PRAGMA:optimize;PRAGMA:journal_mode=WAL;PRAGMA:synchronous=normal;PRAGMA:temp_store=memory;" />
</connectionSettings>
</option>
</options>
| Setting | Description |
|---|---|
/Upgrading/Settings/server:storage |
Storage root used for uploaded release package files. |
/Data/connectionSettings/Upgrading |
Data access connection used by the module and services. |
Discovery API
The client upgrader calls the Upgrader controller in the Upgrading area:
GET /Upgrading/Upgrader/{name}/{edition?}?Platform=Windows&Architecture=X64&CurrentlyVersion=1.0.0
| Parameter | Source | Description |
|---|---|---|
name |
Route | Application name. |
edition |
Route | Optional edition. Empty or _ matches releases without an edition. |
Platform |
Query | Target operating-system platform. |
Architecture |
Query | Target CPU architecture. |
CurrentlyVersion |
Query | Current application version. Returned releases must be greater than this version. |
UpgradingVersion |
Query | Optional maximum version to upgrade to. |
| Hardware fields | Query | Optional fingerprint values submitted by the upgrader, such as mainboard, processor, network, memory, or storage identifiers. |
The response is an XML release stream that the client upgrader can parse with the shared Release reader.
Evaluators
Evaluators allow the server to decide whether a release is suitable for a specific request. A release can specify an evaluator name and evaluator settings. When a matching evaluator is registered in Module.Current.Evaluators, the Web module calls it with:
- application name;
- evaluator settings;
- request query parameters;
- request headers.
Only releases whose evaluator returns true are returned to the upgrader.
Registered evaluators can be inspected through:
GET /Upgrading/Upgrader/Evaluators
Release Management
The Releases controller extends the Zongsoft service controller conventions and adds two upgrade-specific operations:
| Operation | Description |
|---|---|
| Import manifest | Upload a .manifest file with format=manifest to create release metadata, including properties and executors. |
| Upload package | Upload package content for an existing release. The service stores the package under the configured storage root, calculates checksum, updates size, and records the final package URL. |
The package storage path is generated from release identity:
{storage}/{lowercase-release-name}/{release-name}[-edition]@{version}_{runtime}
For example:
zfs.s3:/upgrading/releases/zongsoft.daemon/Zongsoft.Daemon-stable@1.1.0_win-x64
Release Filtering
A release is returned to the upgrader only when it is:
- visible;
- published;
- not deprecated;
- matching the requested application name;
- matching platform and architecture;
- matching the requested edition, or edition-less when the request edition is empty or
_; - newer than
CurrentlyVersion, when provided; - not newer than
UpgradingVersion, when provided; - associated with an existing package file path;
- associated with a positive package size.
Typical Workflow
- Use Zongsoft.Tools.Upgrader to pack an application release.
- Import the generated
.manifestfile into the Web package manager. - Upload the matching package file for the imported release.
- Mark the release as visible and published through the management API or data service.
- Configure client applications to use the
Webchannel with the/Upgrading/Upgraderendpoint.
Notes
- The
storagesetting should point to a file-system provider accessible by the Web application. - Package upload updates checksum from the stored file, so manually changed package files should be re-uploaded or recalculated.
- Evaluators receive both query parameters and headers, making them suitable for staged rollout, instance targeting, or hardware-bound licensing policies.
License
This project is licensed under the MIT license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Zongsoft.Core (>= 7.63.0)
- Zongsoft.Web (>= 7.18.0)
-
net8.0
- Zongsoft.Core (>= 7.63.0)
- Zongsoft.Web (>= 7.18.0)
-
net9.0
- Zongsoft.Core (>= 7.63.0)
- Zongsoft.Web (>= 7.18.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 76 | 10/10/2026 |