:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::  Retail Demo Installation script
::  Will find location of OOBE and install Office onto the machine.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@echo OFF
@setlocal enabledelayedexpansion

set OOBE_REGPATH="HKLM\Software\Microsoft\Office\15.0\Common\OEM"
set LANGUAGE_REGPATH="HKLM\Software\Microsoft\Windows\CurrentVersion\RetailDemo\RetailInfo"
set DISABLEFRE_REGPATH="HKLM\Software\Microsoft\ClickToRun\Override"
set AGK_REGPATH="HKCU\Software\Microsoft\Office\15.0\Registration"
set EULA_REGPATH="HKCU\Software\Microsoft\Office\15.0\Registration\%computername%\{90150000-000F-0000-0000-0000000FF1CE}\ProfessionalRetail\EULA"
set EULA_ACCEPT_REGPATH="HKCU\Software\Microsoft\Office\15.0\Registration"
set FRE_SEEN_REGPATH="HKCU\Software\Microsoft\Office\15.0\FirstRun"
set TWC_OPT_IN_REGPATH="HKCU\Software\Microsoft\Office\15.0\Common"
set UPDATE_OPT_IN_REGPATH="HKCU\Software\Microsoft\Office\15.0\Common\General"
set SKU_NAME=SetupProfessionalRetail
set SKU=ProfessionalRetail
set OFFICE_KEY=9DNKK-867QG-T97VT-4BXGT-H8PBV

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Query registry for OOBE install location
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ECHO Getting retail demo language
FOR /F "tokens=3" %%A IN ('reg query %%LANGUAGE_REGPATH%% /s /f "language" ^| findstr /I language ^| findstr /VI original_language') DO set "RETAILDEMO_LANGUAGE=%%A"
ECHO New variable RETAILDEMO_LANGUAGE = %RETAILDEMO_LANGUAGE%
set LANGUAGE_WILDCARD=%RETAILDEMO_LANGUAGE:~0,3%
ECHO New variable LANGUAGE_WILDCARD = %LANGUAGE_WILDCARD%

ECHO Getting path
FOR /F "tokens=3" %%A IN ('reg query %%OOBE_REGPATH%% /s /f "path" ^| findstr /I path') DO set "OFFICEDIR=%%A"
ECHO New variable OFFICEDIR = %OFFICEDIR%
set "SETUPNAME=%OFFICEDIR%\%SKU_NAME%_%SKU%_%OFFICE_KEY%_firstrun__.exe"
ECHO New variable SETUPNAME = %SETUPNAME%
del /F %SETUPNAME%

ECHO Getting platform
FOR /F "tokens=3" %%A IN ('reg query %%OOBE_REGPATH%% /s /f "platform" ^| findstr /I platform') DO set "OFFICEPLATFORM=%%A"
ECHO New variable OFFICEPLATFORM = %OFFICEPLATFORM%

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Go to that folder location and find setup exe.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

if exist %OFFICEDIR% (
set FOUND=true
goto FoundOOBE
)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Rename setup the correct name and run it to install
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:FoundOOBE
if %FOUND%==false (
	echo Can't find Office installed on this machine! Please install Office first!
	goto eof
) else (
    ECHO Getting exe by exact language match
    FOR %%f in (%OFFICEDIR%\%SKU_NAME%.*%RETAILDEMO_LANGUAGE%.exe) DO (copy /y %%f %SETUPNAME%)
    if not exist %SETUPNAME% (
        ECHO Getting exe by wildcard language match
        FOR %%f in (%OFFICEDIR%\%SKU_NAME%.*%LANGUAGE_WILDCARD%*.exe) DO (copy /y %%f %SETUPNAME%)
    )
)

if exist %SETUPNAME% (
echo Disabling FRE
reg add %DISABLEFRE_REGPATH% /f /v DisableFirstRun /t REG_DWORD /d 1

echo Running installation
start /wait %SETUPNAME%

echo Installation Done. Cleaning up registry
for /f %%I in (
    'reg query "%AGK_REGPATH%"'
) do ( reg delete %%I /f)

echo Accepting EULA
reg add %EULA_REGPATH% /f /v "1" /t REG_SZ /d "1""

echo Accept ALL EULAS
reg add %EULA_ACCEPT_REGPATH% /f /v AcceptAllEulas /t REG_DWORD /d 1

echo FRE Seen
reg add %FRE_SEEN_REGPATH% /f /v BootedRTM /t REG_DWORD /d 1

echo Turn off Trust Center Opt In
reg add %TWC_OPT_IN_REGPATH% /f /v OptEnable /t REG_DWORD /d 0

echo Turn off Update Opt In
reg add %UPDATE_OPT_IN_REGPATH% /f /v OptInDisable /t REG_DWORD /d 1
)

echo DONE

:eof
ECHO Exiting
