Skip to content

Auto-update MSIX installs from GitHub Releases via App Installer feeds - #66

Merged
Marc-André Moreau (mamoreau-devolutions) merged 1 commit into
masterfrom
copilot/msix-auto-update-github
Nov 12, 2026
Merged

Marc-André Moreau (mamoreau-devolutions) merged 1 commit into
masterfrom
copilot/msix-auto-update-github

Conversation

@mamoreau-devolutions

Copy link
Copy Markdown
Contributor

Adopts the approach from dotMorten/GitHubToDo: publish an App Installer feed at GitHub's stable releases/latest/download/ URL so installed MSIX packages update themselves from new GitHub Releases.

Changes

  • New-AppInstaller.ps1 (new): generates a per-architecture feed (Devolutions.Terminal_<arch>.appinstaller). The feed URI is releases/latest/download/...; MainPackage points to the immutable MSIX for the release tag. Checks run on launch (non-blocking, no prompt) and through the background task.
  • Build-Packages.ps1: new -UpdateRepository / -ReleaseTag parameters. When set, it writes the feeds next to the MSIX files, embeds each feed as Update.appinstaller, and adds a uap13:AutoUpdate reference. uap13 is ignorable, so older Windows versions skip it.
  • Test-Packages.ps1: -UpdateRepository validates that the embedded feed matches the package's identity, architecture, file name, and stable URI, and that it is hash-identical to the published feed. Without the parameter, it asserts that no feed is embedded.
  • Test-PackageBuild.ps1: adds an AutoUpdate case plus negative tests (missing feed, wrong repo, unexpected feed, divergent published feed, missing tag).
  • Workflow: release events (tag push or workflow_dispatch) build and validate with UpdateRepository=$GITHUB_REPOSITORY. The feeds flow into the existing release assets.
  • Docs: README install links, docs/release.md "MSIX automatic updates", package README.

Per-architecture feeds are used because this repo ships separate x64/arm64 MSIX files, not a bundle.

Testing

  • Test-PackageBuild.ps1 passes locally, including the new AutoUpdate and failure cases. makeappx accepts the uap13 manifest.

Follow-up (not included)

  • In-app update notifications (Package.CheckUpdateAvailabilityAsync), as GitHubToDo does.

Generate per-architecture .appinstaller feeds served from the stable
releases/latest/download URL, embed them as Update.appinstaller with
uap13:AutoUpdate, validate them in Test-Packages.ps1, and enable them for
release builds. Inspired by dotMorten/GitHubToDo.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
publish-dry-run — 01b1fed2 Deployed Nov 12, 2026 by mamoreau-devolutions via MSI packages #396
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant