@echo off setlocal EnableExtensions EnableDelayedExpansion :: ======================================================== :: CONFIG :: ======================================================== set "APP_NAME=ebook2audiobook" set "SCRIPT_DIR=%~dp0" set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%" set "REAL_INSTALL_DIR=%SCRIPT_DIR%" set "SCRIPT_NAME=%~nx0" set "STARTMENU_DIR=%APPDATA%\Microsoft\Windows\Start Menu\Programs\%APP_NAME%" set "DESKTOP_LNK=%USERPROFILE%\Desktop\%APP_NAME%.lnk" set "INSTALLED_LOG=%SCRIPT_DIR%\.installed" set "CONDA_HOME=%USERPROFILE%\Miniforge3" set "CONDA_PATH=%CONDA_HOME%\condabin" :: Honor SCOOP env var if set, otherwise default user-install location if defined SCOOP (set "SCOOP_HOME=%SCOOP%") else (set "SCOOP_HOME=%USERPROFILE%\scoop") :: ======================================================== echo ======================================================== echo %APP_NAME% Uninstaller echo ======================================================== echo Install location: echo %REAL_INSTALL_DIR% echo. :: ======================================================== :: USER CONFIRMATION :: ======================================================== echo ======================================================== echo This will uninstall %APP_NAME%. echo Components listed in .installed will be removed. echo. echo Press a key to continue . . . echo ======================================================== pause >nul echo. :: ======================================================== :: TERMINATE APP PROCESS ONLY :: ======================================================== tasklist | find /i "%APP_NAME%.exe" >nul && ( echo Terminating %APP_NAME%.exe taskkill /IM "%APP_NAME%.exe" /F >nul 2>&1 ) :: ======================================================== :: PROCESS .installed (CONTROLLED REMOVAL) :: ======================================================== set "REMOVE_CONDA=" set "REMOVE_SCOOP=" if exist "%INSTALLED_LOG%" ( for /f "usebackq delims=" %%A in ("%INSTALLED_LOG%") do ( if /i "%%A"=="Miniforge3" set "REMOVE_CONDA=1" if /i "%%A"=="Scoop" set "REMOVE_SCOOP=1" ) ) :: ======================================================== :: DETACH FROM CONDA (SAFETY) :: ======================================================== if defined REMOVE_CONDA ( set "CONDA_SHLVL=" set "CONDA_DEFAULT_ENV=" set "CONDA_PREFIX=" set "PATH=%SystemRoot%\System32;%SystemRoot%" ) :: ======================================================== :: REMOVE MINIFORGE (FAST, ATOMIC) :: ======================================================== if defined REMOVE_CONDA if exist "%CONDA_HOME%" ( echo %CONDA_HOME% rd /s /q "%CONDA_HOME%" >nul 2>&1 ) :: ======================================================== :: REMOVE SCOOP (USER INSTALL) :: - scoop 'current' folders are junctions :: - rd /s /q removes the junction, not the target :: ======================================================== if defined REMOVE_SCOOP if exist "%SCOOP_HOME%" ( echo %SCOOP_HOME% rd /s /q "%SCOOP_HOME%" >nul 2>&1 ) :: ======================================================== :: REMOVE SHORTCUTS + REGISTRY :: ======================================================== if exist "%STARTMENU_DIR%" ( echo %STARTMENU_DIR% rd /s /q "%STARTMENU_DIR%" >nul 2>&1 ) if exist "%DESKTOP_LNK%" ( echo %DESKTOP_LNK% del /q "%DESKTOP_LNK%" >nul 2>&1 ) reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\ebook2audiobook" /f >nul 2>&1 :: ======================================================== :: CLEAN REPOSITORY CONTENT :: - echo only first-level items :: - delete recursively :: - continue even if some items are already gone :: ======================================================== echo Cleaning repository content... :: Delete files for %%I in ("%REAL_INSTALL_DIR%\*") do ( if /i not "%%~nxI"=="%SCRIPT_NAME%" ( echo %%~nxI del /f /q "%%~fI" >nul 2>&1 ) ) :: Delete directories for /D %%I in ("%REAL_INSTALL_DIR%\*") do ( echo %%~nxI rd /s /q "%%~fI" >nul 2>&1 ) if exist "%INSTALLED_LOG%" ( echo .installed del /f /q "%INSTALLED_LOG%" >nul 2>&1 ) :: ======================================================== :: FINAL MESSAGE :: ======================================================== echo. echo ======================================================== echo Uninstallation completed. echo. echo The application content has been removed. echo Please remove the empty repository folder manually: echo. echo %REAL_INSTALL_DIR% echo. echo ======================================================== echo. echo Press a key to continue . . . pause >nul exit /b