Skip to content

Instantly share code, notes, and snippets.

@mikepruett3
Last active February 26, 2023 01:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikepruett3/742a13daabdb09e9c3b47df5a323ff1f to your computer and use it in GitHub Desktop.
Save mikepruett3/742a13daabdb09e9c3b47df5a323ff1f to your computer and use it in GitHub Desktop.
:: Name: updcygwin.cmd
:: Purpose: Updates Existing Cygwin Installation
:: Author: mikepruett3@gmail.com
:: Revision: 20170118 - initial version
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SET _script=%~n0
SET _parentdir=%~dp0
:: Check if we are interactive
:: https://steve-jansen.github.io/guides/windows-batch-scripting/part-10-advanced-tricks.html
Set interactive=0
ECHO %CMDCMDLINE% | FINDSTR /L %COMSPEC% >NUL 2>&1
IF %ERRORLEVEL% == 0 SET interactive=1
:: Borrowed Code from - https://stackoverflow.com/questions/7985755/how-to-detect-if-cmd-is-running-as-administrator-has-elevated-privileges
NET SESSION > NUL 2>&1
IF %ERRORLEVEL% NEQ 0 (
ECHO.
ECHO You are NOT running this script as an administator. Exiting...
EXIT /B 0
)
:: More Borrowed Code from - http://ss64.com/nt/syntax-64bit.html
:: Installed OS
Set _os_bitness=64
IF %PROCESSOR_ARCHITECTURE% == x86 (
IF NOT DEFINED PROCESSOR_ARCHITEW6432 Set _os_bitness=32
)
:: Select the correct Cygwin Setup Executable to use
IF %_os_bitness% == 64 (
Set program=setup-x86_64.exe
Set arch=x86_64
set _rootdir=%SYSTEMDRIVE%\cygwin64
set _cachedir=%SYSTEMDRIVE%\cygtmp
) ELSE (
Set program=setup-x86.exe
Set arch=x86
set _rootdir=%SYSTEMDRIVE%\cygwin
set _cachedir=%SYSTEMDRIVE%\cygtmp
)
Set download=%_cachedir%\%program%
set _site=http://mirrors.kernel.org/sourceware/cygwin
:: Create RootDir and CacheDir, if they dont exist already
IF NOT EXIST %_rootdir% (
ECHO .
ECHO %_rootdir% Not Found!!!
EXIT /B 0
)
IF NOT EXIST %_cachedir% (
ECHO .
ECHO %_cachedir% Not Found!!!
EXIT /B 0
)
:: Download the latest Cygwin Setup Executable
bitsadmin /transfer myDownloadJob /download /priority normal https://cygwin.com/%program% %download%
ECHO.
ECHO Cygwin Setup Executable downloaded to %download%
:: Find the location to the Cygwin Setup Executable
IF %_os_bitness% == 64 (
for /f %%i in ('where /R %_cachedir%\ setup-x86_64.exe') do set setup=%%i
) ELSE (
for /f %%i in ('where /R %_cachedir%\ setup-x86.exe') do set setup=%%i
)
:: Install Cygwin using Quiet Mode with packages
:: Command Line Switches from https://superuser.com/questions/214831/how-to-update-cygwin-from-cygwins-command-line
START "Installing Cygwin" ^
/WAIT ^
%setup% ^
--site %_site% ^
--root %_rootdir% ^
--quiet-mode ^
--upgrade-also
:: Run rebaseall
echo Running rebaseall
"%_rootdir%\bin\dash.exe" -c 'cd /usr/bin; PATH=. ; rebaseall'
:: Pause exiting script if we are run interactivly
IF "%interactive%"=="0" PAUSE
EXIT /B 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment