I’m the co-lead, here’s the script:
@echo OFF
rem check for admin privileges, and then prompt for them if needed
net session >nul 2>&1
if %errorlevel%==2 powershell -noprofile -command "&{ start-process '%~f0' -verb RunAs}" && exit
cd %~dp0
rem Define what is copied
set installroot="%userprofile%\Programming"
set copy[0]="Phoenix-Documentation-master"
set copylength=1
rem Define programming installers
set programminginstaller[0,0]=
set programminginstaller[0,1]="FRCUpdateSuite_2018.1.0\setup.exe"
set programminginstaller[1,0]=
set programminginstaller[1,1]="Phoenix-diagnostics-Tuner-v1.5.2\CTRE_Phoenix_Tuner.exe"
set programminginstaller[2,0]=
set programminginstaller[2,1]="GRIP-install.exe"
set programminginstaller[3,0]=
set programminginstaller[3,1]="WPILibInstaller_Windows64-2020.3.2.exe"
set programminginstaller[4,0]=
set programminginstaller[4,1]="navx-mxp\setup.exe"
set programminginstaller[5,0]=
set programminginstaller[5,1]="FRC_Radio_Configuration_19_1_1.exe"
set programminginstaller[6,0]=
set programminginstaller[6,1]="FileZilla-install.exe"
set programminginstaller[7,0]=
set programminginstaller[7,1]="git-install.exe"
set programminginstaller[8,0]=
set programminginstaller[8,1]="git-desktop-install.exe"
set programminginstaller[9,0]="jdk-11.0.7_windows-x64_bin.exe"
set programminginstaller[9,1]=
set programminginstallerlength=10
rem Define programming installer parameters
set programminginstallerparams[0]=""
set programminginstallerparams[0]=%programminginstallerparams[0]:"=%
set programminginstallerparams[1]=""
set programminginstallerparams[1]=%programminginstallerparams[1]:"=%
set programminginstallerparams[2]=""
set programminginstallerparams[2]=%programminginstallerparams[2]:"=%
set programminginstallerparams[3]=""
set programminginstallerparams[3]=%programminginstallerparams[3]:"=%
set programminginstallerparams[4]=""
set programminginstallerparams[4]=%programminginstallerparams[4]:"=%
set programminginstallerparams[5]=""
set programminginstallerparams[5]=%programminginstallerparams[5]:"=%
set programminginstallerparams[6]="/S /user=all"
set programminginstallerparams[6]=%programminginstallerparams[6]:"=%
set programminginstallerparams[7]="/silent"
set programminginstallerparams[7]=%programminginstallerparams[7]:"=%
set programminginstallerparams[8]=""
set programminginstallerparams[8]=%programminginstallerparams[8]:"=%
set programminginstallerparams[9]=""
set programminginstallerparams[9]=%programminginstallerparams[8]:"=%
rem Define where programming installers install to
set programminginstallerdir[0]="C:\Program Files (x86)\National Instruments"
set programminginstallerdir[1]="C:\Users\Public\Documents\Cross The Road Electronics\LifeBoat"
set programminginstallerdir[2]="abcd"
set programminginstallerdir[3]="C:\Users\Public\frc2019"
set programminginstallerdir[4]="%programfiles(x86)%\Kauai Labs\navX-MXP"
set programminginstallerdir[5]="%programfiles(x86)%\FRC Radio Configuration Utility"
set programminginstallerdir[6]="%programfiles%\FileZilla FTP Client"
set programminginstallerdir[7]="%localappdata%\Programs\Git"
set programminginstallerdir[8]="%appdata%\GitHub Desktop"
rem Define cad installers
set cadinstaller[0,0]=""
set cadinstaller[0,1]="GrabCAD-Workbench-installer.exe"
set cadinstaller[1,0]=""
set cadinstaller[1,1]="SOLIDWORKS 2017 SP02\setup.exe"
set cadinstallerlength=2
rem Define cad installer parameters
set cadinstallerparams[0]=""
set cadinstallerparams[0]=%cadinstallerparams[0]"=%
set cadinstallerparams[1]=""
set cadinstallerparams[1]=%cadinstallerparams[1]"=%
rem Define where cad installers install to
set cadinstallerdir[0]="%localappdata%\Programs\GrabCAD\GrabCADDesktopClient"
set cadinstallerdir[1]="%programfiles%\SOLIDWORKS Corp\SOLIDWORKS"
SetLocal EnableDelayedExpansion
rem Check for system architecture type (32 or 64 bit)
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32BIT || set OS=64BIT
ECHO This is a %OS% Machine
rem Prompt user for installation type
ECHO What would you like to install?
ECHO 1-programming
ECHO 2-cad
ECHO 3-both*
ECHO 4-cancel
choice /c:1234
SET install=%ERRORLEVEL%
IF %install%==4 GOTO:EOF
IF %install%==2 GOTO cad
rem Create %installroot% if it doesn't exist, then proceed to copy stuff into it and run programming installers
ECHO Installing Programming
ECHO Creating %installroot%
IF NOT EXIST "%installroot%" mkdir "%installroot%"
ECHO Starting programming copy loop
@ECHO OFF
set i=0
:programmingcopylooproot
IF NOT %i% lss !copylength! goto programmingcopyloopend
ECHO Copying !copy[%i%]!
IF EXIST "%installroot%\!copy[%i%]!" goto programmingcopyloopcontinue
mkdir "%installroot%\!copy[%i%]!"
rem xcopy /s /y /d
robocopy /s /xo /mt:128 /r:10 /m:1 "%~dp0\!copy[%i%]!" "%installroot%\!copy[%i%]!" > nul
:programmingcopyloopcontinue
set /A i=!i!+1
goto programmingcopylooproot
:programmingcopyloopend
ECHO "C:\Programming\gradle-4.10.2" | FIND /I "%PATH%">NUL && SETX PATH %PATH%;"C:\Programming\gradle-4.10.2"
rem copy loose files
robocopy /s /xo /mt:128 /r:10 /m:1 "%~dp0\Copy" "%installroot%" > nul
ECHO Starting programming install loop
set i=0
:programminginstalllooproot
IF NOT %i% lss !programminginstallerlength! goto programminginstallloopend
ECHO installing !programminginstaller[%i%,1]!
IF EXIST !programminginstallerdir[%i%]! goto programminginstallloopcontinue
IF %OS%==64BIT IF "!programminginstaller[%i%,0]!"=="" goto programming32 ELSE goto programming64 ELSE goto programming32
:programming64
START /WAIT "" "%~dp0\!programminginstaller[%i%,0]!" !programminginstallerparams[%i%]!
rem set isjdk = echo !programminginstaller[%i%,0]! | find "jdk"
rem IF NOT [%isjdk%]==[] goto programming32
goto programminginstallloopcontinue
:programming32
START /WAIT "" "%~dp0\!programminginstaller[%i%,1]!" !programminginstallerparams[%i%]!
goto programminginstallloopcontinue
:programminginstallloopcontinue
set /A i=!i!+1
goto programminginstalllooproot
:programminginstallloopend
IF NOT EXIST "%JAVA_HOME%" ( IF EXIST "%programfiles%\Java\jdk-11.0.4" SETX JAVA_HOME "%programfiles%\Java\jdk-11.0.4" )
rem run cad installers
IF %install%==1 GOTO end
:cad
ECHO Starting CAD install loop
set i=0
:cadlooproot
IF NOT %i% lss !cadinstallerlength! goto cadloopend
ECHO installing !cadinstaller[%i%,1]!
IF EXIST "!cadinstallerdir[%i%]!" goto cadloopcontinue
IF %OS%==64BIT IF "!cadinstaller[%i%,0]!"=="" goto cad32 ELSE goto cad64 ELSE goto cad32
:cad64
START /WAIT "" "%~dp0\!cadinstaller[%i%,0]!" !cadinstallerparams[%i%]!
goto cadloopcontinue
:cad32
START /WAIT "" "%~dp0\!cadinstaller[%i%,1]!" !cadinstallerparams[%i%]!
goto cadloopcontinue
:cadloopcontinue
set /A i=!i!+1
goto cadlooproot
:cadloopend
GOTO end
:end
ECHO End of script
pause
IF %install%==1 SHUTDOWN /r /t 0
If you’re familiar with batch, then understanding it shouldn’t be too problematic, it’s pretty well commented, anything strange it does is explained, there’s ajsut a few things like “installer” has a pair for each entry, 0 is for x64, 1 is x86. The second line to set the parameters is to remove the quotes because params don’t work with quotes, and there’s a list of directories that they install to so that it doesn’t install something it doesn’t have to, although I’m not sure where GRIP installs to. It has an auto-restart at the end, and prompts for whether you want the programming or CAD package, or both. There’s also some commented-out code to run both x86 and x64 for the jdk, if you want that.
I also noticed that you wanted an update script, and I made that too, although it’s not very smart.
@echo off
title Updating Installers...
echo git desktop
curl -L https://central.github.com/deployments/desktop/desktop/latest/win32 -o Git-desktop-install.exe
echo git
curl -sL https://api.github.com/repos/git-for-windows/git/releases/latest | find /I "browser_download_url" | find /I "64-bit.exe" >tempurl
set /p url=<tempurl
set url=%url:~30%
curl -L %url% -o Git-install.exe
echo filezilla
curl -s https://filezilla-project.org/download.php?platform=win64 | find /I "quickdownloadbuttonlink" >tempurl
set /p url=<tempurl
set url=%url:~48,-101%
curl -L %url% -o Filezilla-install.exe
echo frc radio config
curl -L https://firstfrc.blob.core.windows.net/frc2020/Radio/FRC_Radio_Configuration_20_0_0.zip -o Radio_configuration_utility.zip
"%programfiles%\7-zip\7z.exe" x Radio_configuration_utility.zip -y >nul
del /s /s "Radio_configuration_utility.zip" >nul
echo navx
curl -L "https://www.kauailabs.com/public_files/navx-mxp/navx-mxp.zip" -o navx.zip
rmdir /s /q navx-mxp
"%programfiles%\7-zip\7z.exe" x navx.zip -y -onavx-mxp >nul
del /s /q "navx.zip" >nul
echo wpilib
curl -sL https://api.github.com/repos/wpilibsuite/allwpilib/releases/latest | find /I "browser_download_url" | find /I "Windows64" >tempurl
set /p url=<tempurl
set url=%url:~30%
curl -L %url% -o WPILibInstaller_Windows64.zip
"%programfiles%\7-zip\7z.exe" x WPILibInstaller_Windows64.zip -y >nul
del /s /s "WPILibInstaller_Windows64.zip" >nul
echo grip
curl -sL https://api.github.com/repos/WPIRoboticsProjects/GRIP/releases/latest | find /I "browser_download_url" | find /I "x64.exe" >tempurl
set /p url=<tempurl
set url=%url:~30%
curl -L %url% -o Grip-install.exe
echo phoenix tuner
curl -sL https://api.github.com/repos/CrossTheRoadElec/Phoenix-Releases/releases/latest | find /I "browser_download_url" >tempurl
set /p url=<tempurl
set url=%url:~30%
curl -L %url% -o phoenix-tuner.zip
"%programfiles%\7-zip\7z.exe" x phoenix-tuner.zip -y >nul
del /s /q "phoenix-tuner.zip" >nul
echo ---------------------------------------------------------
echo --!!FRC update suite will have to be updated manually!!--
echo ---------------------------------------------------------
del /s /q tempurl >nul
title Done Updating
pause
uses cURL to retrieve everything, you could probably make something smarter with powershell or batch/powershell hybrid.
Also, for the original post, might I suggest Ninite? It is a single-download single-run program to install a bunch of the more common softwares.