Installer: stop the browser helper before updating or uninstalling
ci / build (ubuntu-22.04) (push) Canceled after 0s
ci / build (windows-2025) (push) Canceled after 0s
ci / deny (push) Canceled after 0s

A browser keeps kestrove-nmh.exe running while the extension is connected,
so an update couldn't replace it and stopped half way: the old version's
uninstall had already removed the browser registration, and the new one was
never written. The installer only closes the app itself, so the hooks now
stop the helper too. It holds no state; the browser starts it again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-30 09:21:12 +04:00
co-authored by Claude Opus 5.5
parent c2273e202e
commit 70ccff34f2
+14
View File
@@ -9,6 +9,19 @@
!define KV_CHROME_ORIGINS '"chrome-extension://pmhfoafjoogobhfadaicklhkldgnafmk/", "chrome-extension://kogapfibnnpeapfcjkkpgjddbhnjfein/"' !define KV_CHROME_ORIGINS '"chrome-extension://pmhfoafjoogobhfadaicklhkldgnafmk/", "chrome-extension://kogapfibnnpeapfcjkkpgjddbhnjfein/"'
!define KV_FIREFOX_IDS '"[email protected]"' !define KV_FIREFOX_IDS '"[email protected]"'
; A browser keeps kestrove-nmh.exe running while the extension is connected, which locks the file: an update then
; can't replace it and an uninstall can't delete it. The installer only closes the app itself, so stop the helper
; too. It holds no state (it only relays encrypted messages); the browser starts it again when it's next needed.
!macro KV_STOP_HELPER
nsExec::Exec '"$SYSDIR\taskkill.exe" /F /IM kestrove-nmh.exe'
Pop $0
Sleep 500
!macroend
!macro NSIS_HOOK_PREINSTALL
!insertmacro KV_STOP_HELPER
!macroend
!macro NSIS_HOOK_POSTINSTALL !macro NSIS_HOOK_POSTINSTALL
FileOpen $0 "$INSTDIR\${KV_HOST}.chrome.json" w FileOpen $0 "$INSTDIR\${KV_HOST}.chrome.json" w
FileWrite $0 '{"name": "${KV_HOST}", "description": "Kestrove", "path": "kestrove-nmh.exe", "type": "stdio", "allowed_origins": [${KV_CHROME_ORIGINS}]}' FileWrite $0 '{"name": "${KV_HOST}", "description": "Kestrove", "path": "kestrove-nmh.exe", "type": "stdio", "allowed_origins": [${KV_CHROME_ORIGINS}]}'
@@ -25,6 +38,7 @@
!macroend !macroend
!macro NSIS_HOOK_PREUNINSTALL !macro NSIS_HOOK_PREUNINSTALL
!insertmacro KV_STOP_HELPER
DeleteRegKey HKCU "Software\Google\Chrome\NativeMessagingHosts\${KV_HOST}" DeleteRegKey HKCU "Software\Google\Chrome\NativeMessagingHosts\${KV_HOST}"
DeleteRegKey HKCU "Software\Chromium\NativeMessagingHosts\${KV_HOST}" DeleteRegKey HKCU "Software\Chromium\NativeMessagingHosts\${KV_HOST}"
DeleteRegKey HKCU "Software\Microsoft\Edge\NativeMessagingHosts\${KV_HOST}" DeleteRegKey HKCU "Software\Microsoft\Edge\NativeMessagingHosts\${KV_HOST}"