Troubleshooting
Updated · 7 min read · For developers, QA, release managers, IT and security
Find your symptom in the table for its area: upload, build processing, channels, installer, updates on user machines, or CI. Each row gives the likely cause and the fix. Most problems come from a build that is not active yet, a channel with no build assigned, or a revoked token or key.
Check these three things first
- Is the build active? Open the app’s Builds tab. Only an active build can be assigned to a channel or used as a launch target.
- Is the build on the channel? Open the channel page. An installed copy gets nothing new until its channel points at a different build.
- Is the access still valid? A revoked channel token or CI API key is refused on the next request.
When you ask for help, include the full build version (such as 1.4.0+build.42), the channel name and the exact message you saw.
Upload
| Symptom | Cause | Fix |
|---|---|---|
| Two files are refused as duplicates | Their paths differ only in upper and lower case. Windows treats them as the same file | Rename one of them and upload again |
| A file is refused before upload | Its path is longer than 300 characters, or the file is larger than 5 GiB | Shorten the folder structure, or split the file |
| The whole upload is refused before it starts | The build has more than 5000 files | Remove files the app does not need at run time, or pack data into fewer files |
| A 7z, RAR or tar archive is refused | These archives are unpacked in the browser, in memory, and the limit is 1 GiB | Drop the unpacked folder instead |
Storage limit reached | The plan’s storage is full | Delete builds you no longer need (space comes back within minutes) or see pricing. Files you uploaded before do not count twice |
| The upload stopped halfway | The network dropped | Press Retry failed: only the failed files upload again |
| Some files show as done at once | Your workspace uploaded identical files before | Nothing to fix. Unchanged files are never uploaded twice |
Build processing
| Symptom | Cause | Fix |
|---|---|---|
| The build stays on processing | Every file is verified, and copied into storage before the file list is signed. Large builds take longer | Wait. A temporary error is retried before the build is marked failed |
Failed with HASH_MISMATCH or SIZE_MISMATCH | A file changed while it was being uploaded | Make sure the build has finished writing its output, then upload again |
Failed with FILE_RECLAIMED | A file the build reused from an earlier upload was cleaned up in the meantime | Upload again. This time the file is uploaded in full |
This app is busy with another upload or a cleanup | Another upload or the nightly cleanup held the app for a moment | Try again in a few seconds |
This app has N builds, the most the … plan keeps | Every build is live on a channel, pinned or among the three newest, so none could make room | Unpin or delete a build, or see pricing |
| A build disappeared from the list | It was deleted by hand, or removed by the plan’s build retention after it stopped being live | Pin builds you want to keep. Pinned builds and builds live on a channel are never removed automatically |
Channels
| Symptom | Cause | Fix |
|---|---|---|
| A channel name is refused | Names may hold only lowercase letters, numbers and hyphens | Use a name such as beta-2 |
CHANNEL_EXISTS | The app already has a channel with that name | Pick another name or open the existing channel |
| A new channel is refused with a plan limit | The plan’s channel count for the app is reached | Delete a channel you no longer use, or see pricing |
| Installed copies say they are up to date | The channel still points at the build they have, or at no build | Assign the new build on the channel page |
| A rollback was undone by itself | The channel follows a branch, and a new push replaced the build you assigned | Stop following the branch on the channel page while you investigate |
| A branch channel disappeared | Channels created automatically for a branch expire after a period without pushes or update checks | Push to the branch again, or use Keep this channel to keep one for good |
Installer builds
| Symptom | Cause | Fix |
|---|---|---|
| SmartScreen warns about an unknown publisher | Installers are not code-signed until a certificate is configured | Expected today. Choose More info, then Run anyway. See the SmartScreen post |
| “No installer has been built for …” | Installers are built on request, per design and channel | Press Create installer for that channel on the Installer tab |
| The installer stays queued | The build machine is busy or offline | Wait; queued builds run when it is back. Nothing to fix in the dashboard |
| A build is refused because one is already running | That design and channel already have a compile in progress | Wait for it to finish, then build again |
| “You’ve reached today’s installer build limit” | A daily fair-use limit on installer builds per workspace | Try again tomorrow. Building an unchanged design returns the existing installer |
| The installer build fails and asks you to rename the app | The app name contains a character the build machine cannot pass safely: & | < > ^ % ! or a double quote | Rename the app in its Settings tab and build again |
Your .exe is not offered as the launch target | The build is not active yet, so its file list is not ready | Wait for the build to become active, then open the design again |
Updates on user machines
| Symptom | Cause | Fix |
|---|---|---|
| “Access to … was refused — it may have been revoked” | The channel token in the installer was revoked | Give the user a new installer for the channel |
| “Updates are paused” | The publisher’s plan usage limit was reached, so the app gets no updates for now | The publisher checks usage under Settings and upgrades or waits for the next month |
| “The update was not installed: it contains an unsafe file path” | A file name in the build is not safe on Windows, for example CON.txt or a name ending in a dot | Rename the file in your app and upload a new build |
| “The update changed while it was downloading” | The channel moved to another build during the download | Check again; the next attempt gets the new build |
| The background check never runs | The channel is set to manual checks only, or its interval has not passed yet | Change the channel’s check setting, or open the installer window, which checks at once |
| An update arrives a few minutes after start-up | The background check waits a random time of up to ten minutes so machines do not all check at once | Expected |
| The command-line check exits with code 1 | Network, channel access, a hash mismatch or an unsafe path | Read the error field of the printed JSON. For a server busy answer it also carries retryAfterSeconds |
An installer keeps its own log in .omni-installer\logs\app.log inside the install folder, and more logs in %LOCALAPPDATA%\Omnihorn\logs. Attach them to a bug report. See Updates on user machines for how the update cycle works.
CI uploads
| Symptom | Cause | Fix |
|---|---|---|
The API key was refused (401) | The secret is empty, mistyped, or the key was revoked | Create a new key on the CI/CD tab and update the OMNIHORN_API_KEY secret |
This app is suspended or workspace is suspended (403) | The app or workspace was suspended | Contact support through contact |
| Retries with “Too many requests” (429) | More than 60 requests a minute with one key | The upload waits and retries by itself. Use one key per repository |
| Fork or Dependabot runs skip the upload | Those runs get no secrets | Expected: they are skipped with a notice and do not fail |
| “No branch channel was created: the plan’s channel limit is reached” | The build exists but has no channel | Delete a channel, make an existing channel follow the branch, or see pricing |
| “still processing after 15 minutes” | A large build is still being verified | Check the Builds tab; it may still finish |
| “channel … unchanged (a newer build is already there)” | A later push of the same branch finished first | Nothing to fix |
The CI/CD guide has the full list of inputs and messages. If none of this matches, write to us through contact with the build version and the message.
›Why do installed copies not get my new build?
Usually because the build is not assigned to their channel yet, or the channel’s check interval has not passed. Assign the build on the channel page; opening the installer window checks at once.
›Is the SmartScreen warning a problem with my app?
No. Installers are not code-signed until a certificate is configured, so Windows warns about every Omnihorn installer today.
›A build failed. Can I retry it?
Upload it again. Files your workspace already uploaded are not sent twice, so a second upload is usually quick.
Keep reading
Something wrong or missing? Tell us.