diff --git a/ROADMAP.md b/ROADMAP.md
index c88aecc9..103b5904 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -145,3 +145,8 @@ Ranked; detail and the full beta checklist in [docs/roadmap.md](docs/roadmap.md)
## Shared UI workspace integration
Tool Sets, Layers and Properties use shared docking with persisted layouts, keyboard focus and compact toolbar overflow. No milestone percentage change.
+
+
+### Windows installer unification — release preparation, 2026-10-12
+
+The shared craft-installer UI preserves this revision's install options and provides persistent installation, repair and Windows Settings removal completion screens. Silent modes stay unattended. Earlier Windows acceptance is recorded in packaging/windows/README.md; normal CI and production-profile upgrade qualification against pinned current releases are in progress. No release or PR has been published.
diff --git a/docs/roadmap.md b/docs/roadmap.md
index 3d46be9d..2dad711c 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -108,3 +108,8 @@ AutoLISP surface, AI features with openly licensed local models, and every remai
| 2026-10-10 | minor | Merged main: fmt fixed, Ukrainian catalog noted in M13, ready for real work 38% |
| 2026-10-10 | minor | Alpha gate added (5 core workflows, 4 failing); stage pre-alpha |
| 2026-10-10 | major | Created from the old ROADMAP's milestone table and current focus; milestones re-scored by depth; beta checklist added |
+
+
+### Windows installer unification — release preparation, 2026-10-12
+
+The shared craft-installer UI preserves this revision's install options and provides persistent installation, repair and Windows Settings removal completion screens. Silent modes stay unattended. Earlier Windows acceptance is recorded in packaging/windows/README.md; normal CI and production-profile upgrade qualification against pinned current releases are in progress. No release or PR has been published.
diff --git a/packaging/windows/README.md b/packaging/windows/README.md
new file mode 100644
index 00000000..0a5ed333
--- /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 cadcraft ../cadcraft/packaging/windows/installer-ui.wxs
+cargo run --locked -p craft-installer -- --check --app cadcraft ../cadcraft/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/cadcraft.wxs b/packaging/windows/cadcraft.wxs
index 50f82f6f..ec93ac29 100644
--- a/packaging/windows/cadcraft.wxs
+++ b/packaging/windows/cadcraft.wxs
@@ -3,7 +3,7 @@
CADCraft MSI (WiX Toolset v5: `dotnet tool install -g wix`, plus the WixUI extension:
`wix extension add -g WixToolset.UI.wixext/5.0.2`). Built by package.ps1:
- wix build cadcraft.wxs -arch x64 -ext WixToolset.UI.wixext -d Version=1.2.3 -d BinDir=... -d IconPath=... -o out.msi
+ wix build cadcraft.wxs installer-ui.wxs -arch x64 -ext WixToolset.UI.wixext -d Version=1.2.3 -d BinDir=... -d IconPath=... -o out.msi
Per-machine install into Program Files, a Start Menu shortcut, an optional desktop shortcut, and
CADCraft offered under "Open with" for .dxf and .dwg drawings (without taking over the user's
@@ -42,7 +42,7 @@
-
+
@@ -95,73 +97,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packaging/windows/installer-ui.wxs b/packaging/windows/installer-ui.wxs
new file mode 100644
index 00000000..7415c163
--- /dev/null
+++ b/packaging/windows/installer-ui.wxs
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packaging/windows/package.ps1 b/packaging/windows/package.ps1
index a6b8cf23..15fddc83 100644
--- a/packaging/windows/package.ps1
+++ b/packaging/windows/package.ps1
@@ -12,9 +12,8 @@
warning when no signing secrets are set).
Needs: Rust (MSVC toolchain + the target), the Windows SDK (rc.exe, signtool.exe),
- and WiX v5 with its UI extension (the setup wizard):
+ and WiX v5:
dotnet tool install --global wix --version 5.0.2
- wix extension add -g WixToolset.UI.wixext/5.0.2
.EXAMPLE
pwsh packaging/windows/package.ps1 -Arch x64
@@ -95,7 +94,7 @@ Copy-Item (Join-Path $Bin 'cadcraft.exe'), (Join-Path $Bin 'cadcraft-cli.exe') $
# ---- MSI ---------------------------------------------------------------------------------------
$Msi = Join-Path $Dist "cadcraft-$Version-windows-$Arch.msi"
Invoke-Native 'wix build' {
- wix build (Join-Path $PSScriptRoot 'cadcraft.wxs') -arch $Arch -ext WixToolset.UI.wixext `
+ wix build (Join-Path $PSScriptRoot 'cadcraft.wxs') (Join-Path $PSScriptRoot 'installer-ui.wxs') -arch $Arch `
-d "Version=$MsiVersion" -d "BinDir=$Stage" -d "IconPath=$(Join-Path $Root 'assets\app-icon\cadcraft.ico')" `
-o $Msi
}