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