Windows Deploy Kit

SetupPilot

Catches the unattend.xml typo that silently images 200 machines wrong.

Free right now — no account, no card

Get SetupPilot free Windows & Mac · one file, nothing to install

Preview

1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.

Interface design SetupPilot, 1 of 1
Screenshot SetupPilot running on Windows today

Free while we’re in preview

Get SetupPilot

Catches the unattend.xml typo that silently images 200 machines wrong.

The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.

One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.

Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.

  • One file — no installer
  • Runs on your machine, offline
  • Source code published below

Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. At launch, SetupPilot is included in every plan along with the rest of the range.

One letter, two hundred wrong machines

Change pass="oobeSystem" to pass="oobesystem" and Windows Setup doesn’t complain. It ignores the entire section without a word, and every machine you image comes out wrong. setuppilot check unattend.xml catches that, tells you which pass you meant, and gives you the line it’s on. It also finds duplicate passes, components missing processorArchitecture, amd64 mixed with x86, a ComputerName over 15 characters or ending in a hyphen, and plaintext passwords.

Exit status 2 on any error finding, so it drops into a build pipeline as it is.

Generating and sharing

setuppilot new writes an answer file from plain flags: computer name, locale, time zone, an admin account, skip-OOBE, a UEFI or BIOS disk layout. setuppilot redact writes a copy with every password and product key replaced and everything else preserved byte for byte, so it still diffs cleanly against the original and the line numbers line up. Both are dry runs until you add --apply.

What passing actually means

It means the file has none of the structural faults SetupPilot knows how to find. This is not the Microsoft XSD. It doesn’t know which settings are legal in which pass, can’t tell you a ProductKey is fake, and knows nothing about your edition or drivers. Pilot one machine before you image the fleet.

Reading on the job itself

Advanced & technical details Command-line builds, source code, checksums and a recorded session — for developers and IT teams

A working command-line build of the answer-file checker: it validates the XML, the configuration passes, per-component architecture and the computer-name rules, then reports each problem with the line it is on. Passwords and product keys are never printed in any output mode, and it can write a redacted copy for sharing. Applying a file to a live install is out of scope.

Naming status

Working name only — brand verdict **RENAME** (High). Collision: SetupPilot. Prefer a fresh coined name.

What it draws on

Existing paid software whose best ideas shaped this program: NTLite, WinToUSB Professional, EasyUEFI Professional, Macrium Reflect X.

Command line

There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.

SetupPilot 0.1.0 -- build and check Windows unattended answer files (unattend.xml)

Usage:
  setuppilot new --out <file> [options] [--apply]
  setuppilot check <unattend.xml> [--json]
  setuppilot show  <unattend.xml> [--json]
  setuppilot redact <unattend.xml> --out <file> [--apply]
  setuppilot -h | --help | help

Commands:
  new       Generate a valid answer file from plain options. Writes nothing
            unless --apply is given; without it the document is printed to
            stdout as a preview.
  check     Audit an answer file and report ERROR / WARN / INFO findings with
            line numbers: malformed XML, wrong root or namespace, misspelled
            configuration passes, duplicate passes or components, components
            missing name/processorArchitecture/publicKeyToken, mixed processor
            architectures, illegal or over-long ComputerName, and plaintext
            passwords (reported, never printed).
  show      Print a readable summary: passes, components, and the settings
            that were actually set.
  redact    Write a copy with every password and product-key value replaced,
            so an answer file can be attached to a ticket safely. Writes
            nothing unless --apply is given.

Flags for new:
  --out <file>            Destination path (required).
  --computer-name <name>  ComputerName to set (default "*", random).
  --locale <tag>          Locale for input/system/UI/user (default en-US).
  --timezone <name>       Windows time zone id (default UTC).
  --admin-user <name>     Create this local account in Administrators.
  --skip-oobe             Suppress the out-of-box-experience screens.
  --disk-layout uefi|bios Emit a wipe-and-partition DiskConfiguration.
  --apply                 Actually write the file.

Flags for check / show:
  --json                  Emit machine-readable JSON instead of text.

Flags for redact:
  --out <file>            Destination path (required).
...

Recorded from the shipped binary, not written by hand.

Source

Every file the program is built from:

console.go · console_test.go · guided.go · main.go

SHA-256 checksums · build instructions & scope notes · full build plan