Files
designcraft/packaging/windows
Jeremy d7e57d2016 fix(installer): resolve the wizard scope and folder correctly
Real msiexec runs (per-user and all-users, silent and wizard) found two defects
that the metadata fixtures cannot see:

- "Only for me" published ALLUSERS=2, so FindRelatedProducts treated the run as
  per-machine and skipped the existing per-user copy. An interactive upgrade
  left two registered products and uninstall left files behind. The page now
  leaves ALLUSERS unset for a per-user choice.
- Windows Installer resolves Program Files once, for the context it started in,
  so choosing "Everyone" in the wizard installed into the user profile with a
  machine-wide registration. The wizard now sets the new-install folder itself
  after the choice (Program Files, Program Files (x86) for 32-bit, or the
  per-user Programs folder). Silent installs are unchanged.

check-install-policy.ps1 now fails if either regresses.
2026-10-27 15:32:18 +00:00
..

Windows installer UI

installer-ui.wxs is generated from the shared craft-installer crate in craft-libs. 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:

cargo run --locked -p craft-installer -- --write --app designcraft ../designcraft/packaging/windows/installer-ui.wxs
cargo run --locked -p craft-installer -- --check --app designcraft ../designcraft/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 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.