Script to setup Windows 10 1903
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

142 lines
5.2 KiB

<#
.SYNOPSIS
Get direct URL of Sophia Script archive, depending on which Windows it is run on
.SYNOPSIS
For example, if you start script on Windows 11 you will start downloading Sophia Script for Windows 11
.EXAMPLE To download for PowerShell 5.1
choco install sophia --force -y
.EXAMPLE To download for PowerShell 7
choco install sophia --params "/PS7" --force -y
#>
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$Parameters = @{
Uri = "https://api.github.com/repos/farag2/Sophia-Script-for-Windows/releases/latest"
UseBasicParsing = $true
}
$LatestGitHubRelease = (Invoke-RestMethod @Parameters).tag_name
$Parameters = @{
Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
UseBasicParsing = $true
}
$JSONVersions = Invoke-RestMethod @Parameters
$null = $packageParameters
$packageParameters = $env:chocolateyPackageParameters
switch ((Get-CimInstance -ClassName Win32_OperatingSystem).BuildNumber)
{
"17763"
{
# Check for Windows 10 LTSC 2019
if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName) -match "LTSC 2019")
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_LTSC2019
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.LTSC.2019.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_10_LTSC2019"
}
else
{
Write-Verbose -Message "Windows version is not supported. Update your Windows" -Verbose
# Receive updates for other Microsoft products when you update Windows
(New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
# Check for updates
Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
# Open the "Windows Update" page
Start-Process -FilePath "ms-settings:windowsupdate"
pause
exit
}
}
"19044"
{
# Check for Windows 10 LTSC 2021
if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName) -match "LTSC 2021")
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_LTSC2021
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.LTSC.2021.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_10_LTSC2021"
}
else
{
Write-Verbose -Message "Windows version is not supported. Update your Windows" -Verbose
# Receive updates for other Microsoft products when you update Windows
(New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
# Check for updates
Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
# Open the "Windows Update" page
Start-Process -FilePath "ms-settings:windowsupdate"
pause
exit
}
}
"19045"
{
if ($packageParameters)
{
if ($packageParameters.Contains('PS7'))
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_PowerShell_7
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.PowerShell.7.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_10_PowerShell_7"
}
}
else
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_PowerShell_5_1
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_10_PowerShell_5_1"
}
}
{$_ -ge 26100}
{
# Check for Windows 11 LTSC 2024
if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName) -match "LTSC 2024")
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_11_LTSC2024
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.11.LTSC.2024.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_11_LTSC2024"
}
else
{
if ($packageParameters)
{
if ($packageParameters.Contains('PS7'))
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_11_PowerShell_7
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.11.PowerShell.7.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_11_PowerShell_7"
}
}
else
{
$LatestRelease = $JSONVersions.Sophia_Script_Windows_11_PowerShell_5_1
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.11.v$LatestRelease.zip"
$Hash = "Hash_Sophia_Script_Windows_11_PowerShell_5_1"
}
}
}
}
$Downloads = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$packageArgs = @{
packageName = $env:ChocolateyPackageName
fileType = "ZIP"
unzipLocation = $Downloads
url = $URL
checksum = $Hash
checksumType = "sha256"
}
Install-ChocolateyZipPackage @packageArgs