Unicode True !include "MUI2.nsh" !ifndef VERSION !define VERSION "2.1.0" !endif !define APP_NAME "ConvertGUI" !define EXE_NAME "convert.exe" !define UNINSTALL_REG "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" Name "${APP_NAME} ${VERSION}" OutFile "../dist/ConvertGUI-Setup-${VERSION}.exe" 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" !define MUI_UNICON "../build/windows/icon.ico" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !define MUI_FINISHPAGE_RUN "$INSTDIR\${EXE_NAME}" !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Russian" !macro RegisterExt EXT WriteRegStr HKCU "Software\Classes\SystemFileAssociations\${EXT}\shell\${APP_NAME}" "" "Convert with ${APP_NAME}" WriteRegStr HKCU "Software\Classes\SystemFileAssociations\${EXT}\shell\${APP_NAME}" "Icon" "$INSTDIR\${EXE_NAME},0" WriteRegStr HKCU "Software\Classes\SystemFileAssociations\${EXT}\shell\${APP_NAME}\command" "" '"$INSTDIR\${EXE_NAME}" -i "%1"' !macroend !macro UnregisterExt EXT DeleteRegKey HKCU "Software\Classes\SystemFileAssociations\${EXT}\shell\${APP_NAME}" !macroend Section "ConvertGUI Application (Required)" SEC_APP SectionIn RO SetOutPath "$INSTDIR" File "../dist/convert.exe" WriteRegStr HKCU "Software\${APP_NAME}" "InstallDir" "$INSTDIR" WriteUninstaller "$INSTDIR\uninstall.exe" WriteRegStr HKCU "${UNINSTALL_REG}" "DisplayName" "${APP_NAME}" WriteRegStr HKCU "${UNINSTALL_REG}" "DisplayVersion" "${VERSION}" WriteRegStr HKCU "${UNINSTALL_REG}" "Publisher" "m4xx1m" WriteRegStr HKCU "${UNINSTALL_REG}" "UninstallString" '"$INSTDIR\uninstall.exe"' WriteRegStr HKCU "${UNINSTALL_REG}" "DisplayIcon" "$INSTDIR\${EXE_NAME},0" WriteRegDWORD HKCU "${UNINSTALL_REG}" "NoModify" 1 WriteRegDWORD HKCU "${UNINSTALL_REG}" "NoRepair" 1 CreateDirectory "$SMPROGRAMS\${APP_NAME}" CreateShortcut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${EXE_NAME}" CreateShortcut "$SMPROGRAMS\${APP_NAME}\Uninstall ${APP_NAME}.lnk" "$INSTDIR\uninstall.exe" ; Check Microsoft Edge WebView2 Runtime (required on older Windows 10) SetRegView 32 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv" StrCmp $0 "" 0 webview2_done ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv" StrCmp $0 "" 0 webview2_done DetailPrint "Installing Microsoft Edge WebView2 Runtime..." nsExec::ExecToLog 'powershell -NoProfile -ExecutionPolicy Bypass -Command "Invoke-WebRequest -Uri https://go.microsoft.com/fwlink/p/?LinkId=2124703 -OutFile $\'$TEMP\wv2setup.exe$\'; Start-Process $\'$TEMP\wv2setup.exe$\' -ArgumentList $\'/silent$\',$\'/install$\' -Wait; Remove-Item $\'$TEMP\wv2setup.exe$\' -ErrorAction SilentlyContinue"' webview2_done: SectionEnd Section "Bundled FFmpeg & FFprobe" SEC_FFMPEG SetOutPath "$INSTDIR\bin" File "../dist/bin/ffmpeg.exe" File "../dist/bin/ffprobe.exe" SectionEnd Section "Windows Explorer Context Menu" SEC_CTX !insertmacro RegisterExt ".mp4" !insertmacro RegisterExt ".mkv" !insertmacro RegisterExt ".mov" !insertmacro RegisterExt ".avi" !insertmacro RegisterExt ".webm" !insertmacro RegisterExt ".m4v" !insertmacro RegisterExt ".flv" !insertmacro RegisterExt ".ts" !insertmacro RegisterExt ".wmv" SectionEnd Section "Desktop Shortcut" SEC_DESKTOP CreateShortcut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${EXE_NAME}" SectionEnd LangString DESC_APP ${LANG_ENGLISH} "Core ConvertGUI application and Start Menu shortcut." LangString DESC_APP ${LANG_RUSSIAN} "Основное приложение ConvertGUI и ярлык в меню Пуск." LangString DESC_FFMPEG ${LANG_ENGLISH} "Standalone static FFmpeg & FFprobe binaries (recommended if not installed in PATH)." LangString DESC_FFMPEG ${LANG_RUSSIAN} "Встроенные FFmpeg и FFprobe (рекомендуется, если не установлены в PATH)." LangString DESC_CTX ${LANG_ENGLISH} "Add 'Convert with ConvertGUI' to Windows Explorer right-click menu for video files." 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) !insertmacro MUI_DESCRIPTION_TEXT ${SEC_FFMPEG} $(DESC_FFMPEG) !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CTX} $(DESC_CTX) !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $(DESC_DESKTOP) !insertmacro MUI_FUNCTION_DESCRIPTION_END Section "Uninstall" !insertmacro UnregisterExt ".mp4" !insertmacro UnregisterExt ".mkv" !insertmacro UnregisterExt ".mov" !insertmacro UnregisterExt ".avi" !insertmacro UnregisterExt ".webm" !insertmacro UnregisterExt ".m4v" !insertmacro UnregisterExt ".flv" !insertmacro UnregisterExt ".ts" !insertmacro UnregisterExt ".wmv" Delete "$DESKTOP\${APP_NAME}.lnk" RMDir /r "$SMPROGRAMS\${APP_NAME}" Delete "$INSTDIR\bin\ffmpeg.exe" Delete "$INSTDIR\bin\ffprobe.exe" RMDir "$INSTDIR\bin" Delete "$INSTDIR\${EXE_NAME}" Delete "$INSTDIR\uninstall.exe" RMDir "$INSTDIR" DeleteRegKey HKCU "${UNINSTALL_REG}" DeleteRegKey HKCU "Software\${APP_NAME}" SectionEnd