:: http://zone62.com
@ECHO OFF
TITLE Microsoft Office ProPlus 2019 - Online Installer
PushD "%~dp0"
Set "Version=2.0.9"
Set "BatchDir=%~dp0"
If [%BatchDir:~-1%]==[\] Set "BatchDir=%BatchDir:~0,-1%"

FLTMC >NUL 2>&1 || PowerShell Start-Process -FilePath '%0' -Verb RunAs >NUL 2>&1 && EXIT /b
FLTMC >NUL 2>&1 && GoTo SKIP
COLOR 0c
ECHO                                    \\!//
ECHO                                    (o o)
ECHO -------------------------------oOOo-(_)-oOOo-------------------------------
ECHO                         Administrative Privilege Check
ECHO ===========================================================================
ECHO.
ECHO ERROR: This Batch script must be run with full administrative privileges.
ECHO Please log on with a User Account that has full administrative privileges.
ECHO.
PAUSE
EXIT
:SKIP

Set "on=[YES]"
Set "off=[NO] "
Set "opt1=%on%"
Set "opt2=%on%"
Set "opt3=%on%"
Set "opt4=%on%"
Set "opt5=%on%"
Set "opt6=%on%"
Set "opt7=%on%"
Set "opt8=%on%"
Set "opt9=%on%"
Set "optV=%on%"
Set "optP=%on%"
Set "optT=%on%"
:TOP
Set "optO=%off%"
Set "optI=%on%"
WHERE /q /r ".\Office\Data" "stream.*.x-none.dat" 2>NUL && (Set "OIMessage=Delete Installation Files" & Set "OIStatus=%on%") || (Set "OIMessage=Download Installation Files (32-bit and 64-bit)" & Set "OIStatus=%off%")
IF "%Processor_Architecture%"=="AMD64" Set "CPU=64"
IF "%Processor_Architecture%"=="x86" Set "CPU=32"

:MENU
CLS
ECHO                                    \\!//
ECHO                                    (o o)
ECHO -------------------------------oOOo-(_)-oOOo-------------------------------
ECHO      Microsoft Office Professional Plus 2019 - Online Installer v%Version%
ECHO INFO: After the Installation run the 'KMS_VL_ALL - Smart Activation Script'
ECHO from "http://www.zone62.com/downloads/programs/135-kms-vl-all-activator".
ECHO ===========================================================================

If "%optO%-%OIStatus%"=="%on%-%off%" Set "IOMessage=Online Installation" & Set "Start=DOWNLOAD (6GB)"
If "%optI%-%OIStatus%"=="%on%-%off%" Set "IOMessage=Online Installation" & Set "Start=INSTALLATION"
If "%optO%-%OIStatus%"=="%on%-%on%" Set "IOMessage=Offline Installation" & Set "Start=DELETING"
If "%optI%-%OIStatus%"=="%on%-%on%" Set "IOMessage=Offline Installation" & Set "Start=INSTALLATION"

ECHO.
<NUL Set/P=1. & (If "%opt1%"=="%on%" (Call :EchoColor "%opt1%" 0a) Else (<NUL Set/P="%opt1%")) & ECHO  Microsoft Office Word.
<NUL Set/P=2. & (If "%opt2%"=="%on%" (Call :EchoColor "%opt2%" 0a) Else (<NUL Set/P="%opt2%")) & ECHO  Microsoft Office Excel.
<NUL Set/P=3. & (If "%opt3%"=="%on%" (Call :EchoColor "%opt3%" 0a) Else (<NUL Set/P="%opt3%")) & ECHO  Microsoft Office PowerPoint.
<NUL Set/P=4. & (If "%opt4%"=="%on%" (Call :EchoColor "%opt4%" 0a) Else (<NUL Set/P="%opt4%")) & ECHO  Microsoft Office Outlook.
<NUL Set/P=5. & (If "%opt5%"=="%on%" (Call :EchoColor "%opt5%" 0a) Else (<NUL Set/P="%opt5%")) & ECHO  Microsoft Office OneNote.
<NUL Set/P=6. & (If "%opt6%"=="%on%" (Call :EchoColor "%opt6%" 0a) Else (<NUL Set/P="%opt6%")) & ECHO  Microsoft Office Publisher.
<NUL Set/P=7. & (If "%opt7%"=="%on%" (Call :EchoColor "%opt7%" 0a) Else (<NUL Set/P="%opt7%")) & ECHO  Microsoft Office Access.
<NUL Set/P=8. & (If "%opt8%"=="%on%" (Call :EchoColor "%opt8%" 0a) Else (<NUL Set/P="%opt8%")) & ECHO  Microsoft Office OneDrive Desktop.
<NUL Set/P=9. & (If "%opt9%"=="%on%" (Call :EchoColor "%opt9%" 0a) Else (<NUL Set/P="%opt9%")) & ECHO  Microsoft Office Lync (Skype for Business).
<NUL Set/P=V. & (If "%optV%"=="%on%" (Call :EchoColor "%optV%" 0a) Else (<NUL Set/P="%optV%")) & ECHO  Microsoft Office Visio.
<NUL Set/P=P. & (If "%optP%"=="%on%" (Call :EchoColor "%optP%" 0a) Else (<NUL Set/P="%optP%")) & ECHO  Microsoft Office Project.
<NUL Set/P=T. & (If "%optT%"=="%on%" (Call :EchoColor "%optT%" 0a) Else (<NUL Set/P="%optT%")) & ECHO  Microsoft Office Proofing Tools.
<NUL Set/P=O. & (If "%optO%"=="%on%" (Call :EchoColor "%optO%" 0a) Else (<NUL Set/P="%optO%")) & ECHO  %OIMessage%.
<NUL Set/P=I. & (If "%optI%"=="%on%" (Call :EchoColor "%optI%" 0a) Else (<NUL Set/P="%optI%")) & ECHO  %IOMessage%.
ECHO X. START %Start% . . .

ECHO.
CHOICE /c 123456789VPTOIX /n /m "Toggle your option(s): "

If ERRORLEVEL 15 GoTo CONTINUE
If ERRORLEVEL 14 (If "%optI%"=="%on%" (Set "optI=%off%" & Set "optO=%on%") Else (Set "optI=%on%" & Set "optO=%off%")) & GoTo MENU
If ERRORLEVEL 13 (If "%optO%"=="%on%" (Set "optO=%off%" & Set "optI=%on%") Else (Set "optO=%on%" & Set "optI=%off%")) & GoTo MENU
If ERRORLEVEL 12 (If "%optT%"=="%on%" (Set "optT=%off%") Else (Set "optT=%on%")) & GoTo MENU
If ERRORLEVEL 11 (If "%optP%"=="%on%" (Set "optP=%off%") Else (Set "optP=%on%")) & GoTo MENU
If ERRORLEVEL 10 (If "%optV%"=="%on%" (Set "optV=%off%") Else (Set "optV=%on%")) & GoTo MENU
If ERRORLEVEL 9 (If "%opt9%"=="%on%" (Set "opt9=%off%") Else (Set "opt9=%on%")) & GoTo MENU
If ERRORLEVEL 8 (If "%opt8%"=="%on%" (Set "opt8=%off%") Else (Set "opt8=%on%")) & GoTo MENU
If ERRORLEVEL 7 (If "%opt7%"=="%on%" (Set "opt7=%off%") Else (Set "opt7=%on%")) & GoTo MENU
If ERRORLEVEL 6 (If "%opt6%"=="%on%" (Set "opt6=%off%") Else (Set "opt6=%on%")) & GoTo MENU
If ERRORLEVEL 5 (If "%opt5%"=="%on%" (Set "opt5=%off%") Else (Set "opt5=%on%")) & GoTo MENU
If ERRORLEVEL 4 (If "%opt4%"=="%on%" (Set "opt4=%off%") Else (Set "opt4=%on%")) & GoTo MENU
If ERRORLEVEL 3 (If "%opt3%"=="%on%" (Set "opt3=%off%") Else (Set "opt3=%on%")) & GoTo MENU
If ERRORLEVEL 2 (If "%opt2%"=="%on%" (Set "opt2=%off%") Else (Set "opt2=%on%")) & GoTo MENU
If ERRORLEVEL 1 (If "%opt1%"=="%on%" (Set "opt1=%off%") Else (Set "opt1=%on%")) & GoTo MENU

:EchoColor (Text, Color)
  MkDir "%temp%\_%1" 1>NUL
  PushD "%temp%\_%1"
  For /f %%a in ('Echo PROMPT $H ^| "CMD.exe"') do Set "bs=%%a"
  <NUL Set /P="_" >"%1"
  FindStr /s /b /p /a:%2 /C:"_" "%1"
  <NUL Set /P=%bs%%bs%
  PopD
  RmDir /s /q "%temp%\_%1"
GoTo :EOF

:CONTINUE
ECHO.
ECHO ---------------------------------------------------------------------------
Echo %opt1% %opt2% %opt3% %opt4% %opt5% %opt6% %opt7% %opt8% %opt9% %optV% %optP% %optT% | FindStr /l /i "%on%" >nul 2>&1 && GoTo SKIP
ECHO.
ECHO No option was selected.
GoTo END
:SKIP


If Not "%optO%-%OIStatus%"=="%on%-%on%" GoTo SKIP
ECHO.
ECHO Deleting Microsoft Office 2019 ProPlus Installation Files . . .
ping -n 3 localhost 1>NUL
RmDir /s /q ".\Office" 2>NUL
ECHO.
ECHO ---------------------------------[Finished]--------------------------------
ping -n 5 localhost 1>NUL
GoTo TOP
:SKIP

If Not "%optO%-%OIStatus%"=="%on%-%off%" GoTo SKIP
ECHO.
ECHO INFO: This can take a few minutes, depending on your Internet Speed.
Set "CPU=32" & CALL :CONFIG
ECHO.
ECHO Downloading Microsoft Office 2019 ProPlus %CPU%-bit (Size 2.8 GB) . . .
ping -n 3 localhost 1>NUL
START "" /WAIT /B ".\setup.exe" /download ".\Office 2019 Setup Config.xml"
Set "CPU=64" & CALL :CONFIG
ECHO.
ECHO Downloading Microsoft Office 2019 ProPlus %CPU%-bit (Size 3.2 GB) . . .
ping -n 3 localhost 1>NUL
START "" /WAIT /B ".\setup.exe" /download ".\Office 2019 Setup Config.xml"
:SKIP

If Not "%optI%"=="%on%" GoTo SKIP
If "%optO%-%OIStatus%"=="%off%-%on%" Set "SourcePath=%BatchDir%"
CALL :CONFIG
ECHO.
ECHO Installing Microsoft Office 2019 ProPlus %CPU%-bit . . .
ping -n 3 localhost 1>NUL
START "" /WAIT /B ".\setup.exe" /configure ".\Office 2019 Setup Config.xml"

ECHO.
ECHO Disabling Microsoft Office 2019 Telemetry . . .
ping -n 3 localhost 1>NUL
REG ADD "HKLM\SOFTWARE\Microsoft\Office\Common\ClientTelemetry" /v "DisableTelemetry" /t REG_DWORD /d "00000001" /f 1>NUL
:SKIP


GoTo SKIP
:CONFIG
ECHO.
ECHO Creating Configuration File for Microsoft Office 2019 ProPlus %CPU%-bit . . .
ping -n 3 localhost 1>NUL
SETLOCAL
Set "OCS=".\Office 2019 Setup Config.xml""
                      >%OCS% ECHO ^<Configuration^>
                     >>%OCS% ECHO   ^<Add OfficeClientEdition="%CPU%" Channel="Monthly" SourcePath="%SourcePath%"^>
                     >>%OCS% ECHO     ^<Product ID="ProPlus2019Retail"^>
                     >>%OCS% ECHO       ^<Language ID="MatchOS" Fallback="en-US" /^>
If "%opt1%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="Word" /^>
If "%opt2%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="Excel" /^>
If "%opt3%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="PowerPoint" /^>
If "%opt4%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="Outlook" /^>
If "%opt5%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="OneNote" /^>
If "%opt6%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="Publisher" /^>
If "%opt7%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="Access" /^>
                     >>%OCS% ECHO       ^<ExcludeApp ID="Groove" /^>
If "%opt8%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="OneDrive" /^>
If "%opt9%"=="%off%" >>%OCS% ECHO       ^<ExcludeApp ID="Lync" /^>
                     >>%OCS% ECHO     ^</Product^>
If "%optV%"=="%on%"  >>%OCS% ECHO     ^<Product ID="VisioPro2019Retail"^>
If "%optV%"=="%on%"  >>%OCS% ECHO       ^<Language ID="MatchOS" Fallback="en-US" /^>
If "%optV%"=="%on%"  >>%OCS% ECHO     ^</Product^>
If "%optP%"=="%on%"  >>%OCS% ECHO     ^<Product ID="ProjectPro2019Retail"^>
If "%optP%"=="%on%"  >>%OCS% ECHO       ^<Language ID="MatchOS" Fallback="en-US" /^>
If "%optP%"=="%on%"  >>%OCS% ECHO     ^</Product^>
If "%optT%"=="%on%"  >>%OCS% ECHO     ^<Product ID="ProofingTools"^>
If "%optT%"=="%on%"  >>%OCS% ECHO       ^<Language ID="MatchOS" Fallback="en-US" /^>
If "%optT%"=="%on%"  >>%OCS% ECHO     ^</Product^>
                     >>%OCS% ECHO   ^</Add^>
                     >>%OCS% ECHO ^</Configuration^>
ENDLOCAL
GoTo :EOF
:SKIP


:END
ECHO.
ECHO --------------------------------[Completed]--------------------------------
ECHO.
Pause
DEL /f ".\Office 2019 Setup Config.xml" 2>NUL
EXIT
