зеркало из https://github.com/mislav/hub.git
62 строки
2.0 KiB
Batchfile
62 строки
2.0 KiB
Batchfile
@echo off
|
|
CLS
|
|
goto checkPrivileges
|
|
|
|
:: Unfortunately, Windows doesn't have a decent built-in way to append a string to the $PATH.
|
|
:: setx is convenient, but it 1) truncates paths longer than 1024 characters, and
|
|
:: 2) mucks up the user path with the machine-wide path.
|
|
:: This function takes care of these problems by calling Environment.Get/SetEnvironmentVariable
|
|
:: via PowerShell, which lacks these issues.
|
|
:appendToUserPath
|
|
setlocal EnableDelayedExpansion
|
|
set "RUNPS=powershell -NoProfile -ExecutionPolicy Bypass -Command" :: Command to start PowerShell.
|
|
set "OLDPATHPS=[Environment]::GetEnvironmentVariable('PATH', 'User')" :: PowerShell command to run to get the old $PATH for the current user.
|
|
|
|
:: Capture the output of %RUNPS% "%OLDPATHPS%" and set it to OLDPATH
|
|
for /f "delims=" %%i in ('%RUNPS% "%OLDPATHPS%"') do (
|
|
set "OLDPATH=!OLDPATH!%%i"
|
|
)
|
|
|
|
set "NEWPATH=%OLDPATH%;%1"
|
|
:: Set the new $PATH
|
|
%RUNPS% "[Environment]::SetEnvironmentVariable('PATH', '%NEWPATH%', 'User')"
|
|
goto :eof
|
|
|
|
:checkPrivileges
|
|
NET FILE 1>NUL 2>NUL
|
|
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
|
|
|
|
:getPrivileges
|
|
if '%1'=='ELEV' (shift & goto gotPrivileges)
|
|
echo.
|
|
echo **************************************
|
|
echo Installing GitHub CLI as Administrator
|
|
echo **************************************
|
|
|
|
setlocal DisableDelayedExpansion
|
|
set "batchPath=%~0"
|
|
setlocal EnableDelayedExpansion
|
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
|
|
echo UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
|
|
"%temp%\OEgetPrivileges.vbs"
|
|
exit /B
|
|
|
|
:gotPrivileges
|
|
|
|
setlocal & cd /d %~dp0
|
|
|
|
set HUB_BIN_PATH="%LOCALAPPDATA%\GitHubCLI\bin"
|
|
IF EXIST %HUB_BIN_PATH% GOTO DIRECTORY_EXISTS
|
|
mkdir %HUB_BIN_PATH%
|
|
set "path=%PATH%;%HUB_BIN_PATH:"=%"
|
|
call :appendToUserPath "%HUB_BIN_PATH:"=%"
|
|
:DIRECTORY_EXISTS
|
|
|
|
:: Delete any existing programs
|
|
2>NUL del /q %HUB_BIN_PATH%\hub*
|
|
|
|
1>NUL copy .\bin\hub.exe %HUB_BIN_PATH%\hub.exe
|
|
|
|
echo hub.exe installed successfully. Press any key to exit
|
|
pause > NUL
|