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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Zongsoft.Upgrading.Web" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zongsoft.Upgrading.Web" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Zongsoft.Upgrading.Web" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zongsoft.Upgrading.Web --version 0.1.0
                    
#r "nuget: Zongsoft.Upgrading.Web, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Zongsoft.Upgrading.Web@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Zongsoft.Upgrading.Web&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Zongsoft.Upgrading.Web&version=0.1.0
                    
Install as a Cake Tool

Zongsoft.Upgrading.Web

License NuGet Version NuGet Downloads GitHub Stars

English | 简体中文


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 .manifest files generated by dotnet-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.plugin
  • Zongsoft.Upgrading.Web.option
  • Zongsoft.Upgrading.Web.deploy
  • Zongsoft.Upgrading.mapping

The plugin depends on:

  • Zongsoft.Data
  • Zongsoft.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

  1. Use Zongsoft.Tools.Upgrader to pack an application release.
  2. Import the generated .manifest file into the Web package manager.
  3. Upload the matching package file for the imported release.
  4. Mark the release as visible and published through the management API or data service.
  5. Configure client applications to use the Web channel with the /Upgrading/Upgrader endpoint.

Notes

  • The storage setting 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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