Files
YMhut-box-C-/docs/release-process.md
T
2026-07-06 23:05:40 +08:00

2.9 KiB

Release Process

  1. Update version.json.
  2. Run dotnet restore YMhut.Box.Native.sln --configfile NuGet.Config --ignore-failed-sources.
  3. Run dotnet test src\YMhut.Box.Tests\YMhut.Box.Tests.csproj -c Release --no-restore.
  4. Run build.bat --target=both.
  5. Verify installer_output/*.msix, installer_output/*.appinstaller, and the Inno Setup EXE.
  6. Install, launch, upgrade and uninstall both MSIX and EXE packages.

The default signing path uses a self-signed certificate for sideload validation. Replace the certificate before public distribution if a commercial signing certificate is available.

Gitea EXE Package Workflow

The Gitea Actions workflow at .gitea/workflows/publish-winui-exe.yml builds the Inno Setup installer with:

.\scripts\build-winui.ps1 --target=exe --no-pause

It then uploads the installer and a SHA-256 checksum file to Gitea Generic Packages:

{gitea.server_url}/api/packages/{gitea.repository_owner}/generic/ymhut-box-winui/{version}/{file}

The package version is derived from version.json using the same rule as the local build script. For example, version=2.0.7 and build=06 publishes version 2.0.7.6.

Required runner setup:

  • A Windows Gitea runner labeled winui-windows. Gitea does not provide GitHub-hosted windows-latest runners; runs-on must match one of your online act_runner labels exactly.
  • Internet access to download .NET workloads/NuGet packages and the pinned Inno Setup compiler when ISCC.exe is not already installed.
  • A repository secret named PACKAGE_TOKEN with package write/delete access. Use a personal access token because Gitea's built-in Actions job token does not fully support package repository publishing on all versions.

Optional repository variables:

  • PACKAGE_USERNAME: username that owns the package token. If omitted, the workflow actor is used.

Example Windows runner label configuration:

labels:
  - "winui-windows:host"

After changing runner labels, restart act_runner, then rerun .gitea/workflows/publish-winui-exe.yml.

Linux Docker Gitea + Windows Build Runner

The Gitea server can stay in a Linux Docker deployment. Only the WinUI build job needs a Windows execution environment.

Recommended topology:

Linux Docker host
  └─ Gitea server + database + package registry

Windows build machine or Windows VM
  └─ act_runner registered to the Linux Gitea instance
     └─ label: winui-windows

The runner connects outbound to the Gitea instance, polls for jobs, builds the installer on Windows, then uploads the EXE package back to Gitea Packages.

Do not replace this with CMake for this repository. CMake can orchestrate commands, but this app is a C# WinUI 3 / Windows App SDK project driven by MSBuild, XAML tooling, Windows SDK tools, and Inno Setup. A CMake wrapper would still end up calling Windows-only build tools such as dotnet publish, ISCC.exe, and signing/packaging tools.