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 }