diff --git a/ROADMAP.md b/ROADMAP.md
index b52abe28..e119e016 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -384,3 +384,27 @@ app's JSON control channel (`deckcraft --control PORT`).
| 2026-10-10 | minor | Stage checked against the new core-workflow gate: passes, stays alpha |
| 2026-10-10 | major | Restructured to craftrules `standards/progress-docs.md`: stage, two numbers, dimensions, features, languages; parity estimate moved to docs/target-app-parity.md, "Working today" to its evidence section, the alpha checklist to docs/roadmap.md |
| 2026-10-07 | major | Alpha checklist (~80% to a self-defined alpha), breadth ~80%, overall ~62%, ~190 h to full parity |
+
+## Packaging update — 2026-10-10
+
+Windows setup now uses the shared `craft-installer` native UI source, with install/repair/remove
+completion, cancellation and failure screens. Existing MSI ownership and upgrade identities are
+preserved; unattended modes remain unattended. Source/generator checks pass; native Windows
+installer acceptance with real release payloads is still pending. See [setup validation](packaging/windows/README.md).
+
+## Packaging update (2026-10-11)
+
+Windows setup now uses the suite's shared `craft-installer` UI, preserving existing folder,
+shortcut and launch options and app-owned installation policy. Install, uninstall and repair
+have explicit completion screens; cancellation and failure have separate endings. Source/profile
+checks, WiX UI library compilation for x64/x86/ARM64, PowerShell parsing and package identity
+comparisons pass. Native fixture MSI linking/UI tables pass on all three architectures, and
+Windows full UI install/repair/uninstall, x86 install/remove, folder upgrades, desktop choices
+and launch checks pass with fixtures. Native evidence and real-release acceptance limits
+are linked from
+[Windows packaging](packaging/windows/README.md).
+
+Windows Settings removal now opens the shared completion screen. Quiet install/removal
+remains unattended; Settings labels preserve compatibility with existing Launchers, and
+previous Modify policy is retained. Windows 11 fixture verification covers both installation
+scopes and x64/x86 removal, with full MSI validation on x64/x86/ARM64.
diff --git a/packaging/windows/README.md b/packaging/windows/README.md
new file mode 100644
index 00000000..4fd17204
--- /dev/null
+++ b/packaging/windows/README.md
@@ -0,0 +1,34 @@
+# Windows installer UI
+
+`installer-ui.wxs` is generated from the shared `craft-installer` crate in
+[craft-libs](https://github.com/storytold/craft-libs/tree/main/crates/installer).
+`package.ps1` compiles it with this app's package source. The common UI provides progress,
+repair/remove, and explicit install/uninstall/repair success, cancellation and failure screens.
+
+Regenerate or check from a sibling craft-libs checkout:
+
+```sh
+cargo run --locked -p craft-installer -- --write --app deckcraft ../deckcraft/packaging/windows/installer-ui.wxs
+cargo run --locked -p craft-installer -- --check --app deckcraft ../deckcraft/packaging/windows/installer-ui.wxs
+```
+
+Edit the shared templates/profile and regenerate; avoid editing this snapshot by hand. The
+profile retains this app's existing folder, shortcut and launch options; defaults, persistence,
+components, associations and signing stay in the app-owned source. Release builds require no
+sibling checkout, published crate or additional runtime dependency. `/qn`, `/qb` and `/passive`
+remain unattended and do not launch the app.
+
+Source/profile checks and native fixture MSI linking/UI table checks passed for x64, x86 and
+ARM64. All 14 profiles passed full UI install, missing-file repair and cached uninstall, and
+x86 silent install/removal. Folder upgrades, desktop choices and all six launch profiles also
+passed their Windows fixture checks. See the
+[Windows verification record](../../../craft-libs/docs/windows-installer-verification.md) for
+interactive results, scope validation and remaining acceptance checks with real release payloads.
+The shared crate includes reusable linking, full UI, option/upgrade/launch and x86 test runners.
+Windows Settings now uses a separate MSI-owned entry whose uninstall command selects full UI,
+including the completion screen. Its quiet command and direct `/qn`, `/qb`, `/passive` commands
+remain unattended. The main feature references `CraftInstallerSettings`; the shared snapshot
+owns this registration and hides the native MSI entry while retaining MSI repair/upgrade APIs.
+
+The Settings display name appends `(Craft Apps)` for compatibility with older Launchers; the
+hidden native MSI name stays unchanged. Existing ARP Modify policy is retained explicitly.
diff --git a/packaging/windows/deckcraft.wxs b/packaging/windows/deckcraft.wxs
index cf07e388..124093c0 100644
--- a/packaging/windows/deckcraft.wxs
+++ b/packaging/windows/deckcraft.wxs
@@ -2,7 +2,7 @@
+
@@ -45,7 +47,10 @@
+
+
+
diff --git a/packaging/windows/installer-ui.wxs b/packaging/windows/installer-ui.wxs
new file mode 100644
index 00000000..5d7a5425
--- /dev/null
+++ b/packaging/windows/installer-ui.wxs
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packaging/windows/package.ps1 b/packaging/windows/package.ps1
index 7ebbcbbe..a69fea0d 100644
--- a/packaging/windows/package.ps1
+++ b/packaging/windows/package.ps1
@@ -108,7 +108,7 @@ if ($env:CRAFT_FONTS_DIR) {
# ---- MSI ---------------------------------------------------------------------------------------
$Msi = Join-Path $Dist "deckcraft-$Version-windows-$Arch.msi"
Invoke-Native 'wix build' {
- wix build (Join-Path $PSScriptRoot 'deckcraft.wxs') -arch $Arch `
+ wix build (Join-Path $PSScriptRoot 'deckcraft.wxs') (Join-Path $PSScriptRoot 'installer-ui.wxs') -arch $Arch `
-d "Version=$MsiVersion" -d "BinDir=$Stage" -d "IconPath=$(Join-Path $Root 'assets\app-icon\deckcraft.ico')" `
-d "DocsDir=$Docs" -d "HasCraftFontLicences=$HasCraftFontLicences" `
-o $Msi