mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-02-14 17:49:53 +00:00
122 lines
4.1 KiB
PowerShell
122 lines
4.1 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
#350 check if windows user run as admin
|
|
|
|
function Confirm-IsElevated {
|
|
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
|
|
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
|
|
if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
|
|
{ Write-Output $true }
|
|
else
|
|
{ Write-Output $false }
|
|
}
|
|
|
|
if (Confirm-IsElevated)
|
|
{ throw "Webi MUST NOT be run with elevated privileges. Please run again as a normal user, NOT as administrator." }
|
|
|
|
# this allows us to call ps1 files, which allows us to have spaces in filenames
|
|
# ('powershell "$Env:USERPROFILE\test.ps1" foo' will fail if it has a space in
|
|
# the path but '& "$Env:USERPROFILE\test.ps1" foo' will work even with a space)
|
|
Set-ExecutionPolicy -Scope Process Bypass
|
|
|
|
# If a command returns an error, halt the script.
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
# Ignore progress events from cmdlets so Invoke-WebRequest is not painfully slow
|
|
$ProgressPreference = 'SilentlyContinue'
|
|
|
|
$Env:WEBI_HOST = 'https://webinstall.dev'
|
|
#$Env:WEBI_PKG = 'node@lts'
|
|
#$Env:PKG_NAME = node
|
|
#$Env:WEBI_VERSION = v12.16.2
|
|
#$Env:WEBI_PKG_URL = "https://.../node-....zip"
|
|
#$Env:WEBI_PKG_FILE = "node-v12.16.2-win-x64.zip"
|
|
|
|
# Switch to userprofile
|
|
Push-Location $Env:USERPROFILE
|
|
|
|
# Make paths
|
|
New-Item -Path Downloads -ItemType Directory -Force | Out-Null
|
|
New-Item -Path .local\bin -ItemType Directory -Force | Out-Null
|
|
New-Item -Path .local\opt -ItemType Directory -Force | Out-Null
|
|
|
|
# {{ baseurl }}
|
|
# {{ version }}
|
|
|
|
function webi_path_add($pathname) {
|
|
# C:\Users\me => C:/Users/me
|
|
$my_home = $Env:UserProfile
|
|
$my_home = $my_home.replace('\\', '/')
|
|
$my_home_re = [regex]::escape($my_home)
|
|
|
|
# ~/bin => %USERPROFILE%/bin
|
|
$pathname = $pathname.replace('~/', "$Env:UserProfile/")
|
|
|
|
# C:\Users\me\bin => %USERPROFILE%/bin
|
|
$my_pathname = $pathname.replace('\\', '/')
|
|
$my_pathname = $my_pathname -ireplace $my_home_re, "%USERPROFILE%"
|
|
|
|
$all_user_paths = [Environment]::GetEnvironmentVariable("Path", "User")
|
|
$user_paths = $all_user_paths -Split (';')
|
|
$exists_in_path = $false
|
|
foreach ($user_path in $user_paths) {
|
|
# C:\Users\me\bin => %USERPROFILE%/bin
|
|
$my_user_path = $user_path.replace('\\', '/')
|
|
$my_user_path = $my_user_path -ireplace $my_home_re, "%USERPROFILE%"
|
|
|
|
if ($my_user_path -ieq $my_pathname) {
|
|
$exists_in_path = $true
|
|
}
|
|
}
|
|
if (-Not $exists_in_path) {
|
|
$all_user_paths = $pathname + ";" + $all_user_paths
|
|
[Environment]::SetEnvironmentVariable("Path", $all_user_paths, "User")
|
|
}
|
|
|
|
$session_paths = $Env:Path -Split (';')
|
|
$in_session_path = $false
|
|
foreach ($session_path in $session_paths) {
|
|
# C:\Users\me\bin => %USERPROFILE%/bin
|
|
$my_session_path = $session_path.replace('\\', '/')
|
|
$my_session_path = $my_session_path -ireplace $my_home_re, "%USERPROFILE%"
|
|
|
|
if ($my_session_path -ieq $my_pathname) {
|
|
$in_session_path = $true
|
|
}
|
|
}
|
|
|
|
if (-Not $in_session_path) {
|
|
$my_cmd = 'PATH ' + "$pathname" + ';%PATH%'
|
|
$my_pwsh = '$Env:Path = "' + "$pathname" + ';$Env:Path"'
|
|
|
|
Write-Host ''
|
|
Write-Host '**********************************' -ForegroundColor red -BackgroundColor white
|
|
Write-Host '* IMPORTANT -- READ ME *' -ForegroundColor red -BackgroundColor white
|
|
Write-Host '* (run the PATH command below) *' -ForegroundColor red -BackgroundColor white
|
|
Write-Host '**********************************' -ForegroundColor red -BackgroundColor white
|
|
Write-Host ''
|
|
Write-Output ""
|
|
Write-Output "Copy, paste, and run the appropriate command to update your PATH:"
|
|
Write-Output "(or close and reopen the terminal, or reboot)"
|
|
Write-Output ""
|
|
Write-Output "cmd.exe:"
|
|
Write-Output " $my_cmd"
|
|
Write-Output ""
|
|
Write-Output "PowerShell:"
|
|
Write-Output " $my_pwsh"
|
|
Write-Output ""
|
|
}
|
|
}
|
|
|
|
#$has_local_bin = echo "$Env:PATH" | Select-String -Pattern '\.local.bin'
|
|
#if (!$has_local_bin)
|
|
#{
|
|
webi_path_add ~/.local/bin
|
|
#}
|
|
|
|
{ { installer } }
|
|
|
|
webi_path_add ~/.local/bin
|
|
|
|
# Done
|
|
Pop-Location
|