From 67834d1b9206c945cac9eabf4012e4ff7014d784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Papp?= Date: Wed, 2 Sep 2026 10:54:16 +0200 Subject: [PATCH] [client] Close the UI before InstallValidate in the MSI The WiX CloseApplication action runs deferred, right before InstallFiles. By then InstallValidate has already asked Restart Manager about the files in use. When msiexec runs as LocalSystem (third-party deployment tools, scheduled tasks) and netbird-ui.exe runs in the interactive user's session, Restart Manager reports a session mismatch, so the installer schedules the UI binary for replacement on the next reboot and returns 3010. Killing the UI afterwards is too late, the file stays on the old version until a real reboot happens. Replace the CloseApplication with an immediate WixQuietExec custom action running taskkill /F /IM netbird-ui.exe, scheduled before InstallValidate. The file is no longer held open when the in-use check runs, InstallFiles overwrites it directly and no reboot is scheduled. Return is ignored because taskkill exits non-zero when no UI is running. The action also runs on uninstall so removal does not require a reboot either. --- client/netbird.wxs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/netbird.wxs b/client/netbird.wxs index f30a7aa7e..49a0ac4b1 100644 --- a/client/netbird.wxs +++ b/client/netbird.wxs @@ -74,7 +74,9 @@ - + + +