Pinned directories are now opened with listing access so the handle takes part in share checks and a rename or replacement of the directory under the helper fails; a metadata-only handle did not participate. A DSH_HOME published as an environment variable protects overlapping targets, and /KEEP_APP_DATA retains data alongside --updated, matching the flags electron-builder passes to an older uninstaller. The remover clears read-only attributes, keeps deleting siblings after a locked file, and removes only ordinary empty scope parents below %APPDATA% instead of an NSIS RMDir that would also unlink a junction. The redundant un.DataInit extraction is gone. The native regression now runs from the installer test driver and covers the protected root, rename blocking, read-only and locked files and parent removal; the uninstaller smoke uses a per-run scope, polls for the temp-copy handoff, asserts InstallLocation after each silent install, and adds /KEEP_APP_DATA and DSH_HOME-inside cases. The Agent Note keeps the topic's 2026-09-08 filename, states the amendment in the decision, and defers macOS.
20 lines
695 B
JSON
20 lines
695 B
JSON
{
|
|
"launchCheckboxState": 1,
|
|
"nativeProgressVisible": false,
|
|
"cases": [
|
|
"enter-validates-current-path-and-unchecked-launch",
|
|
"completion-preserves-window-position",
|
|
"welcome-ready-before-first-show",
|
|
"welcome-presented-on-first-show",
|
|
"successful-install-paints-100-before-finish",
|
|
"registered-directory-with-trailing-separators",
|
|
"registered-directory-and-checked-launch",
|
|
"launch-failure-retry-and-prompt-dismissal",
|
|
"progress-remains-monotonic-across-native-resets",
|
|
"running-app-preserved-and-native-progress-hidden",
|
|
"silent-update-retains-directory-and-ignores-unrelated-process",
|
|
"invalid-destination-rejection",
|
|
"uninstall"
|
|
]
|
|
}
|