You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(updater): use robocopy mirror on Windows to remove obsolete DLLs and assets during in-place updates #1377
In lib/core/updater/installers/update_install_utils.dart (buildWindowsReplaceBatch), the generated Windows batch script executes:
xcopy /E /Y /I "%SRC%\\*""%DST%\\"
Unlike Linux (buildLinuxBundleReplaceScript), which uses rsync -a --delete --exclude='QueryaData' --exclude='.portable' to clean up deleted/renamed files, xcopy is purely additive:
Renamed, replaced, or deleted DLLs (e.g. Flutter engine upgrades, native plugin binaries, ICU data files) from the previous installation remain indefinitely in the application directory.
Windows DLL search order can lead to stale binary loading, symbol mismatch crashes, or corrupted asset bundles after an in-place update.
Portable mode directories (QueryaData, .portable) are not explicitly protected from being overwritten if the archive contains default assets matching those paths.
Solution
Replace xcopy in buildWindowsReplaceBatch with robocopy /MIR:
Activity
ZhuchkaTriplesix commentedon Oct 11, 2026
Done in #1383 (merged into
dev).