Replace NSIS / WiX
in minutes.
One config file. One CLI command. A fully branded, animated Windows installer your users will actually like.
// what you get
Everything an installer needs.
Nothing it doesn't.
Fully Branded
Set your logo, primary color, accent, font, and light/dark theme in config. The installer becomes yours — not an NSIS dialog.
Beautiful UI
Animated wizard with Welcome → License → Privacy → Options → Progress → Finish. Built with React + Framer Motion.
Windows-Native
Writes registry entries, desktop and Start Menu shortcuts, and Add/Remove Programs. No admin required by default.
TypeScript Config
defineConfig() with full Zod validation. Autocomplete in your IDE. No XML, no NSIS scripts, no surprises.
Drop-In
Works with any existing Electron app. Build with electron-builder --dir first, then npx painda build. Done.
Maintenance Mode
If the app is already installed, the wizard switches to Repair / Reinstall / Uninstall mode automatically.
// quick start
From zero to installer in 3 steps.
Install
Add to any Electron project as a dev dependency.
Configure
Create painda.config.ts. Set your brand, pages, and payload path.
Build
Outputs a branded installer EXE to your dist folder.
import { defineConfig } from "@painda/wizard";
export default defineConfig({
app: {
id: "com.example.myapp",
name: "My App",
version: "1.0.0",
publisher: "My Company",
},
branding: {
primaryColor: "#4f46e5",
accentColor: "#a855f7",
logo: "./assets/logo.png",
theme: "dark",
},
pages: {
license: { file: "./assets/license.txt", mustScroll: true },
options: { desktopShortcut: true, startMenuShortcut: true },
finish: { runApp: true },
},
payload: {
from: "./dist/win-unpacked",
executable: "MyApp.exe",
},
output: {
dir: "dist-installer",
filename: "${name}-Setup-${version}.exe",
},
});// wizard pages
Every screen, covered.
Enable only the pages you need. Each one is fully themed to match your brand.