@echo off
:: Auto Relister — Windows Chrome Extension Installer

:: Auto-elevate to admin if not already running as admin
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo Requesting administrator access...
    powershell -ExecutionPolicy Bypass -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
    exit /b
)

echo.
echo  ============================================
echo   Auto Relister - Chrome Extension Setup
echo  ============================================
echo.

:: ---- Step 1: Close Chrome -----------------------------------------------
echo  Step 1: Closing Chrome to apply settings...
taskkill /F /IM chrome.exe /T >nul 2>&1
taskkill /F /IM chrome_proxy.exe /T >nul 2>&1
timeout /t 2 /nobreak >nul

:: ---- Step 1b: Clear Chrome cached enrollment state ----------------------
echo  Step 1b: Clearing Chrome cached state...

:: Print Chrome version for diagnostics
for /f "tokens=3" %%v in ('reg query "HKLM\SOFTWARE\Google\Chrome\BLBeacon" /v "version" 2^>nul') do echo  Chrome version: %%v

:: Delete Local State file for every user profile (clears CBCM client cache)
:: Does NOT delete bookmarks/passwords/history.
for /d %%U in (C:\Users\*) do (
    if exist "%%U\AppData\Local\Google\Chrome\User Data\Local State" (
        del /f /q "%%U\AppData\Local\Google\Chrome\User Data\Local State" >nul 2>&1
    )
)

:: Delete Chrome cloud policy data directory for every user profile
for /d %%U in (C:\Users\*) do (
    if exist "%%U\AppData\Local\Google\Chrome\User Data\Policy" (
        rd /s /q "%%U\AppData\Local\Google\Chrome\User Data\Policy" >nul 2>&1
    )
)

:: Delete machine-level Chrome ProgramData (stores CBCM enrollment state)
if exist "C:\ProgramData\Google\Chrome" (
    echo  Found Chrome ProgramData - clearing...
    rd /s /q "C:\ProgramData\Google\Chrome" >nul 2>&1
)

:: Delete enrollment token from Chrome's OWN registry (not Policies path)
reg delete "HKLM\SOFTWARE\Google\Chrome" /v "CloudManagementEnrollmentToken" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Google\Chrome" /v "CloudManagementEnrollmentToken" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Google\Chrome" /v "CloudManagementEnrollmentToken" /f >nul 2>&1

:: ---- Step 2: Remove enrollment token from ALL registry paths -------------
echo  Step 2: Removing conflicting policies...

:: Delete CloudManagementEnrollmentToken as a VALUE (64-bit registry)
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentToken" /f >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentToken" /f >nul 2>&1
:: Delete CloudManagementEnrollmentToken as a VALUE (32-bit registry / WOW6432Node)
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentToken" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentToken" /f /reg:32 >nul 2>&1

:: Delete CloudManagementEnrollmentToken as a SUBKEY (belt-and-suspenders)
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\CloudManagementEnrollmentToken" /f >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\CloudManagementEnrollmentToken" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\CloudManagementEnrollmentToken" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\CloudManagementEnrollmentToken" /f /reg:32 >nul 2>&1

:: Delete CloudManagementEnrollmentMandatory (forced enrollment flag)
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentMandatory" /f >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentMandatory" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentMandatory" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome" /v "CloudManagementEnrollmentMandatory" /f /reg:32 >nul 2>&1

:: Delete stale ExtensionInstallForcelist (all paths)
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /f >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /f /reg:32 >nul 2>&1

:: Delete other conflicting policies
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallSources" /f >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\ExtensionInstallSources" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallSources" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\ExtensionInstallSources" /f /reg:32 >nul 2>&1
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist" /f >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist" /f /reg:32 >nul 2>&1
reg delete "HKCU\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist" /f /reg:32 >nul 2>&1

:: ---- Step 3: Write the extension policy ----------------------------------
echo  Step 3: Writing extension policy...

reg add "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /v "1" /t REG_SZ /d "jblmdokpejidkpbfojcmmlfhmeamkboj;https://extension.autorelister.com.au/updates.xml" /f
reg add "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /v "1" /t REG_SZ /d "jblmdokpejidkpbfojcmmlfhmeamkboj;https://extension.autorelister.com.au/updates.xml" /f /reg:32

:: ---- Step 4: Verify -------------------------------------------------------
echo  Step 4: Verifying...

reg query "HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" /v "1" >nul 2>&1
if errorlevel 1 goto verify_failed

echo.
echo  ============================================
echo   SUCCESS! Setup complete.
echo.
echo   Next steps:
echo   1. Reopen Chrome
echo   2. Auto Relister installs automatically
echo      (may take 30-60 seconds on first launch)
echo  ============================================
goto end

:verify_failed
echo.
echo  ERROR: Could not write registry key.
echo  Please screenshot this window and send to support.
echo.

:end
echo.
pause
