Files
designcraft/packaging/windows/INSTALLATION.md
T

2.1 KiB

Windows installation policy checks

New installations default to the current account under Programs\ArtCraft\<App>. The first setup page offers installation for everyone. Scope is selected before duplicate checks and directory costing. An update uses the existing context's remembered exact folder; INSTALLFOLDER supplied explicitly is never replaced. It is a secure MSI property so the chosen folder reaches the elevated installer. Silent machine updates pass ALLUSERS=1. A cross-context copy is refused; changing context means uninstalling the old copy first.

App registration follows the selected context. Existing optional shortcuts and file-handler choices stay app-owned. No new cleanup operation or model/settings migration is introduced. Packaged resources remain package-owned; separately downloaded shared models are not caches and are outside this installer's ownership.

Repeatable metadata tests

On Windows with WiX 5.0.2 and its matching UI/Util extensions:

./packaging/windows/test-install-policy.ps1 -OutputDirectory ./target/install-policy-tests

The script builds x64, x86 and arm64 packages with deliberately non-executable payloads. It uses the actual package source and compiled database. A safe Windows Installer session checks 24 scope/registration/maintenance cases, remembered and explicit custom folders, sequencing, upgrade identity and the original registration inventory recorded in install-policy.json. The release packaging script runs the compiled checker before signing. Packaging CI runs the small fixture builds without compiling the Rust application.

Never install or distribute the NOT-INSTALLABLE.msi fixtures as an app. Passing these checks does not prove real installation, elevation, legacy-version upgrades, registry writes, optional shortcut/menu behaviour, cancellation, rollback or uninstall. Those still require the real payload in an authorised clean Windows test environment. Cross-architecture metadata is not execution evidence on those architectures. Existing open installer/association PRs must be reconciled before publication. Nothing here changes macOS/Linux native packaging conventions.