Commit Graph
4045 Commits
Author SHA1 Message Date
Jeremy 5dea67e348 docs(installer): say that an upgrade reuses the recorded folder even if it was deleted
The restore actions use the recorded folder without checking that it still
exists, so an upgrade creates it again rather than using the default folder.
2026-10-27 21:13:30 +00:00
Jeremy 59d482578a test(installer): cover the compiled folder searches, resolver chains and wizard folder replay
The policy check now reads the compiled AppSearch and RegLocator rows for the
remembered-folder properties (registry root, key, value name and type for both
scopes) and runs the DIR, FOLDER, PATH and legacy exe actions in sequence order
against seeded values, so their precedence and the preset-folder guard cannot
regress. It also replays the wizard folder actions in sequence order (a
remembered folder beats the new-install default, a typed folder beats both) and
requires the machine restore action between the scope page and costing.
2026-10-27 21:13:28 +00:00
aiongg 97eb5fdb83 ci: use storytold/craft-common-actions at the merged installer-policy commit 2026-10-27 20:51:53 +00:00
Jeremy b0485b0427 fix(installer): check the exact architecture-specific machine folder
The pre-signing check matched any folder named Program Files, so it rejected
a valid MSI when Windows resolves Program Files elsewhere, accepted the 64-bit
root for an x86 package and accepted a different app name. Build the expected
folder from the package architecture's resolved root and the policy name.
2026-10-27 19:13:20 +00:00
Jeremy 79f662a584 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:29 +00:00
Jeremy ea5db140fb docs(installer): say that silent installs are per-user and when the scope page appears 2026-10-27 12:26:56 +00:00
Jeremy 51ecbfece8 docs(installer): note that the 32-bit all-users folder is Program Files (x86); tidy wording 2026-10-27 12:25:19 +00:00
Jeremy 3d40cf08e7 docs(installer): describe the per-user default install location and scope 2026-10-27 12:09:03 +00:00
Jeremy 148cc09be1 fix(installer): harden install-policy checks and packaging-lint workflow 2026-10-27 12:01:29 +00:00
Jeremy bf86920980 fix(installer): address scope and ARM64 review feedback 2026-10-27 12:01:28 +00:00
Jeremy ea9130676b feat(installer): default to a per-user ArtCraft folder 2026-10-27 12:01:28 +00:00
skylar taylor-barrick 662df66f1c Preserve queued file drops across dialogs and restore Flatpak sources (#2975) 2026-10-27 03:50:41 +01:00
aiongg c9860ea7a3 Merge pull request #3103 from aiongg/layout
refactor: shared module layout (craft-contrib#20)
2026-10-26 21:31:21 -04:00
aiongg 259208948b test: the format-message scan skips only inline test modules 2026-10-26 21:51:51 +00:00
aiongg 69048937d0 docs: update source paths after the layout moves 2026-10-26 21:39:56 +00:00
aiongg 26760e44d2 refactor(lightcraft-ui-egui): split app.rs into app/ 2026-10-26 21:39:56 +00:00
aiongg cb2a922383 refactor(lightcraft-ui-egui): split lib.rs into crate-root modules 2026-10-26 21:39:56 +00:00
aiongg 20c26b83c8 refactor(lightcraft-ui-egui): split dialogs/import.rs into dialogs/import/ 2026-10-26 21:39:56 +00:00
aiongg b0356787e3 refactor(lightcraft-ui-egui): split dialogs/settings.rs into dialogs/settings/ 2026-10-26 21:39:56 +00:00
aiongg 56494a1308 refactor(lightcraft-ui-egui): split dialogs.rs into dialogs/ 2026-10-26 21:39:56 +00:00
aiongg 0896aa86ce refactor(lightcraft-ui-egui): split state.rs into state/ 2026-10-26 21:39:56 +00:00
aiongg db31bf3e59 refactor(lightcraft-ui-egui): split panels/right.rs into panels/right/ 2026-10-26 21:39:56 +00:00
aiongg 8c194d155e refactor(lightcraft-ui-egui): split panels/edit.rs into panels/edit/ 2026-10-26 21:39:56 +00:00
aiongg 4e13f61ba0 refactor(lightcraft-ui-egui): split panels/left.rs into panels/left/ 2026-10-26 21:39:56 +00:00
aiongg 15ece5cbd0 refactor(lightcraft-ui-egui): split menus.rs into menus/ 2026-10-26 21:39:56 +00:00
aiongg 401e047acc refactor(lightcraft-ui-egui): split panels/detail.rs into panels/detail/ 2026-10-26 21:39:56 +00:00
aiongg 2e5597d48a refactor(lightcraft): split main.rs into crate-root modules 2026-10-26 21:39:56 +00:00
aiongg 59d1d6f0f8 refactor(xtask): point the raw corpus test and ci-quick map at the moved sources 2026-10-26 21:39:56 +00:00
aiongg 27abe75572 refactor(xtask): split main.rs into crate-root modules 2026-10-26 21:39:56 +00:00
aiongg 8d8994ec87 refactor(lightcraft-engine): split cmd/library.rs into cmd/library/ 2026-10-26 21:39:56 +00:00
aiongg ff614cbe43 refactor(lightcraft-engine): split import.rs into import/ 2026-10-26 21:39:56 +00:00
aiongg 39d6a8d668 refactor(lightcraft-engine): split rename.rs into rename/ 2026-10-26 21:39:55 +00:00
aiongg 8942984c35 refactor(lightcraft-engine): split denoise.rs into denoise/ 2026-10-26 21:39:55 +00:00
aiongg 21304db29b refactor(lightcraft-engine): split media.rs into media/ 2026-10-26 21:08:55 +00:00
aiongg 50509093b6 refactor(lightcraft-engine): split camera_preview.rs into camera_preview/ 2026-10-26 21:08:55 +00:00
aiongg e3c594cab8 refactor(lightcraft-engine): split export.rs into export/ 2026-10-26 21:08:55 +00:00
aiongg 9b197d8215 refactor(lightcraft-engine): split files.rs into files/ 2026-10-26 21:08:55 +00:00
aiongg 745111dc6d refactor(lightcraft-ui-egui): move panels/right tests to panels/right/tests.rs 2026-10-26 21:05:54 +00:00
aiongg 658f3c26d5 refactor(lightcraft-engine): move denoise gpu_tests to denoise/gpu_tests.rs 2026-10-26 21:05:53 +00:00
aiongg 7707047684 refactor(lightcraft-engine): move media thumbnail_hash_tests to media/thumbnail_hash_tests.rs 2026-10-26 21:05:53 +00:00
aiongg b17f6cbe93 refactor(lightcraft-ui-egui): move progress.rs to widgets/progress.rs 2026-10-26 20:41:12 +00:00
aiongg 0d3ee604f3 refactor(lightcraft-ui-egui): move text_field.rs to widgets/text_field.rs 2026-10-26 20:41:12 +00:00
aiongg 8a9de1f616 refactor(lightcraft-ui-egui): move rating.rs to widgets/rating.rs 2026-10-26 20:41:12 +00:00
aiongg 204f8ea365 refactor(lightcraft-ui-egui): move button.rs to widgets/button.rs 2026-10-26 20:41:12 +00:00
aiongg 2a4bd99a4d refactor(lightcraft-ui-egui): move date_picker.rs to widgets/date_picker.rs 2026-10-26 20:41:12 +00:00
aiongg 6ea7f1dc55 refactor(lightcraft-ui-egui): move album_picker.rs to widgets/album_picker.rs 2026-10-26 20:41:12 +00:00
aiongg 74836daa84 refactor(lightcraft-ui-egui): move menu_level.rs to menus/menu_level.rs 2026-10-26 20:41:12 +00:00
aiongg 64b6a0e3c2 refactor(lightcraft-ui-egui): move menubar.rs to menus/menubar.rs 2026-10-26 20:41:12 +00:00
aiongg c7171d6834 refactor(lightcraft-ui-egui): move panels/slide_titles.rs to dialogs/settings/slide_titles.rs 2026-10-26 20:41:12 +00:00
aiongg f3d8862239 refactor(lightcraft-ui-egui): move panels/slide_templates.rs to dialogs/settings/slide_templates.rs 2026-10-26 20:41:12 +00:00