Wizard pages
The wizard is composed of up to eight pages. Each page is opt-out by default, configurable via the pages key in painda.config.ts.
Welcome
The first thing users see — branded splash with logo, app name, version, and an optional tagline.
pages: {
welcome: {
title: "Welcome to My App",
subtitle: "Version 1.0.0",
body: "This wizard will install My App on your computer.",
},
},License
EULA / Terms of Service page. Loaded from a .txt or .md file. The user must accept before proceeding.
license: {
file: "./installer-assets/license.txt",
mustScroll: true, // require the user to scroll to the bottom
},mustScroll: true to enforce that users actually see the full agreement before they can click Accept. Defaults to false.Privacy
Optional dedicated privacy policy page. Loaded the same way as the license.
privacy: {
file: "./installer-assets/privacy.txt",
},Options
Where the user picks the install location and shortcut preferences.
options: {
allowChangeInstallPath: true,
defaultPath: "${LOCALAPPDATA}/Programs/${appId}",
desktopShortcut: true,
startMenuShortcut: true,
launchOnStartup: false,
},Available path tokens:
${LOCALAPPDATA}—%LOCALAPPDATA%on Windows${PROGRAMFILES}—%PROGRAMFILES%${appId}— yourapp.id${appName}— yourapp.name
%LOCALAPPDATA% so the installer does not require admin elevation. Switch to %PROGRAMFILES% only if you need a system-wide install.Progress
Animated progress bar with live status during file extraction and shortcut creation. No configuration — driven entirely by the install pipeline.
Maintenance
Shown automatically when the user runs the installer and the app is already installed. Offers three actions:
- Repair — re-extract files, leave settings
- Reinstall — full clean reinstall
- Uninstall — remove the app completely
Update
Triggered when launched by electron-updater with the update flag. Shows a streamlined progress UI and skips the Welcome / License pages.
Finish
Closing page with optional confetti, a launch checkbox, and custom links.
finish: {
runApp: true,
links: [
{ label: "Documentation", url: "https://example.com/docs" },
{ label: "Support", url: "https://example.com/support" },
],
},