157 lines
6.5 KiB
NSIS
157 lines
6.5 KiB
NSIS
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
|