From f149604eb679e0d5eade68d7c57d1ae15c767a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9D=A4=E6=98=AF=E7=BA=B1=E9=9B=BE=E9=85=B1=E5=93=9F?= =?UTF-8?q?=EF=BD=9E?= <49941141+Dragon1573@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:59:59 +0000 Subject: [PATCH] fix(installer): prompt to terminate running instance before uninstall or overwrite (#8519) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(installer): prompt to terminate running instance before uninstall or overwrite * fix(installer): detect running application instance during installation * docs(changelog): add changelog entry for windows installer fix Add release note entry for detecting running instances before reinstalling or overwriting in the Windows installer. Assisted-by: VSCode Copilot SDK (Gemini 3.8 Flash) Signed-off-by: ❤是纱雾酱哟~ <49941141+Dragon1573@users.noreply.github.com> --------- Signed-off-by: ❤是纱雾酱哟~ <49941141+Dragon1573@users.noreply.github.com> --- Changelog.md | 4 ++++ src-tauri/packages/windows/installer.nsi | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Changelog.md b/Changelog.md index 3187e4fa9..9c2f97ae1 100644 --- a/Changelog.md +++ b/Changelog.md @@ -26,6 +26,10 @@ - 修复全局模式缺少 `GLOBAL` 策略组,无法单独选择全局出口 +**🖥️ Windows** + +- Windows:修复安装程序重新安装或覆盖时未提示退出运行中应用,导致卸载报错或覆盖失败的问题 +
diff --git a/src-tauri/packages/windows/installer.nsi b/src-tauri/packages/windows/installer.nsi index 763ee89f4..9df40e8c6 100644 --- a/src-tauri/packages/windows/installer.nsi +++ b/src-tauri/packages/windows/installer.nsi @@ -21,6 +21,7 @@ ManifestDPIAwareness PerMonitorV2 !include "FileAssociation.nsh" !include "Win\COM.nsh" !include "Win\Propkey.nsh" +!include "Win\RestartManager.nsh" !include "WinVer.nsh" !include "LogicLib.nsh" !include "StrFunc.nsh" @@ -332,6 +333,8 @@ Function PageLeaveReinstall ${EndIf} reinst_uninstall: + !insertmacro CheckIfAppIsRunning "$INSTDIR\${MAINBINARYNAME}.exe" "${PRODUCTNAME}" + HideWindow ClearErrors @@ -368,7 +371,10 @@ Function PageLeaveReinstall MessageBox MB_ICONEXCLAMATION "$(unableToUninstall)" Abort ${EndIf} + Return + reinst_done: + !insertmacro CheckIfAppIsRunning "$INSTDIR\${MAINBINARYNAME}.exe" "${PRODUCTNAME}" FunctionEnd ; 5. Choose install directory page @@ -901,8 +907,7 @@ Section Install nsExec::Exec 'netsh int tcp res' - !include "Win\RestartManager.nsh" - !insertmacro CheckIfAppIsRunning "${MAINBINARYNAME}.exe" "${PRODUCTNAME}" + !insertmacro CheckIfAppIsRunning "$INSTDIR\${MAINBINARYNAME}.exe" "${PRODUCTNAME}" !insertmacro CheckAllVergeProcesses ; Ensure startup folders exist @@ -1101,7 +1106,7 @@ Section Uninstall !insertmacro NSIS_HOOK_PREUNINSTALL !endif - !insertmacro CheckIfAppIsRunning "${MAINBINARYNAME}.exe" "${PRODUCTNAME}" + !insertmacro CheckIfAppIsRunning "$INSTDIR\${MAINBINARYNAME}.exe" "${PRODUCTNAME}" !insertmacro CheckAllVergeProcesses !insertmacro RemoveVergeService