mirror of
https://github.com/msvc-win/get.msvc.win.git
synced 2025-12-16 21:27:39 +00:00
Add some extra features
This commit is contained in:
parent
a238ee84d2
commit
427eb4abfa
4 changed files with 103 additions and 21 deletions
27
32
27
32
|
|
@ -1,6 +1,3 @@
|
||||||
|
|
||||||
# This script is hosted on <b>https://get.msvc.win/32</b> for <b><a href="https://msvc.win/">MSVC Win Project</a></b><br />To get started, run <b>irm get.msvc.win/32 | iex</b> inside of PowerShell<hr><pre>
|
|
||||||
|
|
||||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||||
|
|
||||||
function Main {
|
function Main {
|
||||||
|
|
@ -41,20 +38,37 @@ function Main {
|
||||||
$aria2Dir = Join-Path $tempDir "aria2"
|
$aria2Dir = Join-Path $tempDir "aria2"
|
||||||
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
||||||
|
|
||||||
# --- Check User IP location---
|
# --- Check User IP location ---
|
||||||
|
|
||||||
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
||||||
$countryCode = $geoInfo.country
|
$countryCode = $geoInfo.country
|
||||||
|
|
||||||
|
# --- Check Proxy Settings ---
|
||||||
|
$webProxy = [System.Net.WebRequest]::GetSystemWebProxy()
|
||||||
|
$uri = New-Object Uri("http://example.com")
|
||||||
|
$proxyUri = $webProxy.GetProxy($uri)
|
||||||
|
|
||||||
|
$useProxy = $proxyUri.Host -ne "example.com"
|
||||||
|
if ($useProxy) {
|
||||||
|
$proxyAddress = $proxyUri.Authority
|
||||||
|
Write-Host "Detected system proxy: $proxyAddress"
|
||||||
|
}
|
||||||
|
|
||||||
# --- Ensure aria2c is available ---
|
# --- Ensure aria2c is available ---
|
||||||
if (-not (Test-Path $aria2Exe)) {
|
if (-not (Test-Path $aria2Exe)) {
|
||||||
Write-Host "Downloading aria2c..."
|
Write-Host "Downloading aria2c..."
|
||||||
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
||||||
if ($countryCode -eq 'CN') {
|
if ($countryCode -eq 'CN') {
|
||||||
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-32bit-build1.zip"
|
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-32bit-build1.zip"
|
||||||
|
# Workaround for specific Chinese ISPs that would not resolve domains properly like aka.ms
|
||||||
|
$regionalWorkaround = "--async-dns-server=223.5.5.5"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-32bit-build1.zip"
|
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-32bit-build1.zip"
|
||||||
|
$regionalWorkaround = ""
|
||||||
|
}
|
||||||
|
if ($useProxy) {
|
||||||
|
$regionalWorkaround = "--all-proxy=$proxyAddress"
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
||||||
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
||||||
|
|
@ -85,6 +99,7 @@ function Main {
|
||||||
"--max-connection-per-server=8",
|
"--max-connection-per-server=8",
|
||||||
"--split=8",
|
"--split=8",
|
||||||
"--min-split-size=1M",
|
"--min-split-size=1M",
|
||||||
|
"$regionalWorkaround",
|
||||||
"`"$($item.Url)`""
|
"`"$($item.Url)`""
|
||||||
) -NoNewWindow -Wait
|
) -NoNewWindow -Wait
|
||||||
}
|
}
|
||||||
|
|
@ -97,9 +112,9 @@ function Main {
|
||||||
# --- Install VC++ Redistributables ---
|
# --- Install VC++ Redistributables ---
|
||||||
foreach ($item in $downloads | Where-Object { $_.Name -like "vcredist*" }) {
|
foreach ($item in $downloads | Where-Object { $_.Name -like "vcredist*" }) {
|
||||||
$exePath = Join-Path $tempDir $item.Name
|
$exePath = Join-Path $tempDir $item.Name
|
||||||
$args = if ($item.Year -in @("2005", "2008")) { "/q" } else { "/quiet /norestart" }
|
$arguments = if ($item.Year -in @("2005", "2008")) { "/q" } else { "/quiet /norestart" }
|
||||||
Write-Host "Installing $($item.Name)..."
|
Write-Host "Installing $($item.Name)..."
|
||||||
Start-Process -FilePath $exePath -ArgumentList $args -Wait
|
Start-Process -FilePath $exePath -ArgumentList $arguments -Wait
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- Cleanup ---
|
# --- Cleanup ---
|
||||||
|
|
|
||||||
33
64
33
64
|
|
@ -1,6 +1,3 @@
|
||||||
|
|
||||||
# This script is hosted on <b>https://get.msvc.win/64</b> for <b><a href="https://msvc.win/">MSVC Win Project</a></b><br />To get started, run <b>irm get.msvc.win/64 | iex</b> inside of PowerShell<hr><pre>
|
|
||||||
|
|
||||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||||
|
|
||||||
function Main {
|
function Main {
|
||||||
|
|
@ -9,6 +6,12 @@ function Main {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$procArch = $Env:PROCESSOR_ARCHITECTURE
|
||||||
|
if ($procArch -eq 'x86') {
|
||||||
|
Write-Warning "This script does not support 32-bit Windows. Exiting..."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
$flagPath = "$env:TEMP\elevation_success.flag"
|
$flagPath = "$env:TEMP\elevation_success.flag"
|
||||||
if (Test-Path $flagPath) { Remove-Item $flagPath -ErrorAction SilentlyContinue }
|
if (Test-Path $flagPath) { Remove-Item $flagPath -ErrorAction SilentlyContinue }
|
||||||
|
|
||||||
|
|
@ -41,20 +44,37 @@ function Main {
|
||||||
$aria2Dir = Join-Path $tempDir "aria2"
|
$aria2Dir = Join-Path $tempDir "aria2"
|
||||||
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
||||||
|
|
||||||
# --- Check User IP location---
|
# --- Check User IP location ---
|
||||||
|
|
||||||
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
||||||
$countryCode = $geoInfo.country
|
$countryCode = $geoInfo.country
|
||||||
|
|
||||||
|
# --- Check Proxy Settings ---
|
||||||
|
$webProxy = [System.Net.WebRequest]::GetSystemWebProxy()
|
||||||
|
$uri = New-Object Uri("http://example.com")
|
||||||
|
$proxyUri = $webProxy.GetProxy($uri)
|
||||||
|
|
||||||
|
$useProxy = $proxyUri.Host -ne "example.com"
|
||||||
|
if ($useProxy) {
|
||||||
|
$proxyAddress = $proxyUri.Authority
|
||||||
|
Write-Host "Detected system proxy: $proxyAddress"
|
||||||
|
}
|
||||||
|
|
||||||
# --- Ensure aria2c is available ---
|
# --- Ensure aria2c is available ---
|
||||||
if (-not (Test-Path $aria2Exe)) {
|
if (-not (Test-Path $aria2Exe)) {
|
||||||
Write-Host "Downloading aria2c..."
|
Write-Host "Downloading aria2c..."
|
||||||
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
||||||
if ($countryCode -eq 'CN') {
|
if ($countryCode -eq 'CN') {
|
||||||
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-64bit-build1.zip"
|
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-64bit-build1.zip"
|
||||||
|
# Workaround for specific Chinese ISPs that would not resolve domains properly like aka.ms
|
||||||
|
$regionalWorkaround = "--async-dns-server=223.5.5.5"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-64bit-build1.zip"
|
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-64bit-build1.zip"
|
||||||
|
$regionalWorkaround = ""
|
||||||
|
}
|
||||||
|
if ($useProxy) {
|
||||||
|
$regionalWorkaround = "--all-proxy=$proxyAddress"
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
||||||
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
||||||
|
|
@ -90,6 +110,7 @@ function Main {
|
||||||
"--max-connection-per-server=8",
|
"--max-connection-per-server=8",
|
||||||
"--split=8",
|
"--split=8",
|
||||||
"--min-split-size=1M",
|
"--min-split-size=1M",
|
||||||
|
"$regionalWorkaround",
|
||||||
"`"$($item.Url)`""
|
"`"$($item.Url)`""
|
||||||
) -NoNewWindow -Wait
|
) -NoNewWindow -Wait
|
||||||
}
|
}
|
||||||
|
|
@ -97,9 +118,9 @@ function Main {
|
||||||
# --- Install VC++ Redistributables ---
|
# --- Install VC++ Redistributables ---
|
||||||
foreach ($item in $downloads | Where-Object { $_.Name -like "vcredist*" }) {
|
foreach ($item in $downloads | Where-Object { $_.Name -like "vcredist*" }) {
|
||||||
$exePath = Join-Path $tempDir $item.Name
|
$exePath = Join-Path $tempDir $item.Name
|
||||||
$args = if ($item.Year -in @("2005", "2008")) { "/q" } else { "/quiet /norestart" }
|
$arguments = if ($item.Year -in @("2005", "2008")) { "/q" } else { "/quiet /norestart" }
|
||||||
Write-Host "Installing $($item.Name)..."
|
Write-Host "Installing $($item.Name)..."
|
||||||
Start-Process -FilePath $exePath -ArgumentList $args -Wait
|
Start-Process -FilePath $exePath -ArgumentList $arguments -Wait
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- Cleanup ---
|
# --- Cleanup ---
|
||||||
|
|
|
||||||
28
dx
28
dx
|
|
@ -1,6 +1,3 @@
|
||||||
|
|
||||||
# This script is hosted on <b>https://get.msvc.win/</b> for <b><a href="https://msvc.win/">MSVC Win Project</a></b><br />To get started, run <b>irm get.msvc.win | iex</b> inside of PowerShell<hr><pre>
|
|
||||||
|
|
||||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||||
|
|
||||||
function Main {
|
function Main {
|
||||||
|
|
@ -41,20 +38,40 @@ function Main {
|
||||||
$aria2Dir = Join-Path $tempDir "aria2"
|
$aria2Dir = Join-Path $tempDir "aria2"
|
||||||
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
||||||
|
|
||||||
# --- Check User IP location---
|
# --- Check User IP location ---
|
||||||
|
|
||||||
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
||||||
$countryCode = $geoInfo.country
|
$countryCode = $geoInfo.country
|
||||||
|
|
||||||
|
# --- Check Proxy Settings ---
|
||||||
|
$webProxy = [System.Net.WebRequest]::GetSystemWebProxy()
|
||||||
|
$uri = New-Object Uri("http://example.com")
|
||||||
|
$proxyUri = $webProxy.GetProxy($uri)
|
||||||
|
|
||||||
|
$useProxy = $proxyUri.Host -ne "example.com"
|
||||||
|
if ($useProxy) {
|
||||||
|
$proxyAddress = $proxyUri.Authority
|
||||||
|
Write-Host "Detected system proxy: $proxyAddress"
|
||||||
|
}
|
||||||
|
|
||||||
# --- Ensure aria2c is available ---
|
# --- Ensure aria2c is available ---
|
||||||
if (-not (Test-Path $aria2Exe)) {
|
if (-not (Test-Path $aria2Exe)) {
|
||||||
Write-Host "Downloading aria2c..."
|
Write-Host "Downloading aria2c..."
|
||||||
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
||||||
if ($countryCode -eq 'CN') {
|
if ($countryCode -eq 'CN') {
|
||||||
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-32bit-build1.zip"
|
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-32bit-build1.zip"
|
||||||
|
# Workaround for specific Chinese ISPs that would not resolve domains properly like aka.ms
|
||||||
|
$regionalWorkaround = "--async-dns-server=223.5.5.5"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-32bit-build1.zip"
|
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-64bit-build1.zip"
|
||||||
|
$regionalWorkaround = ""
|
||||||
|
}
|
||||||
|
if ($useProxy) {
|
||||||
|
$regionalWorkaround = "--all-proxy=$proxyAddress"
|
||||||
|
}
|
||||||
|
if ($procArch -ne "AMD64") {
|
||||||
|
$aria2Url = $aria2Url.Replace("64bit", "32bit")
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
||||||
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
||||||
|
|
@ -79,6 +96,7 @@ function Main {
|
||||||
"--max-connection-per-server=8",
|
"--max-connection-per-server=8",
|
||||||
"--split=8",
|
"--split=8",
|
||||||
"--min-split-size=1M",
|
"--min-split-size=1M",
|
||||||
|
"$regionalWorkaround",
|
||||||
"`"$($item.Url)`""
|
"`"$($item.Url)`""
|
||||||
) -NoNewWindow -Wait
|
) -NoNewWindow -Wait
|
||||||
}
|
}
|
||||||
|
|
|
||||||
36
index.html
36
index.html
|
|
@ -9,6 +9,8 @@ function Main {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$procArch = $Env:PROCESSOR_ARCHITECTURE
|
||||||
|
|
||||||
$flagPath = "$env:TEMP\elevation_success.flag"
|
$flagPath = "$env:TEMP\elevation_success.flag"
|
||||||
if (Test-Path $flagPath) { Remove-Item $flagPath -ErrorAction SilentlyContinue }
|
if (Test-Path $flagPath) { Remove-Item $flagPath -ErrorAction SilentlyContinue }
|
||||||
|
|
||||||
|
|
@ -41,20 +43,39 @@ function Main {
|
||||||
$aria2Dir = Join-Path $tempDir "aria2"
|
$aria2Dir = Join-Path $tempDir "aria2"
|
||||||
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
$aria2Exe = Join-Path $aria2Dir "aria2c.exe"
|
||||||
|
|
||||||
# --- Check User IP location---
|
# --- Check User IP location ---
|
||||||
|
|
||||||
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
$geoInfo = Invoke-RestMethod -Uri 'https://ipapi.co/json/'
|
||||||
$countryCode = $geoInfo.country
|
$countryCode = $geoInfo.country
|
||||||
|
|
||||||
|
# --- Check Proxy Settings ---
|
||||||
|
$webProxy = [System.Net.WebRequest]::GetSystemWebProxy()
|
||||||
|
$uri = New-Object Uri("http://example.com")
|
||||||
|
$proxyUri = $webProxy.GetProxy($uri)
|
||||||
|
|
||||||
|
$useProxy = $proxyUri.Host -ne "example.com"
|
||||||
|
if ($useProxy) {
|
||||||
|
$proxyAddress = $proxyUri.Authority
|
||||||
|
Write-Host "Detected system proxy: $proxyAddress"
|
||||||
|
}
|
||||||
|
|
||||||
# --- Ensure aria2c is available ---
|
# --- Ensure aria2c is available ---
|
||||||
if (-not (Test-Path $aria2Exe)) {
|
if (-not (Test-Path $aria2Exe)) {
|
||||||
Write-Host "Downloading aria2c..."
|
Write-Host "Downloading aria2c..."
|
||||||
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
$aria2Zip = Join-Path $tempDir "aria2.zip"
|
||||||
if ($countryCode -eq 'CN') {
|
if ($countryCode -eq 'CN') {
|
||||||
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-64bit-build1.zip"
|
$aria2Url = "https://gitee.com/HikariCalyx/OSTRemote/releases/download/v1.0/aria2-1.37.0-win-64bit-build1.zip"
|
||||||
|
# Workaround for specific Chinese ISPs that would not resolve domains properly like aka.ms
|
||||||
|
$regionalWorkaround = "--async-dns-server=223.5.5.5"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-64bit-build1.zip"
|
$aria2Url = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-64bit-build1.zip"
|
||||||
|
$regionalWorkaround = ""
|
||||||
|
}
|
||||||
|
if ($useProxy) {
|
||||||
|
$regionalWorkaround = "--all-proxy=$proxyAddress"
|
||||||
|
}
|
||||||
|
if ($procArch -ne "AMD64") {
|
||||||
|
$aria2Url = $aria2Url.Replace("64bit", "32bit")
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
Invoke-WebRequest -Uri $aria2Url -OutFile $aria2Zip
|
||||||
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
Expand-Archive -Path $aria2Zip -DestinationPath $aria2Dir -Force
|
||||||
|
|
@ -81,6 +102,9 @@ function Main {
|
||||||
|
|
||||||
# --- Download everything up front ---
|
# --- Download everything up front ---
|
||||||
foreach ($item in $downloads) {
|
foreach ($item in $downloads) {
|
||||||
|
if ($item.Name -Match "x64" -and $procArch -ne "AMD64") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
$outFile = Join-Path $tempDir $item.Name
|
$outFile = Join-Path $tempDir $item.Name
|
||||||
Write-Host "Downloading $($item.Name)..."
|
Write-Host "Downloading $($item.Name)..."
|
||||||
Start-Process -FilePath $aria2Exe -ArgumentList @(
|
Start-Process -FilePath $aria2Exe -ArgumentList @(
|
||||||
|
|
@ -91,6 +115,7 @@ function Main {
|
||||||
"--max-connection-per-server=8",
|
"--max-connection-per-server=8",
|
||||||
"--split=8",
|
"--split=8",
|
||||||
"--min-split-size=1M",
|
"--min-split-size=1M",
|
||||||
|
"$regionalWorkaround",
|
||||||
"`"$($item.Url)`""
|
"`"$($item.Url)`""
|
||||||
) -NoNewWindow -Wait
|
) -NoNewWindow -Wait
|
||||||
}
|
}
|
||||||
|
|
@ -102,10 +127,13 @@ function Main {
|
||||||
|
|
||||||
# --- Install VC++ Redistributables ---
|
# --- Install VC++ Redistributables ---
|
||||||
foreach ($item in $downloads | Where-Object { $_.Name -like "vcredist*" }) {
|
foreach ($item in $downloads | Where-Object { $_.Name -like "vcredist*" }) {
|
||||||
|
if ($item.Name -Match "x64" -and $procArch -ne "AMD64") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
$exePath = Join-Path $tempDir $item.Name
|
$exePath = Join-Path $tempDir $item.Name
|
||||||
$args = if ($item.Year -in @("2005", "2008")) { "/q" } else { "/quiet /norestart" }
|
$arguments = if ($item.Year -in @("2005", "2008")) { "/q" } else { "/quiet /norestart" }
|
||||||
Write-Host "Installing $($item.Name)..."
|
Write-Host "Installing $($item.Name)..."
|
||||||
Start-Process -FilePath $exePath -ArgumentList $args -Wait
|
Start-Process -FilePath $exePath -ArgumentList $arguments -Wait
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- Cleanup ---
|
# --- Cleanup ---
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue