project-slim.nsi

Online bootstrapper — small download.

6 minmedium

The slim installer (project-slim.nsi) is ~22 MB. It uses the WebView2 online bootstrapper — a 1.8 MB exe that downloads the full runtime from Microsoft at install time. Right choice when bandwidth at install time matters.

When slim wins

  • Email distribution — most providers cap attachments at 25 MB
  • Web downloads where the conversion drops with file size (every extra MB hurts)
  • Users on metered cellular at install — they'd rather download 22 MB once and let WebView2 install over Wi-Fi later
  • GitHub release size limits (2 GB per asset is generous, but for older repos, smaller assets fit better)

The shape — minus the WebView2 bundle

build/windows/installer/project-slim.nsi (excerpt)
# Same Welcome/Directory/Install/Finish flow
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
# Wails' default bootstrapper macro — downloads WebView2 at install
!insertmacro wails.webview2runtime
Section
!insertmacro wails.setShellContext
!insertmacro wails.files # main binary
!insertmacro wails.writeUninstaller
SectionEnd

wails.webview2runtime drops a 1.8 MBMicrosoftEdgeWebview2Setup.exe bootstrapper. At install time, it runs that bootstrapper which contacts Microsoft and downloads the ~125 MB runtime if not present.

What happens on the customer's machine

  1. Customer downloads the 22 MB slim installer.
  2. Runs it. NSIS prompts: Welcome → Directory → click Install.
  3. NSIS extracts the main binary + bootstrapper.
  4. Bootstrapper checks if WebView2 is installed. If yes, skip. If no, download from Microsoft (needs internet).
  5. Total install time: 30s if WebView2 already there; 2-3 min on a slow connection if not.
Customer with no internet at install time runs the slim installer. The bootstrapper fails. The user sees a WebView2 install error mid-wizard. They're confused. Ship the full installer in that case.

When to ship full vs slim

ChannelUse
Web download from your siteSlim — convert better; users typically online
Email attachmentSlim — fits in < 25 MB caps
USB stick / on-prem installFull — assume no internet
Air-gapped customerFull
In-app auto-updateNeither — uses the raw .exe (chapter 4)

Ship both, let the customer pick

Grit's release script publishes both as GitHub release assets. Your download page can offer both with a brief description of when to use each. Most customers pick slim; the full is there for the edge case.

Your download page
Download FieldPOS
Recommended:
[ Download FieldPOS-Setup-Slim-v1.2.3.exe ] 22 MB
Don't have internet during install?
[ Download FieldPOS-Setup-v1.2.3.exe (full) ] 150 MB

Quick check

A customer-success ticket: 'Installer hangs at 60%.' Customer is on a satellite internet connection in a remote area. They downloaded the slim installer. What's most likely happening?

Try it

Compare the two installers side-by-side:

  1. Build both via your release script
  2. List the file sizes: FieldPOS-Setup-v0.1.0.exe + FieldPOS-Setup-Slim-v0.1.0.exe
  3. Install the slim version on a connected PC. Time how long it takes from double-click to first launch.
  4. Uninstall.
  5. Repeat with the full version on a disconnected PC.

Paste your numbers in notes.md.

What's next

Last lesson — the branded MUI bitmaps. Make the installer look like YOUR product, not a default NSIS template.

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