@echo off

:: 창 초기화
PUSHD %~DP0
title Patch Ungoogled Chromium 143
color 0a
mode con cols=120 lines=35
SETLOCAL DisableDelayedExpansion
echo.패치를 준비중 중입니다...
timeout /t 2 /NOBREAK > nul

:: 관리자 권한 체크
call :IsAdmin
if %errorlevel% == 0 (
cls
goto :run
) else (
cls
echo.관리자 권한이 없습니다.
echo.확인창에서 '예'를 선택해 주세요.
echo.관리자 권한을 획득 합니다...
goto :UACPrompt
)
exit /b

:: 설치 처리
:run

:: OS 비트 확인
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32 || set OS=64
set OS=%OS: =%
echo.현재 OS는 %OS% 비트 입니다. (32비트일 경우 설치 불가.)

:: 파워쉘 설치 여부 확인
where /q powershell
if %ERRORLEVEL% NEQ 0 (
      echo PowerShell이 설치되어 있지 않아 설치 프로그램 가동이 불가능합니다. 시스템 관리자에 문의 바랍니다.
      goto :errorExit
)

:: 인스톨러 폴더 예외 처리
powershell.exe -Command "Add-MpPreference -ExclusionPath '%~dp0'"

:: JCMS설치 확인 (인스톨러로 설치한 경우 감지)
FOR /F "usebackq tokens=3*" %%A IN (`%SystemRoot%\System32\reg.exe QUERY "HKLM\SOFTWARE\JCMS" /v drive`) DO (
      set appdir=%%A
)
if defined appdir (
      echo.%appdir%에 JCMS 설치가 감지되었습니다. 업데이트를 계속하시려면 아무 키나 눌러 주세요.
      pause
) else (
      echo "설치된 JCMS를 찾을 수 없습니다."
      goto :errorExit
)

:: 설치 프로그램 타입 확인
set isJcms=y
set /p isJcms=JCMS 입니까(예(jcms): Y/아니오(dms): N):
IF /i "%isJcms%" == "y" (
      set typeName=JCMS
) ELSE (
      set typeName=DMS
)

:: 배치파일 실행 경로 지정
cd /d %~dp0

:: 바탕화면 경로 지정
FOR /F "usebackq delims=" %%i in (`cscript Other\findDesktop.vbs`) DO SET DESKTOPDIR=%%i

:continue_work

echo "Ungoogled Chromium 143 패치를 시작합니다."

:: Ungoogled Chromium 143 오프라인 설치 
echo.Ungoogled Chromium 143 설치중 입니다...
Programs\ungoogled-chromium_143.0.7499.192-1.1_installer_x64.exe /VERYSILENT /NORESTART
echo.Ungoogled Chromium 143 설치가 완료되었습니다.

:: 기존 바로가기 제거
del %DESKTOPDIR%\JCMS.lnk
del %DESKTOPDIR%\DMS.lnk

:: Ungoogled Chromium 143 바로가기 만들기
cscript //nologo Other\createSrShorcut.vbs %typeName%

::: SRWare Iron 설정
:: 자동재생 허용
reg add HKLM\Software\Policies\Chromium /v AutoplayAllowed /d 1 /t REG_DWORD /f 

:: 사이트당 프로세스 실행
reg add HKLM\Software\Policies\Chromium /v SitePerProcess /d 1 /t REG_DWORD /f 
reg add HKLM\Software\Policies\Chromium /v DeviceLoginScreenSitePerProcess /d 1 /t REG_DWORD /f 

:: 북마크바 제거
reg add HKLM\Software\Policies\Chromium /v BookmarkBarEnabled /d 0 /t REG_DWORD /f

:: 기본 브라우저 체크 해제
reg add HKLM\Software\Policies\Chromium /v DefaultBrowserSettingEnabled /d 0 /t REG_DWORD /f

:: 확장프로그램 설치 차단
reg add HKLM\Software\Policies\Chromium\ExtensionInstallBlacklist /v 0 /d * /t REG_SZ /f

:: 앞뒤 페이지 메모리 캐시 기능 끄기
reg add HKLM\Software\Policies\Chromium /v AllowBackForwardCacheForCacheControlNoStorePageEnabled /d 0 /t REG_DWORD /f

pause & exit

:: 에러 종료
:errorExit
echo.Ungoogled Chromium 143 패치가 실패하였습니다.
pause & exit

:: 관리자 권한 체크 함수
:IsAdmin
fsutil dirty query %systemdrive% >nul
exit /b

:: 권한 상승 처리
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B`