From 7f267193e48471bb293c5346869f122d90efad3e Mon Sep 17 00:00:00 2001 From: m4xx1m Date: Thu, 12 Nov 2026 20:50:37 +0300 Subject: [PATCH] fix(installer): smooth in-place updates with auto-close of running app and overwrite --- installer/installer.nsi | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/installer/installer.nsi b/installer/installer.nsi index fdb03e7..ee10e2f 100644 --- a/installer/installer.nsi +++ b/installer/installer.nsi @@ -15,6 +15,7 @@ InstallDir "$LOCALAPPDATA\Programs\${APP_NAME}" InstallDirRegKey HKCU "Software\${APP_NAME}" "InstallDir" RequestExecutionLevel user SetCompressor /SOLID lzma +SetOverwrite on !define MUI_ABORTWARNING !define MUI_ICON "../build/windows/icon.ico" @@ -104,6 +105,23 @@ LangString DESC_CTX ${LANG_ENGLISH} "Add 'Convert with ConvertGUI' to Windows Ex LangString DESC_CTX ${LANG_RUSSIAN} "Добавить «Convert with ConvertGUI» в контекстное меню видеофайлов Проводника." LangString DESC_DESKTOP ${LANG_ENGLISH} "Create a shortcut on the Desktop." LangString DESC_DESKTOP ${LANG_RUSSIAN} "Создать ярлык на Рабочем столе." +LangString MSG_RUNNING ${LANG_ENGLISH} "${APP_NAME} is currently running.$\r$\n$\r$\nClick OK to close it and proceed with the update, or Cancel to abort." +LangString MSG_RUNNING ${LANG_RUSSIAN} "Приложение ${APP_NAME} сейчас запущено.$\r$\n$\r$\nНажмите ОК, чтобы закрыть его и продолжить обновление, или Отмена для выхода." + +Function .onInit + check_running: + nsExec::ExecToStack 'cmd /c tasklist /FI "IMAGENAME eq ${EXE_NAME}" | find /I "${EXE_NAME}"' + Pop $0 + StrCmp $0 "0" 0 not_running + MessageBox MB_OKCANCEL|MB_ICONQUESTION $(MSG_RUNNING) IDOK close_it IDCANCEL abort_it + abort_it: + Abort + close_it: + nsExec::ExecToLog 'taskkill /F /IM ${EXE_NAME}' + Sleep 500 + Goto check_running + not_running: +FunctionEnd !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC_APP} $(DESC_APP)