Branded bitmaps
header.bmp + welcome.bmp from icon.ico.
The installer's Welcome page and header strip are bitmaps — small PNG-as-BMP images. By default they're NSIS stock. With ~5 lines of script, they become your product's look.
The two bitmaps
header.bmp— 150 × 57 px. Sits in the upper-right of every install page after Welcome. Usually contains your logo on a brand background.welcome.bmp— 164 × 314 px. Left- side banner on the Welcome and Finish pages. Tall, narrow, eye-catching.
Wiring them into the NSI
!define MUI_HEADERIMAGE!define MUI_HEADERIMAGE_BITMAP "header.bmp"!define MUI_HEADERIMAGE_UNBITMAP "header.bmp"!define MUI_HEADERIMAGE_RIGHT!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp"!define MUI_UNWELCOMEFINISHPAGE_BITMAP "welcome.bmp"!define MUI_BGCOLOR "F5F1EA"!define MUI_TEXTCOLOR "0E0E0E"
Background colour + text colour also customisable. Match your brand palette.
Generate from icon.ico — no design step
The Grit release script regenerates both bitmaps from your icon.ico automatically. PowerShell does the work:
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Add-Type -AssemblyName System.Drawingfunction Save-Bmp(\$icon, \$w, \$h, \$out) {\$bmp = New-Object System.Drawing.Bitmap \$w, \$h\$g = [System.Drawing.Graphics]::FromImage(\$bmp)\$g.Clear([System.Drawing.Color]::White)\$src = [System.Drawing.Icon]::ExtractAssociatedIcon('build/windows/icon.ico')\$g.DrawIcon(\$src, 8, 8)\$bmp.Save(\$out, [System.Drawing.Imaging.ImageFormat]::Bmp)}Save-Bmp 'build/windows/icon.ico' 150 57 'build/windows/installer/header.bmp'Save-Bmp 'build/windows/icon.ico' 164 314 'build/windows/installer/welcome.bmp'"
Net effect: change your icon.ico, run the release script, both bitmaps reflect the new icon. No Photoshop trips.
Going further — custom bitmaps
For a polished look, replace the auto-generated bitmaps with designer-made ones. Drop them at:
build/windows/installer/header.bmpbuild/windows/installer/welcome.bmp
The release script preserves them if they already exist (or you comment out the regeneration step).
The icon itself
Your icon.ico is a multi-resolution file — typically 16, 32, 48, 256 px embedded. Generate from a square PNG with an online icon generator (e.g., icoconvert.com).
This icon ends up in:
- The installer's wizard window
- The shortcut on the Start menu / Desktop
- Add/Remove Programs entry
- The Wails app window in Task Manager
Text strings
The Welcome page text comes from MUI defines:
!define MUI_WELCOMEPAGE_TITLE "Welcome to the FieldPOS Setup Wizard"!define MUI_WELCOMEPAGE_TEXT "This will install FieldPOS v${INFO_PRODUCTVERSION}.$\r$\n$\r$\nClick Next to continue."!define MUI_DIRECTORYPAGE_TEXT_TOP "Setup will install FieldPOS in the folder below."!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Install location"!define MUI_FINISHPAGE_RUN "$INSTDIR\FieldPOS.exe"!define MUI_FINISHPAGE_RUN_TEXT "Launch FieldPOS now"
Quick check
Try it
For chapter 5's assignment, ship a fully-branded installer:
- Replace
build/windows/icon.icowith your real product icon - Run the release script — confirm
header.bmpandwelcome.bmpwere regenerated - Build both installers (full + slim)
- Run the full installer on a test machine
- Confirm the Welcome wizard shows YOUR icon, not a default
- After install, confirm the Start menu shortcut and the running app both use your icon
Paste a screenshot of the branded Welcome page in notes.md.
You finished Building Desktop with Go API 🎉
Five chapters, 14 lessons. You can now:
- Scaffold + run + build a Wails desktop app
- Offline-first with SQLite, the outbox pattern, and a sync engine
- Frameless window with custom titlebar and OS-aware controls
- In-app auto-updater that swaps the binary from GitHub releases
- Branded NSIS installers (full + slim) with custom bitmaps
From here: try Building Web + Desktop + Mobile to add a web + admin + mobile companion to the same Go API.
Spot a typo? Have an idea?
Help us improve this lesson. One click opens a GitHub issue with the lesson URL pre-filled — suggest clearer wording, report a bug, or request more depth. The course keeps improving thanks to learners like you.
Suggest an improvement on GitHub