This page explains how DocView Capture versions are numbered, how a release is built, and how it moves from a test system to production. It is for developers who build releases and for IT staff who install them.
One version number
The web app, the DocView Worker and the Scan Agent share one version number. It is set in Directory.Build.props:
<Version>1.2.0</Version>
Versions follow semantic versioning, MAJOR.MINOR.PATCH:
| Part | Raised when | Example |
|---|---|---|
| MAJOR | Administrators need to take action to upgrade. | 1.2.0 → 2.0.0 |
| MINOR | New features are added. | 1.2.0 → 1.3.0 |
| PATCH | Only fixes are made. | 1.2.0 → 1.2.1 |
Pre-release versions use a suffix, for example 1.3.0-rc.1.
Where you see the version
- About (account menu › About and support) shows the version and the build, for example "1.2.0 · build 1205f0796c71". The build is the git commit the release was built from.
- The account menu shows the web app's version.
- Administration › DocView Workers shows each DocView Worker's version.
- When the Scan Agent on a PC has a different version from the web app, the Scan screen asks the operator to update it. See Scan Agent.
Tip: When you contact support, an administrator can click Copy for support on the About page. It copies the version, build and system details.
The changelog
CHANGELOG.md lists what changed in each release, newest first, under a heading per version (for example ## 1.2.0 — 2026-09-30). It becomes the release notes. Schema changes are listed there too, because they matter for rollback.
Day-to-day development
- Work on a branch, for example
feature/export-sftporfix/audit-filter. - Open a pull request to
main. - The CI workflow (
.github/workflows/ci.yml) builds the solution and runs every test on Windows with SQL Server LocalDB. - Merge when CI passes.
Protect main so that pull requests and a passing CI check are required, and force pushes are blocked.
Make a release
Raise
<Version>inDirectory.Build.props, for example to1.3.0.Add a
## 1.3.0section at the top ofCHANGELOG.md.Commit, tag and push:
git commit -am "Release 1.3.0" git tag -a v1.3.0 -m "DocView Capture 1.3.0" git push origin main --follow-tagsCI sees the
v*.*.*tag, runstools/publish.ps1, and creates a release namedv1.3.0with every package and the checksums attached.
What a release contains
tools/publish.ps1 writes the release to dist/<version>/:
| File | Use |
|---|---|
DocViewCapture-Web-<v>.zip |
Web app for IIS or Azure App Service. Includes the Scan Agent installers and Tesseract English and orientation data. |
DocViewWorker-<v>.zip |
DocView Worker for a Windows service. |
DocViewWorker-Azure-<v>.zip |
The same DocView Worker as an Azure App Service continuous WebJob. |
DocViewCapture-Database-<v>.sql |
Idempotent database upgrade script for DBAs. |
deploy/iis/*.ps1 |
IIS and Windows service install and upgrade scripts. |
deploy/azure/*, deploy/aws/*, deploy/gcp/* |
Cloud templates (Azure Container Apps and App Service, AWS CloudFormation, Google Cloud script) and the certificate script. |
release.json, SHA256SUMS.txt |
Version, git revision, build time and checksums. |
DEPLOYMENT.md, CHANGELOG.md, NOTICES.txt |
Deployment guide, changes and open-source notices. |
The programs are self-contained for 64-bit Windows, so servers do not need a separate .NET runtime. IIS still needs the ASP.NET Core Module from the .NET Hosting Bundle.
Tip: Check the download with the checksums in
SHA256SUMS.txtbefore you install, for example withGet-FileHash .\DocViewCapture-Web-1.3.0.zip -Algorithm SHA256in PowerShell.
Build a release on your own PC
./tools/publish.ps1 # version from Directory.Build.props
./tools/publish.ps1 -Version 1.3.0-rc.1 -SkipTests # a release candidate
./tools/publish.ps1 -Languages eng,deu,fra # include more OCR languages
| Option | Meaning |
|---|---|
-Version |
Use this version instead of the one in Directory.Build.props. |
-Output |
Write the release to another folder. |
-Languages |
Tesseract languages to include (default eng; osd is always added). |
-SkipTests |
Do not run the tests first. |
-SkipScanAgent |
Do not build the Scan Agent installers. |
-FrameworkDependent |
Build framework-dependent programs instead of self-contained ones. |
The script warns when the working tree has uncommitted changes. Always build releases from a committed, tagged revision.
Promote, do not rebuild
Install each release first on a test system, then install the same packages on production. Never rebuild for production. This way production runs exactly what you tested.
For Azure, .github/workflows/deploy-azure.yml deploys a released version on demand to a staging or production environment. It checks the package checksums, deploys the DocView Worker and then the web app, and waits for /health/ready. See Install on Azure.
Hotfixes
To fix a released version without taking new features from main:
Create a branch from the release tag:
git switch -c hotfix/1.3.1 v1.3.0Fix the problem and raise the version to
1.3.1.Add a
## 1.3.1section toCHANGELOG.md.Tag
v1.3.1and push, as for any release.Merge the hotfix back into
main.
Upgrades and compatibility
- The apps upgrade the database schema when they start. Schema changes only go forward, so take a database backup before every upgrade.
- Batches in progress keep the Batch Setup version they started with.
- Batch Setup files carry a schema version. Files from older releases are upgraded when imported; files from newer releases are refused with a clear message.
- After a web upgrade, operators are asked to update the Scan Agent. The new installer is inside the web package.
See Upgrading for the upgrade and rollback steps.