Channels, rollouts and rollback

Updated · 6 min read · For developers, release managers, QA

A channel is the pointer that decides which build your installed users get. This page is for developers and release managers who ship to production, run a beta, or need to undo a bad release. It covers access modes, assigning builds, branch channels, rollback and how quickly installed copies notice a change.

What a channel is

A channel is a named pointer to one build of your app, such as production or beta. Every installed copy of your app checks one channel. A build reaches users only when a channel points at it, so uploading a build changes nothing for users until you assign it.

Every app starts with a channel named production. Add more on the app’s Channels tab. A channel name uses lowercase letters, numbers and hyphens, because it is part of the update URL.

Builds never change after upload. To ship something different you upload a new build and point a channel at it. That is why a release and a rollback are the same operation.

Who can use a channel

Each channel has an access mode. You choose it when you create the channel and can change it later on the channel page.

AccessWho gets updatesTypical use
PublicAnyone with the channel name.Production releases and the public download page.
PasswordInstallers that send the channel name and its password. The password is stored hashed.A small group that shares one secret.
Tokens onlyInstallers that send a channel token you created. Each token is shown once and stored hashed.Testers, customers on early access, branch builds.

You do not have to hand testers a token to type in. The installer you build for a private channel carries its own token for that channel, so people who run it install and update with no typing. See Installer Studio.

Assign a build to a channel

  1. Wait for the build to be active

    On the Builds tab, a new build shows processing while Omnihorn scans, verifies and signs it. Only an active build can be assigned.

  2. Open the channel

    On the Channels tab, open the channel you want to ship to. Its page shows the build it points at today.

  3. Choose the build

    Use Assign build and pick the build. The change is saved at once.

  4. Let installed copies pick it up

    Each installed copy on that channel gets the build on its next update check. See how fast a change arrives.

From CI, you can assign in the same step that uploads: name the channel with the channel input, or let a channel follow the branch. See Upload builds from CI/CD.

Roll back a bad release

To roll back, assign an older build to the channel. Open the channel, use Assign build, and pick the last good build. Installed copies treat any build that differs from what they have as the update to apply, so they move back on their next check. You do not need a new upload or a new installer.

  • A rollback uses the same signed files as the original release, so nothing is rebuilt and nothing is re-signed by hand.
  • If the channel follows a branch, the next matching push replaces your rollback. Pause pushes to that branch, or stop the channel following it, until the fix is ready.
  • Your plan keeps a limited number of builds. A build that is live on a channel, pinned, or among the newest is never removed automatically. Pin a known good build on the Builds tab if you may want to return to it. See pricing.
  • Installed copies that already applied the bad build run it until their next check, so a short check interval shortens a rollback too.

Beta and production

A common setup is two channels: a private beta for testers and a public production for everyone. You ship a build to beta first. When testers are happy, you assign the same build to production. Users then get exactly the files that were tested, with the same version and signature.

  1. Create the beta channel

    On the Channels tab, create a channel named beta with Tokens only or Password access.

  2. Build a beta installer

    On the Installer tab, choose which design ships on beta and press Build installer for that channel. Send that installer to your testers.

  3. Ship to beta

    Assign each candidate build to beta. Testers’ copies update on their next check.

  4. Promote to production

    When a build passes, open production and assign the same build with Assign build.

An installed copy stays on the channel its installer was built for. To move a tester from beta to production, have them install the production installer. How many channels you can create depends on your plan; see pricing.

Branch channels

When you upload from CI, a channel can follow a branch. Set it on the channel page with Follow a branch: an exact name such as main, or a pattern such as release/*. Every active build from a matching branch is assigned to that channel, and it never moves to a lower build number.

A push to a branch nothing follows creates a private channel named after it, such as feature-login for feature/Login. These automatic channels are removed after a quiet period with no push and no update check; choose Keep this channel on the channel page to keep one. Public channels are never removed automatically. Full details are in Upload builds from CI/CD.

How fast installed copies see a change

A channel change takes effect on the server at once. Each installed copy notices it the next time it checks, which happens in three ways:

WhenWhat happens
The user opens the installer windowIt checks right away and offers the update.
The PC startsThe background updater checks once per start-up, if the check interval has passed since its last check, and applies the update silently.
A script runs the silent command lineomnihorn.exe --no-gui --check-update checks whenever it is run.

The check interval is set per channel. By default the background updater checks at most every 20 hours. You can choose every N hours up to a week, on every start-up, or manual only. Set it with Check for updates in the Settings section of Installer Studio; the value is saved on every channel that design ships on. Installed copies learn a new interval on their next check, with no new installer needed.

The background updater replaces the files but does not restart your app. A user meets the new version the next time they start it. More detail is in What happens on your users’ PCs.

›Do I need a new installer when I ship a new build?

No. The installer fetches whatever build its channel points at. Assign the new build and installed copies update on their next check. Build a new installer only when you change its design or settings.

›How do I undo a release?

Open the channel and assign the previous good build with Assign build. Installed copies move back on their next check.

›Can I roll out a build to a percentage of users?

Not today. Use a separate channel, such as beta, for a smaller group, then assign the same build to production when it is ready.

›What happens if I upload a build but assign it to no channel?

Nothing changes for users. The build waits on the Builds tab until a channel points at it.

Something wrong or missing? Tell us.