Installer Studio
Updated · 6 min read · For developers, release managers
Installer Studio is where you design the Windows installer your users download, on the app’s Installer tab. This page is for developers setting up a first installer or changing one: the window’s look, what starts after install, start-up and shortcut offers, which channel each installer ships, and how to build and share it.
What the installer is
Omnihorn builds one standalone setup.exe per installer design and channel. It holds Omnihorn’s installer and your design, not your app’s files. When a user runs it, it downloads the build that its channel points at, verifies it and installs it. Every later update uses the same path, so the installer never goes stale when you ship a new build.
Your app’s Installer tab lists its designs. Every app starts with one design, marked Default. You can add more, for example a different look for a beta channel.
Design the installer window
Open a design to edit it in the Studio. A live preview shows the window as your users will see it. You can set:
- Colours for the background, text and accent, with an optional light variant when the window follows Windows light or dark mode.
- Corners (sharp, rounded or pill) and a background style (solid, glow or aurora).
- Your app icon and its shape, square or circle. Without an icon the window shows a monogram of the app name.
- A short description of the app.
- Whether users may choose the install folder on the first install. Updates never move an installation.
The app name and the description reach the build machine’s command line, so a few characters are refused: & | < > ^ % !, double quotes and line breaks. The dashboard shows the problem next to the field and keeps Save disabled until it is fixed.
Choose what starts after install
The launch target is what the installer starts after a successful install or update. The Settings section of the Studio appears once the app has an active build, because you pick the target from that build’s files. If the build holds a single .exe, it is picked for you.
| Launch target | What happens |
|---|---|
| Automatic | The installer starts the first .exe it finds in your build. |
A program (.exe) | The file you picked starts, with the arguments you entered. |
A script (.bat, .cmd or .ps1) | The script runs after install and after each update. |
An .msi | It runs on the first install only. |
| Nothing | Nothing starts. The last screen shows Done instead of a launch button. |
The path is relative to the install folder. Arguments are one line, and double quotes group words. The characters & | < > ^ % ! are refused in both, as are double quotes in the path.
Start-up and shortcut offers
On the first install, the installer can offer three options as checkboxes: start the app with Windows, add a Start Menu shortcut, and add a desktop shortcut. For each one you choose one of three modes:
| Mode | What the user sees |
|---|---|
| Don’t offer | The installer never shows the option and never creates it. |
| Offer, ticked | Shown ticked on the first install; created unless the user unticks it. |
| Offer, unticked | Shown unticked on the first install; created only if the user ticks it. |
- These offers appear only when the launch target is a program or a script. With an
.msior nothing to launch, the card is replaced by a sentence explaining why. - When the Start Menu shortcut is on, a second Start Menu entry, {your app} Updater, opens the installer window so users can check for updates by hand.
- Everything is per user and needs no administrator rights. Uninstall removes all of it, and only deletes shortcuts the installer itself created.
How often installed copies check
The Check for updates field in the Settings section sets how often the background updater may check: every N hours up to a week, on every start-up, or manual only. It is saved on every channel the design ships on, and the field says so. Installed copies pick up a new value on their next check, with no rebuild. A design that ships on no channel shows the field disabled with "Not on any channel yet".
One installer per channel
Each channel ships exactly one design, and each pair of design and channel has its own installer. A design’s row shows Used on N channels; open it to see each channel, its state, Create installer or Build installer, Download and a link to copy the public page.
- Use the Ships on picker to move a channel to another design, or Use on every channel to put one design everywhere. Moving a channel builds nothing by itself.
- The Default design is used for new channels and branch channels. Use Make default on another row to change it. Channels you bound to a design by hand keep it.
- An installer for a private channel carries that channel’s own token, so testers install and update without typing anything.
- How many designs can be live at once depends on your plan. See pricing.
Build the installer
Installers are built when you ask. Omnihorn builds the app’s first installer when you create the app. After that, saving a design, creating a channel or moving a channel does not rebuild anything. Press Build installer when you want the change in a new setup.exe.
Open the Installer tab
Pick the design you want to ship and check its look and Settings section.
Open its channels
Choose Used on N channels on the design’s row. A pair that was never built shows "No installer has been built for …".
Build
Press Create installer the first time, or Build installer after a change, for the channel you want.
Wait for Ready
The status moves from Queued and Building… to Ready. The row shows the build phases and an estimate.
Download or share
Use Download for the file, or copy the public page link for a public channel.
Building the same configuration twice in a short time gives you the installer that already exists. A daily fair-use limit protects the build machine; if you hit it, try again later.
Download link and public download page
Each app has a public download page at /download/<appId>. It serves the installer of a public channel, production by default, built from the design that channel ships. Private channels have no public page: send their installer to testers directly.
The SmartScreen warning
Read why SmartScreen says Unknown publisher for what the warning means and how signing changes it. If you need screens or steps the Studio does not offer, see custom installers.
›Do I need to rebuild the installer for every release?
No. The installer downloads the build its channel points at, so a new build reaches new and existing users without a new installer. Rebuild only after you change the design or its settings.
›Why did my design change not reach users?
Saving a design does not rebuild its installers. Press Build installer for each channel that ships the design, then share the new installer.
›Can I build a macOS or Linux installer?
Not today. Omnihorn builds Windows installers only.
›Why is the launch picker empty?
It reads the files of your latest active build. Upload a build and wait until it is active, then open the design again.
Keep reading
Something wrong or missing? Tell us.