diff --git a/Download_Sophia.ps1 b/Download_Sophia.ps1
index 2de44144..a9c7b02d 100644
--- a/Download_Sophia.ps1
+++ b/Download_Sophia.ps1
@@ -49,7 +49,7 @@ switch ((Get-CimInstance -ClassName Win32_OperatingSystem).BuildNumber)
Verbose = $true
}
- $Version = "LTSC2019"
+ $Version = "Windows_10_LTSC2019"
}
else
{
@@ -79,7 +79,7 @@ switch ((Get-CimInstance -ClassName Win32_OperatingSystem).BuildNumber)
UseBasicParsing = $true
Verbose = $true
}
- $Version = "LTSC2021"
+ $Version = "Windows_10_LTSC2021"
}
else
{
@@ -163,7 +163,7 @@ switch ((Get-CimInstance -ClassName Win32_OperatingSystem).BuildNumber)
Verbose = $true
}
- $Version = "LTSC2024"
+ $Version = "Windows_11_LTSC2024"
}
}
}
@@ -176,10 +176,10 @@ if (-not (Test-Path -Path "$DownloadsFolder\Sophia.Script.zip"))
# Check for updates
Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- # Open the "Windows Update" page
+ # Open t"Windows Update" page
Start-Process -FilePath "ms-settings:windowsupdate"
- return
+ exit
}
$Parameters = @{
@@ -195,23 +195,25 @@ Start-Sleep -Second 1
switch ($Version)
{
- "LTSC2019"
+ "Windows_10_LTSC2019"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_LTSC_2019_v$LatestRelease"
+
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
{
Set-Location -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_LTSC_2019_v$LatestRelease"
}
}
- "LTSC2021"
+ "Windows_10_LTSC2021"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_LTSC_2021_v$LatestRelease"
+
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
{
Set-Location -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_LTSC_2021_v$LatestRelease"
}
}
- "LTSC2024"
+ "Windows_11_LTSC2024"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_11_LTSC_2024_v$LatestRelease"
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
@@ -222,6 +224,7 @@ switch ($Version)
"Windows_10_PowerShell_5.1"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_v$LatestRelease"
+
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
{
Set-Location -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_v$LatestRelease"
@@ -230,6 +233,7 @@ switch ($Version)
"Windows_10_PowerShell_7"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_PowerShell_7_v$LatestRelease"
+
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
{
Set-Location -Path "$DownloadsFolder\Sophia_Script_for_Windows_10_PowerShell_7_v$LatestRelease"
@@ -238,6 +242,7 @@ switch ($Version)
"Windows_11_PowerShell_5.1"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_11_v$LatestRelease"
+
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
{
Set-Location -Path "$DownloadsFolder\Sophia_Script_for_Windows_11_v$LatestRelease"
@@ -246,6 +251,7 @@ switch ($Version)
"Windows_11_PowerShell_7"
{
Invoke-Item -Path "$DownloadsFolder\Sophia_Script_for_Windows_11_PowerShell_7_v$LatestRelease"
+
if ((([System.Security.Principal.WindowsIdentity]::GetCurrent()).Owner -eq "S-1-5-32-544"))
{
Set-Location -Path "$DownloadsFolder\Sophia_Script_for_Windows_11_PowerShell_7_v$LatestRelease"
diff --git a/Wrapper/Localizations/en-US/tooltip_Windows_10.json b/Wrapper/Localizations/en-US/tooltip_Windows_10.json
index 6738c215..07e9b2dc 100644
--- a/Wrapper/Localizations/en-US/tooltip_Windows_10.json
+++ b/Wrapper/Localizations/en-US/tooltip_Windows_10.json
@@ -2084,7 +2084,7 @@
"Arg": {
"Zero": {
"Tag": "",
- "ToolTip": "Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc). This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources."
+ "ToolTip": "Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc). This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources."
}
}
}
diff --git a/Wrapper/Localizations/en-US/tooltip_Windows_11.json b/Wrapper/Localizations/en-US/tooltip_Windows_11.json
index 09deb71e..82edc77b 100644
--- a/Wrapper/Localizations/en-US/tooltip_Windows_11.json
+++ b/Wrapper/Localizations/en-US/tooltip_Windows_11.json
@@ -1955,7 +1955,7 @@
"Arg": {
"Zero": {
"Tag": "",
- "ToolTip": "Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc). This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources."
+ "ToolTip": "Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc). This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources."
}
}
}
diff --git a/src/Sophia_Script_for_Windows_10/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/uk-UA/Sophia.psd1
index 6bbba916..ecef3b25 100644
--- a/src/Sophia_Script_for_Windows_10/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_10/Localizations/uk-UA/Sophia.psd1
@@ -12,7 +12,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1
index 06bd477a..fae8c07f 100644
--- a/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1
@@ -301,6 +301,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -552,52 +662,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_PowerShell_5_1
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_PowerShell_5_1
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether LGPO.exe exists in the bin folder
@@ -646,40 +736,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -729,137 +799,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -920,7 +859,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -3710,7 +3649,7 @@ public static extern int HashData(byte[] pbData, int cbData, byte[] piet, int ou
}
}
- Remove-Item -Path "$env:SystemRoot\System32\powershell_temp.exe" -Force
+ Remove-Item -Path "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell_temp.exe" -Force
}
<#
@@ -4740,114 +4679,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
+
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
+ }
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4856,114 +4773,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
+
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
+ }
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -5357,18 +5252,6 @@ public static bool MarkFileDelete (string sourcefile)
{
try
{
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
# Downloading the latest OneDrive installer 64-bit
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message $Localization.OneDriveDownloading -Verbose
@@ -5407,12 +5290,14 @@ public static bool MarkFileDelete (string sourcefile)
Remove-Item -Path "$DownloadsFolder\OneDriveSetup.exe" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
@@ -6564,10 +6449,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -9939,7 +9826,7 @@ function UninstallPCHealthCheck
foreach ($MSI in @(Get-ChildItem -Path "$env:SystemRoot\Installer" -Filter *.msi -File -Force))
{
$Name = $Files.Keys | Where-Object -FilterScript {$_ -eq $MSI.Name}
- # Check if necessary files exist in folder unless we get a bunch of errors for $File variable
+ # Check whether necessary files exist in folder unless we get a bunch of errors for $File variable
if ($Name)
{
$File = $Files[$Name]
@@ -9979,69 +9866,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
+ Invoke-WebRequest @Parameters
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -10074,48 +9933,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -10126,7 +9950,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -10135,33 +9971,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -10172,7 +10005,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -10181,17 +10026,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -10512,42 +10366,38 @@ function Install-WSL
{
try
{
- # Check the internet connection
+ # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
+ # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
+ [PSCustomObject]@{
+ "Distribution" = $_.FriendlyName
+ "Alias" = $_.Name
+ }
}
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json") -ErrorAction SilentlyContinue
- try
- {
- # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
- # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
- UseBasicParsing = $true
- Verbose = $true
- }
- $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
- [PSCustomObject]@{
- "Distribution" = $_.FriendlyName
- "Alias" = $_.Name
- }
- }
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
- Add-Type -AssemblyName PresentationCore, PresentationFramework
+ Add-Type -AssemblyName PresentationCore, PresentationFramework
- #region Variables
- $CommandTag = $null
+ #region Variables
+ $CommandTag = $null
- #region XAML Markup
- # The section defines the design of the upcoming dialog box
- [xml]$XAML = @"
+ #region XAML Markup
+ # The section defines the design of the upcoming dialog box
+ [xml]$XAML = @"
"@
- #endregion XAML Markup
-
- $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
- $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
+ #endregion XAML Markup
- $ButtonInstall.Content = $Localization.Install
- #endregion Variables
+ $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
+ $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
+ Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
+ }
- #region Functions
- function RadioButtonChecked
- {
- $Script:CommandTag = $_.OriginalSource.Tag
- if (-not $ButtonInstall.IsEnabled)
- {
- $ButtonInstall.IsEnabled = $true
- }
- }
+ $ButtonInstall.Content = $Localization.Install
+ #endregion Variables
- function ButtonInstallClicked
- {
- Write-Warning -Message $Script:CommandTag
+ #region Functions
+ function RadioButtonChecked
+ {
+ $Script:CommandTag = $_.OriginalSource.Tag
+ if (-not $ButtonInstall.IsEnabled)
+ {
+ $ButtonInstall.IsEnabled = $true
+ }
+ }
- Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
+ function ButtonInstallClicked
+ {
+ Write-Warning -Message $Script:CommandTag
- $Form.Close()
+ Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
- # Receive updates for other Microsoft products when you update Windows
- (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
+ $Form.Close()
- # Check for updates
- Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- }
- #endregion
+ # Receive updates for other Microsoft products when you update Windows
+ (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
- foreach ($Distribution in $Distributions)
- {
- $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
- $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
- $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
- $Panel.Orientation = "Horizontal"
- $RadioButton.GroupName = "WslDistribution"
- $RadioButton.Tag = $Distribution.Alias
- $RadioButton.Add_Checked({RadioButtonChecked})
- $TextBlock.Text = $Distribution.Distribution
- $Panel.Children.Add($RadioButton) | Out-Null
- $Panel.Children.Add($TextBlock) | Out-Null
- $PanelContainer.Children.Add($Panel) | Out-Null
- }
+ # Check for updates
+ Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
+ }
+ #endregion
- $ButtonInstall.Add_Click({ButtonInstallClicked})
+ foreach ($Distribution in $Distributions)
+ {
+ $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
+ $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
+ $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
+ $Panel.Orientation = "Horizontal"
+ $RadioButton.GroupName = "WslDistribution"
+ $RadioButton.Tag = $Distribution.Alias
+ $RadioButton.Add_Checked({RadioButtonChecked})
+ $TextBlock.Text = $Distribution.Distribution
+ $Panel.Children.Add($RadioButton) | Out-Null
+ $Panel.Children.Add($TextBlock) | Out-Null
+ $PanelContainer.Children.Add($Panel) | Out-Null
+ }
- #region Sendkey function
- # Emulate the Backspace key sending to prevent the console window to freeze
- Start-Sleep -Milliseconds 500
+ $ButtonInstall.Add_Click({ButtonInstallClicked})
- Add-Type -AssemblyName System.Windows.Forms
+ #region Sendkey function
+ # Emulate the Backspace key sending to prevent the console window to freeze
+ Start-Sleep -Milliseconds 500
- # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
- Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 10")} | ForEach-Object -Process {
- # Show window, if minimized
- [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
+ Add-Type -AssemblyName System.Windows.Forms
- Start-Sleep -Seconds 1
+ # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
+ Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 10")} | ForEach-Object -Process {
+ # Show window, if minimized
+ [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
- # Force move the console window to the foreground
- [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
+ Start-Sleep -Seconds 1
- Start-Sleep -Seconds 1
+ # Force move the console window to the foreground
+ [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
- # Emulate the Backspace key sending
- [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
- }
- #endregion Sendkey function
+ Start-Sleep -Seconds 1
- # Force move the WPF form to the foreground
- $Window.Add_Loaded({$Window.Activate()})
- $Form.ShowDialog() | Out-Null
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com")
- Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com") -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ # Emulate the Backspace key sending
+ [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
}
+ #endregion Sendkey function
+
+ # Force move the WPF form to the foreground
+ $Window.Add_Loaded({$Window.Activate()})
+ $Form.ShowDialog() | Out-Null
}
#endregion WSL
@@ -11589,29 +11427,6 @@ function HEVC
return
}
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
-
- return
- }
-
switch ($PSCmdlet.ParameterSetName)
{
"Install"
@@ -11654,23 +11469,46 @@ function HEVC
# Installing "HEVC Video Extensions from Device Manufacturer"
if ([System.Version]$HEVCPackageName -gt [System.Version](Get-AppxPackage -Name Microsoft.HEVCVideoExtension).Version)
{
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ try
+ {
+ # Check whether https://store.rg-adguard.net is alive
+ $Parameters = @{
+ Uri = $TempURL
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
- Write-Verbose -Message $Localization.HEVCDownloading -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = $TempURL
- OutFile = "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx"
- UseBasicParsing = $true
- Verbose = $true
+ Write-Verbose -Message $Localization.HEVCDownloading -Verbose
+
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = $TempURL
+ OutFile = "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Add-AppxPackage -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Verbose
+ Remove-Item -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Force
}
- Invoke-WebRequest @Parameters
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- Add-AppxPackage -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Verbose
- Remove-Item -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Force
+ return
+ }
}
else
{
@@ -11684,6 +11522,8 @@ function HEVC
Write-Error -Message ($Localization.NoResponse -f "https://store.rg-adguard.net/api/GetFiles") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Manually"
@@ -13713,7 +13553,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -13803,6 +13643,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13826,6 +13667,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13878,7 +13720,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateSet("1.0.0.1", "1.1.1.1", "149.112.112.112", "8.8.4.4", "8.8.8.8", "9.9.9.9")]
[ValidateScript({
- # Check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Check whether $PrimaryDNS is not equal to $SecondaryDNS
$_ -ne $SecondaryDNS
})]
[string]
@@ -13887,7 +13729,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateSet("1.0.0.1", "1.1.1.1", "149.112.112.112", "8.8.4.4", "8.8.8.8", "9.9.9.9")]
[ValidateScript({
- # Check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Check whether $PrimaryDNS is not equal to $SecondaryDNS
$_ -ne $PrimaryDNS
})]
[string]
@@ -14541,8 +14383,8 @@ function BitmapImageNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -14632,8 +14474,8 @@ function RichTextDocumentNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -14816,7 +14658,7 @@ function UseStoreOpenWith
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -14847,6 +14689,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -14907,6 +14751,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_10/Sophia.ps1 b/src/Sophia_Script_for_Windows_10/Sophia.ps1
index e8135008..256a731d 100644
--- a/src/Sophia_Script_for_Windows_10/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_10/Sophia.ps1
@@ -1408,7 +1408,7 @@ UseStoreOpenWith -Hide
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы
diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/uk-UA/Sophia.psd1
index 012092ba..fb8b18f5 100644
--- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/uk-UA/Sophia.psd1
@@ -12,7 +12,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Module/Sophia.psm1
index 4da62585..a906f016 100644
--- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Module/Sophia.psm1
@@ -299,6 +299,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -513,52 +623,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_LTSC2019
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_LTSC2019
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether LGPO.exe exists in the bin folder
@@ -617,40 +707,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10_LTSC_2019
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10_LTSC_2019
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -697,137 +767,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -888,7 +827,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -3639,114 +3578,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -3755,114 +3672,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -5154,10 +5049,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -8168,69 +8065,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
+ Invoke-WebRequest @Parameters
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -8263,48 +8132,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -8315,7 +8149,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -8324,33 +8170,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -8361,7 +8204,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -8370,17 +8225,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -10486,7 +10350,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -10568,6 +10432,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -10591,6 +10456,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -11131,8 +10997,8 @@ function BitmapImageNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -11222,8 +11088,8 @@ function RichTextDocumentNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -11344,7 +11210,7 @@ function MultipleInvokeContext
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -11375,6 +11241,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -11435,6 +11303,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Sophia.ps1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Sophia.ps1
index fe1ad62c..fe69c805 100644
--- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Sophia.ps1
@@ -1047,7 +1047,7 @@ MultipleInvokeContext -Enable
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы
diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/uk-UA/Sophia.psd1
index 4d8c3499..78727e09 100644
--- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/uk-UA/Sophia.psd1
@@ -12,7 +12,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Module/Sophia.psm1
index 785f4af1..7d66578c 100644
--- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Module/Sophia.psm1
@@ -299,6 +299,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -513,52 +623,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_PowerShell_5_1
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_LTSC2021
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether LGPO.exe exists in the bin folder
@@ -617,40 +707,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10_LTSC_2021
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10_LTSC_2021
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -697,137 +767,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -888,7 +827,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -4015,114 +3954,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4131,114 +4048,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -5546,10 +5441,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -8799,69 +8696,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
+ Invoke-WebRequest @Parameters
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -8894,48 +8763,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -8946,7 +8780,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -8955,33 +8801,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -8992,7 +8835,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9001,17 +8856,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -9332,42 +9196,38 @@ function Install-WSL
{
try
{
- # Check the internet connection
+ # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
+ # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
+ [PSCustomObject]@{
+ "Distribution" = $_.FriendlyName
+ "Alias" = $_.Name
+ }
}
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json") -ErrorAction SilentlyContinue
- try
- {
- # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
- # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
- UseBasicParsing = $true
- Verbose = $true
- }
- $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
- [PSCustomObject]@{
- "Distribution" = $_.FriendlyName
- "Alias" = $_.Name
- }
- }
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- Add-Type -AssemblyName PresentationCore, PresentationFramework
+ return
+ }
- #region Variables
- $CommandTag = $null
+ Add-Type -AssemblyName PresentationCore, PresentationFramework
- #region XAML Markup
- # The section defines the design of the upcoming dialog box
- [xml]$XAML = @"
+ #region Variables
+ $CommandTag = $null
+
+ #region XAML Markup
+ # The section defines the design of the upcoming dialog box
+ [xml]$XAML = @"
"@
- #endregion XAML Markup
-
- $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
- $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
+ #endregion XAML Markup
- $ButtonInstall.Content = $Localization.Install
- #endregion Variables
+ $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
+ $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
+ Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
+ }
- #region Functions
- function RadioButtonChecked
- {
- $Script:CommandTag = $_.OriginalSource.Tag
- if (-not $ButtonInstall.IsEnabled)
- {
- $ButtonInstall.IsEnabled = $true
- }
- }
+ $ButtonInstall.Content = $Localization.Install
+ #endregion Variables
- function ButtonInstallClicked
- {
- Write-Warning -Message $Script:CommandTag
+ #region Functions
+ function RadioButtonChecked
+ {
+ $Script:CommandTag = $_.OriginalSource.Tag
+ if (-not $ButtonInstall.IsEnabled)
+ {
+ $ButtonInstall.IsEnabled = $true
+ }
+ }
- Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
+ function ButtonInstallClicked
+ {
+ Write-Warning -Message $Script:CommandTag
- $Form.Close()
+ Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
- # Receive updates for other Microsoft products when you update Windows
- (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
+ $Form.Close()
- # Check for updates
- Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- }
- #endregion
+ # Receive updates for other Microsoft products when you update Windows
+ (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
- foreach ($Distribution in $Distributions)
- {
- $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
- $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
- $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
- $Panel.Orientation = "Horizontal"
- $RadioButton.GroupName = "WslDistribution"
- $RadioButton.Tag = $Distribution.Alias
- $RadioButton.Add_Checked({RadioButtonChecked})
- $TextBlock.Text = $Distribution.Distribution
- $Panel.Children.Add($RadioButton) | Out-Null
- $Panel.Children.Add($TextBlock) | Out-Null
- $PanelContainer.Children.Add($Panel) | Out-Null
- }
+ # Check for updates
+ Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
+ }
+ #endregion
- $ButtonInstall.Add_Click({ButtonInstallClicked})
+ foreach ($Distribution in $Distributions)
+ {
+ $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
+ $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
+ $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
+ $Panel.Orientation = "Horizontal"
+ $RadioButton.GroupName = "WslDistribution"
+ $RadioButton.Tag = $Distribution.Alias
+ $RadioButton.Add_Checked({RadioButtonChecked})
+ $TextBlock.Text = $Distribution.Distribution
+ $Panel.Children.Add($RadioButton) | Out-Null
+ $Panel.Children.Add($TextBlock) | Out-Null
+ $PanelContainer.Children.Add($Panel) | Out-Null
+ }
- #region Sendkey function
- # Emulate the Backspace key sending to prevent the console window to freeze
- Start-Sleep -Milliseconds 500
+ $ButtonInstall.Add_Click({ButtonInstallClicked})
- Add-Type -AssemblyName System.Windows.Forms
+ #region Sendkey function
+ # Emulate the Backspace key sending to prevent the console window to freeze
+ Start-Sleep -Milliseconds 500
- # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
- Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 10 LTSC 2021")} | ForEach-Object -Process {
- # Show window, if minimized
- [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
+ Add-Type -AssemblyName System.Windows.Forms
- Start-Sleep -Seconds 1
+ # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
+ Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 10 LTSC 2021")} | ForEach-Object -Process {
+ # Show window, if minimized
+ [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
- # Force move the console window to the foreground
- [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
+ Start-Sleep -Seconds 1
- Start-Sleep -Seconds 1
+ # Force move the console window to the foreground
+ [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
- # Emulate the Backspace key sending
- [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
- }
- #endregion Sendkey function
+ Start-Sleep -Seconds 1
- # Force move the WPF form to the foreground
- $Window.Add_Loaded({$Window.Activate()})
- $Form.ShowDialog() | Out-Null
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com")
- Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com") -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ # Emulate the Backspace key sending
+ [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
}
+ #endregion Sendkey function
+
+ # Force move the WPF form to the foreground
+ $Window.Add_Loaded({$Window.Activate()})
+ $Form.ShowDialog() | Out-Null
}
#endregion WSL
@@ -11617,7 +11465,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -11699,6 +11547,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -11722,6 +11571,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -11774,7 +11624,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateSet("1.0.0.1", "1.1.1.1", "149.112.112.112", "8.8.4.4", "8.8.8.8", "9.9.9.9")]
[ValidateScript({
- # Check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Check whether $PrimaryDNS is not equal to $SecondaryDNS
$_ -ne $SecondaryDNS
})]
[string]
@@ -11783,7 +11633,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateSet("1.0.0.1", "1.1.1.1", "149.112.112.112", "8.8.4.4", "8.8.8.8", "9.9.9.9")]
[ValidateScript({
- # Check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Check whether $PrimaryDNS is not equal to $SecondaryDNS
$_ -ne $PrimaryDNS
})]
[string]
@@ -12497,8 +12347,8 @@ function BitmapImageNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -12588,8 +12438,8 @@ function RichTextDocumentNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -12710,7 +12560,7 @@ function MultipleInvokeContext
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -12741,6 +12591,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -12801,6 +12653,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Sophia.ps1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Sophia.ps1
index 936abacb..436efe3c 100644
--- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Sophia.ps1
@@ -1212,7 +1212,7 @@ MultipleInvokeContext -Enable
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы
diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/uk-UA/Sophia.psd1
index 6bbba916..ecef3b25 100644
--- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/uk-UA/Sophia.psd1
@@ -12,7 +12,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Manifest/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Manifest/Sophia.psd1
index 01435789..a089f9f6 100644
--- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Manifest/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Manifest/Sophia.psd1
@@ -5,7 +5,7 @@
Author = 'Dmitry "farag" Nefedov'
Copyright = '(c) 2014—2024 farag, Inestic & lowl1f3. All rights reserved'
Description = 'Module for Windows fine-tuning and automating the routine tasks'
- PowerShellVersion = '7.3'
+ PowerShellVersion = '7.4'
ProcessorArchitecture = 'AMD64'
FunctionsToExport = '*'
diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Module/Sophia.psm1
index 4e546b4b..b2f41c12 100644
--- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Module/Sophia.psm1
@@ -300,6 +300,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -551,52 +661,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_PowerShell_5_1
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_PowerShell_5_1
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether all necessary files exist in the bin folder
@@ -650,40 +740,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_10
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -733,137 +803,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -924,7 +863,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -3714,7 +3653,7 @@ public static extern int HashData(byte[] pbData, int cbData, byte[] piet, int ou
}
}
- Remove-Item -Path "$env:SystemRoot\System32\powershell_temp.exe" -Force
+ Remove-Item -Path "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell_temp.exe" -Force
}
<#
@@ -4744,114 +4683,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
+
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
+ }
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4860,114 +4777,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
+
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
+ }
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -5363,18 +5258,6 @@ public static bool MarkFileDelete (string sourcefile)
{
try
{
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
# Downloading the latest OneDrive installer 64-bit
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message $Localization.OneDriveDownloading -Verbose
@@ -5413,12 +5296,14 @@ public static bool MarkFileDelete (string sourcefile)
Remove-Item -Path "$DownloadsFolder\OneDriveSetup.exe" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
@@ -6570,10 +6455,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -9945,7 +9832,7 @@ function UninstallPCHealthCheck
foreach ($MSI in @(Get-ChildItem -Path "$env:SystemRoot\Installer" -Filter *.msi -File -Force))
{
$Name = $Files.Keys | Where-Object -FilterScript {$_ -eq $MSI.Name}
- # Check if necessary files exist in folder unless we get a bunch of errors for $File variable
+ # Check whether necessary files exist in folder unless we get a bunch of errors for $File variable
if ($Name)
{
$File = $Files[$Name]
@@ -9985,69 +9872,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
+ Invoke-WebRequest @Parameters
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -10080,48 +9939,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -10132,7 +9956,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -10141,33 +9977,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -10178,7 +10011,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -10187,17 +10032,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -10518,42 +10372,38 @@ function Install-WSL
{
try
{
- # Check the internet connection
+ # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
+ # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
+ [PSCustomObject]@{
+ "Distribution" = $_.FriendlyName
+ "Alias" = $_.Name
+ }
}
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json") -ErrorAction SilentlyContinue
- try
- {
- # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
- # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
- UseBasicParsing = $true
- Verbose = $true
- }
- $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
- [PSCustomObject]@{
- "Distribution" = $_.FriendlyName
- "Alias" = $_.Name
- }
- }
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
- Add-Type -AssemblyName PresentationCore, PresentationFramework
+ Add-Type -AssemblyName PresentationCore, PresentationFramework
- #region Variables
- $CommandTag = $null
+ #region Variables
+ $CommandTag = $null
- #region XAML Markup
- # The section defines the design of the upcoming dialog box
- [xml]$XAML = @"
+ #region XAML Markup
+ # The section defines the design of the upcoming dialog box
+ [xml]$XAML = @"
"@
- #endregion XAML Markup
-
- $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
- $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
+ #endregion XAML Markup
- $ButtonInstall.Content = $Localization.Install
- #endregion Variables
+ $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
+ $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
+ Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
+ }
- #region Functions
- function RadioButtonChecked
- {
- $Script:CommandTag = $_.OriginalSource.Tag
- if (-not $ButtonInstall.IsEnabled)
- {
- $ButtonInstall.IsEnabled = $true
- }
- }
+ $ButtonInstall.Content = $Localization.Install
+ #endregion Variables
- function ButtonInstallClicked
- {
- Write-Warning -Message $Script:CommandTag
+ #region Functions
+ function RadioButtonChecked
+ {
+ $Script:CommandTag = $_.OriginalSource.Tag
+ if (-not $ButtonInstall.IsEnabled)
+ {
+ $ButtonInstall.IsEnabled = $true
+ }
+ }
- Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
+ function ButtonInstallClicked
+ {
+ Write-Warning -Message $Script:CommandTag
- $Form.Close()
+ Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
- # Receive updates for other Microsoft products when you update Windows
- (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
+ $Form.Close()
- # Check for updates
- Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- }
- #endregion
+ # Receive updates for other Microsoft products when you update Windows
+ (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
- foreach ($Distribution in $Distributions)
- {
- $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
- $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
- $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
- $Panel.Orientation = "Horizontal"
- $RadioButton.GroupName = "WslDistribution"
- $RadioButton.Tag = $Distribution.Alias
- $RadioButton.Add_Checked({RadioButtonChecked})
- $TextBlock.Text = $Distribution.Distribution
- $Panel.Children.Add($RadioButton) | Out-Null
- $Panel.Children.Add($TextBlock) | Out-Null
- $PanelContainer.Children.Add($Panel) | Out-Null
- }
+ # Check for updates
+ Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
+ }
+ #endregion
- $ButtonInstall.Add_Click({ButtonInstallClicked})
+ foreach ($Distribution in $Distributions)
+ {
+ $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
+ $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
+ $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
+ $Panel.Orientation = "Horizontal"
+ $RadioButton.GroupName = "WslDistribution"
+ $RadioButton.Tag = $Distribution.Alias
+ $RadioButton.Add_Checked({RadioButtonChecked})
+ $TextBlock.Text = $Distribution.Distribution
+ $Panel.Children.Add($RadioButton) | Out-Null
+ $Panel.Children.Add($TextBlock) | Out-Null
+ $PanelContainer.Children.Add($Panel) | Out-Null
+ }
- #region Sendkey function
- # Emulate the Backspace key sending to prevent the console window to freeze
- Start-Sleep -Milliseconds 500
+ $ButtonInstall.Add_Click({ButtonInstallClicked})
- Add-Type -AssemblyName System.Windows.Forms
+ #region Sendkey function
+ # Emulate the Backspace key sending to prevent the console window to freeze
+ Start-Sleep -Milliseconds 500
- # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
- Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 10")} | ForEach-Object -Process {
- # Show window, if minimized
- [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
+ Add-Type -AssemblyName System.Windows.Forms
- Start-Sleep -Seconds 1
+ # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
+ Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 10")} | ForEach-Object -Process {
+ # Show window, if minimized
+ [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
- # Force move the console window to the foreground
- [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
+ Start-Sleep -Seconds 1
- Start-Sleep -Seconds 1
+ # Force move the console window to the foreground
+ [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
- # Emulate the Backspace key sending
- [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
- }
- #endregion Sendkey function
+ Start-Sleep -Seconds 1
- # Force move the WPF form to the foreground
- $Window.Add_Loaded({$Window.Activate()})
- $Form.ShowDialog() | Out-Null
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com")
- Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com") -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ # Emulate the Backspace key sending
+ [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
}
+ #endregion Sendkey function
+
+ # Force move the WPF form to the foreground
+ $Window.Add_Loaded({$Window.Activate()})
+ $Form.ShowDialog() | Out-Null
}
#endregion WSL
@@ -11605,29 +11443,6 @@ function HEVC
return
}
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
-
- return
- }
-
switch ($PSCmdlet.ParameterSetName)
{
"Install"
@@ -11670,23 +11485,46 @@ function HEVC
# Installing "HEVC Video Extensions from Device Manufacturer"
if ([System.Version]$HEVCPackageName -gt [System.Version](Get-AppxPackage -Name Microsoft.HEVCVideoExtension).Version)
{
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ try
+ {
+ # Check whether https://store.rg-adguard.net is alive
+ $Parameters = @{
+ Uri = $TempURL
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
- Write-Verbose -Message $Localization.HEVCDownloading -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = $TempURL
- OutFile = "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx"
- UseBasicParsing = $true
- Verbose = $true
+ Write-Verbose -Message $Localization.HEVCDownloading -Verbose
+
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = $TempURL
+ OutFile = "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Add-AppxPackage -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Verbose
+ Remove-Item -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Force
}
- Invoke-WebRequest @Parameters
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- Add-AppxPackage -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Verbose
- Remove-Item -Path "$DownloadsFolder\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.appx" -Force
+ return
+ }
}
else
{
@@ -11700,6 +11538,8 @@ function HEVC
Write-Error -Message ($Localization.NoResponse -f "https://store.rg-adguard.net/api/GetFiles") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Manually"
@@ -13729,7 +13569,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -13819,6 +13659,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13842,6 +13683,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13894,7 +13736,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateSet("1.0.0.1", "1.1.1.1", "149.112.112.112", "8.8.4.4", "8.8.8.8", "9.9.9.9")]
[ValidateScript({
- # Check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Check whether $PrimaryDNS is not equal to $SecondaryDNS
$_ -ne $SecondaryDNS
})]
[string]
@@ -13903,7 +13745,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateSet("1.0.0.1", "1.1.1.1", "149.112.112.112", "8.8.4.4", "8.8.8.8", "9.9.9.9")]
[ValidateScript({
- # Check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Check whether $PrimaryDNS is not equal to $SecondaryDNS
$_ -ne $PrimaryDNS
})]
[string]
@@ -14557,8 +14399,8 @@ function BitmapImageNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -14648,8 +14490,8 @@ function RichTextDocumentNewContext
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -14832,7 +14674,7 @@ function UseStoreOpenWith
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -14863,6 +14705,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -14923,6 +14767,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Sophia.ps1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Sophia.ps1
index 5c7d9a47..98481dfb 100644
--- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Sophia.ps1
@@ -1419,7 +1419,7 @@ UseStoreOpenWith -Hide
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы
diff --git a/src/Sophia_Script_for_Windows_11/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/uk-UA/Sophia.psd1
index cebb4bae..a4a1a2ec 100644
--- a/src/Sophia_Script_for_Windows_11/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_11/Localizations/uk-UA/Sophia.psd1
@@ -11,7 +11,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1
index 285d1c75..c4567b08 100644
--- a/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1
@@ -287,6 +287,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -526,52 +636,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_PowerShell_5_1
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_PowerShell_5_1
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether LGPO.exe exists in the bin folder
@@ -620,40 +710,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_11
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_11
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -703,137 +773,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -894,7 +833,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -4333,114 +4272,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4449,114 +4366,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4950,18 +4845,6 @@ public static bool MarkFileDelete (string sourcefile)
{
try
{
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
# Downloading the latest OneDrive installer 64-bit
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message $Localization.OneDriveDownloading -Verbose
@@ -5000,12 +4883,14 @@ public static bool MarkFileDelete (string sourcefile)
Remove-Item -Path "$DownloadsFolder\OneDriveSetup.exe" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
@@ -6157,10 +6042,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -9597,69 +9484,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
+ Invoke-WebRequest @Parameters
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -9692,48 +9551,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -9744,7 +9568,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9753,33 +9589,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -9790,7 +9623,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9799,17 +9644,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -10130,42 +9984,38 @@ function Install-WSL
{
try
{
- # Check the internet connection
+ # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
+ # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
+ [PSCustomObject]@{
+ "Distribution" = $_.FriendlyName
+ "Alias" = $_.Name
+ }
}
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json") -ErrorAction SilentlyContinue
- try
- {
- # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
- # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
- UseBasicParsing = $true
- Verbose = $true
- }
- $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
- [PSCustomObject]@{
- "Distribution" = $_.FriendlyName
- "Alias" = $_.Name
- }
- }
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- Add-Type -AssemblyName PresentationCore, PresentationFramework
+ return
+ }
- #region Variables
- $CommandTag = $null
+ Add-Type -AssemblyName PresentationCore, PresentationFramework
- #region XAML Markup
- # The section defines the design of the upcoming dialog box
- [xml]$XAML = @"
+ #region Variables
+ $CommandTag = $null
+
+ #region XAML Markup
+ # The section defines the design of the upcoming dialog box
+ [xml]$XAML = @"
"@
- #endregion XAML Markup
-
- $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
- $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
+ #endregion XAML Markup
- $ButtonInstall.Content = $Localization.Install
- #endregion Variables
+ $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
+ $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
+ Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
+ }
- #region Functions
- function RadioButtonChecked
- {
- $Script:CommandTag = $_.OriginalSource.Tag
- if (-not $ButtonInstall.IsEnabled)
- {
- $ButtonInstall.IsEnabled = $true
- }
- }
+ $ButtonInstall.Content = $Localization.Install
+ #endregion Variables
- function ButtonInstallClicked
- {
- Write-Warning -Message $Script:CommandTag
+ #region Functions
+ function RadioButtonChecked
+ {
+ $Script:CommandTag = $_.OriginalSource.Tag
+ if (-not $ButtonInstall.IsEnabled)
+ {
+ $ButtonInstall.IsEnabled = $true
+ }
+ }
- Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
+ function ButtonInstallClicked
+ {
+ Write-Warning -Message $Script:CommandTag
- $Form.Close()
+ Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
- # Receive updates for other Microsoft products when you update Windows
- (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
+ $Form.Close()
- # Check for updates
- Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- }
- #endregion
+ # Receive updates for other Microsoft products when you update Windows
+ (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
- foreach ($Distribution in $Distributions)
- {
- $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
- $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
- $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
- $Panel.Orientation = "Horizontal"
- $RadioButton.GroupName = "WslDistribution"
- $RadioButton.Tag = $Distribution.Alias
- $RadioButton.Add_Checked({RadioButtonChecked})
- $TextBlock.Text = $Distribution.Distribution
- $Panel.Children.Add($RadioButton) | Out-Null
- $Panel.Children.Add($TextBlock) | Out-Null
- $PanelContainer.Children.Add($Panel) | Out-Null
- }
+ # Check for updates
+ Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
+ }
+ #endregion
- $ButtonInstall.Add_Click({ButtonInstallClicked})
+ foreach ($Distribution in $Distributions)
+ {
+ $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
+ $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
+ $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
+ $Panel.Orientation = "Horizontal"
+ $RadioButton.GroupName = "WslDistribution"
+ $RadioButton.Tag = $Distribution.Alias
+ $RadioButton.Add_Checked({RadioButtonChecked})
+ $TextBlock.Text = $Distribution.Distribution
+ $Panel.Children.Add($RadioButton) | Out-Null
+ $Panel.Children.Add($TextBlock) | Out-Null
+ $PanelContainer.Children.Add($Panel) | Out-Null
+ }
- #region Sendkey function
- # Emulate the Backspace key sending to prevent the console window to freeze
- Start-Sleep -Milliseconds 500
+ $ButtonInstall.Add_Click({ButtonInstallClicked})
- Add-Type -AssemblyName System.Windows.Forms
+ #region Sendkey function
+ # Emulate the Backspace key sending to prevent the console window to freeze
+ Start-Sleep -Milliseconds 500
- # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
- Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 11")} | ForEach-Object -Process {
- # Show window, if minimized
- [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
+ Add-Type -AssemblyName System.Windows.Forms
- Start-Sleep -Seconds 1
+ # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
+ Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 11")} | ForEach-Object -Process {
+ # Show window, if minimized
+ [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
- # Force move the console window to the foreground
- [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
+ Start-Sleep -Seconds 1
- Start-Sleep -Seconds 1
+ # Force move the console window to the foreground
+ [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
- # Emulate the Backspace key sending
- [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
- }
- #endregion Sendkey function
+ Start-Sleep -Seconds 1
- # Force move the WPF form to the foreground
- $Window.Add_Loaded({$Window.Activate()})
- $Form.ShowDialog() | Out-Null
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com")
- Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com") -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ # Emulate the Backspace key sending
+ [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
}
+ #endregion Sendkey function
+
+ # Force move the WPF form to the foreground
+ $Window.Add_Loaded({$Window.Activate()})
+ $Form.ShowDialog() | Out-Null
}
#endregion WSL
@@ -12874,7 +12712,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -12964,6 +12802,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -12987,6 +12826,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13038,7 +12878,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateScript({
- # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Isolate IPv4 IP addresses and Check whether $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS)
})]
[string]
@@ -13046,7 +12886,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateScript({
- # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Isolate IPv4 IP addresses and Check whether $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS)
})]
[string]
@@ -13888,7 +13728,7 @@ function OpenWindowsTerminalAdminContext
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -13919,6 +13759,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -13979,6 +13821,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_11/Sophia.ps1 b/src/Sophia_Script_for_Windows_11/Sophia.ps1
index f235bbb8..f8b0b226 100644
--- a/src/Sophia_Script_for_Windows_11/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_11/Sophia.ps1
@@ -1338,7 +1338,7 @@ OpenWindowsTerminalAdminContext -Enable
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы
diff --git a/src/Sophia_Script_for_Windows_11_LTSC_2024/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_LTSC_2024/Localizations/uk-UA/Sophia.psd1
index b155ee1f..85fce360 100644
--- a/src/Sophia_Script_for_Windows_11_LTSC_2024/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_11_LTSC_2024/Localizations/uk-UA/Sophia.psd1
@@ -11,7 +11,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_11_LTSC_2024/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_11_LTSC_2024/Module/Sophia.psm1
index 972d67b1..aa9a16c2 100644
--- a/src/Sophia_Script_for_Windows_11_LTSC_2024/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_11_LTSC_2024/Module/Sophia.psm1
@@ -285,6 +285,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -511,52 +621,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_LTSC2024
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_LTSC2024
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether LGPO.exe exists in the bin folder
@@ -616,40 +706,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_LTSC2024
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_11_LTSC_2024
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -696,137 +766,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -887,7 +826,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -4120,114 +4059,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4236,114 +4153,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -5703,10 +5598,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -9066,69 +8963,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Invoke-WebRequest @Parameters
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -9161,48 +9030,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -9213,7 +9047,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9222,33 +9068,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -9259,7 +9102,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9268,17 +9123,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -9599,42 +9463,38 @@ function Install-WSL
{
try
{
- # Check the internet connection
+ # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
+ # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
+ [PSCustomObject]@{
+ "Distribution" = $_.FriendlyName
+ "Alias" = $_.Name
+ }
}
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json") -ErrorAction SilentlyContinue
- try
- {
- # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
- # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
- UseBasicParsing = $true
- Verbose = $true
- }
- $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
- [PSCustomObject]@{
- "Distribution" = $_.FriendlyName
- "Alias" = $_.Name
- }
- }
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- Add-Type -AssemblyName PresentationCore, PresentationFramework
+ return
+ }
- #region Variables
- $CommandTag = $null
+ Add-Type -AssemblyName PresentationCore, PresentationFramework
- #region XAML Markup
- # The section defines the design of the upcoming dialog box
- [xml]$XAML = @"
+ #region Variables
+ $CommandTag = $null
+
+ #region XAML Markup
+ # The section defines the design of the upcoming dialog box
+ [xml]$XAML = @"
"@
- #endregion XAML Markup
-
- $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
- $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
+ #endregion XAML Markup
- $ButtonInstall.Content = $Localization.Install
- #endregion Variables
+ $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
+ $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
+ Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
+ }
- #region Functions
- function RadioButtonChecked
- {
- $Script:CommandTag = $_.OriginalSource.Tag
- if (-not $ButtonInstall.IsEnabled)
- {
- $ButtonInstall.IsEnabled = $true
- }
- }
+ $ButtonInstall.Content = $Localization.Install
+ #endregion Variables
- function ButtonInstallClicked
- {
- Write-Warning -Message $Script:CommandTag
+ #region Functions
+ function RadioButtonChecked
+ {
+ $Script:CommandTag = $_.OriginalSource.Tag
+ if (-not $ButtonInstall.IsEnabled)
+ {
+ $ButtonInstall.IsEnabled = $true
+ }
+ }
- Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
+ function ButtonInstallClicked
+ {
+ Write-Warning -Message $Script:CommandTag
- $Form.Close()
+ Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
- # Receive updates for other Microsoft products when you update Windows
- (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
+ $Form.Close()
- # Check for updates
- Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- }
- #endregion
+ # Receive updates for other Microsoft products when you update Windows
+ (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
- foreach ($Distribution in $Distributions)
- {
- $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
- $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
- $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
- $Panel.Orientation = "Horizontal"
- $RadioButton.GroupName = "WslDistribution"
- $RadioButton.Tag = $Distribution.Alias
- $RadioButton.Add_Checked({RadioButtonChecked})
- $TextBlock.Text = $Distribution.Distribution
- $Panel.Children.Add($RadioButton) | Out-Null
- $Panel.Children.Add($TextBlock) | Out-Null
- $PanelContainer.Children.Add($Panel) | Out-Null
- }
+ # Check for updates
+ Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
+ }
+ #endregion
- $ButtonInstall.Add_Click({ButtonInstallClicked})
+ foreach ($Distribution in $Distributions)
+ {
+ $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
+ $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
+ $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
+ $Panel.Orientation = "Horizontal"
+ $RadioButton.GroupName = "WslDistribution"
+ $RadioButton.Tag = $Distribution.Alias
+ $RadioButton.Add_Checked({RadioButtonChecked})
+ $TextBlock.Text = $Distribution.Distribution
+ $Panel.Children.Add($RadioButton) | Out-Null
+ $Panel.Children.Add($TextBlock) | Out-Null
+ $PanelContainer.Children.Add($Panel) | Out-Null
+ }
- #region Sendkey function
- # Emulate the Backspace key sending to prevent the console window to freeze
- Start-Sleep -Milliseconds 500
+ $ButtonInstall.Add_Click({ButtonInstallClicked})
- Add-Type -AssemblyName System.Windows.Forms
+ #region Sendkey function
+ # Emulate the Backspace key sending to prevent the console window to freeze
+ Start-Sleep -Milliseconds 500
- # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
- Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 11 LTSC 2024")} | ForEach-Object -Process {
- # Show window, if minimized
- [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
+ Add-Type -AssemblyName System.Windows.Forms
- Start-Sleep -Seconds 1
+ # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
+ Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 11 LTSC 2024")} | ForEach-Object -Process {
+ # Show window, if minimized
+ [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
- # Force move the console window to the foreground
- [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
+ Start-Sleep -Seconds 1
- Start-Sleep -Seconds 1
+ # Force move the console window to the foreground
+ [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
- # Emulate the Backspace key sending
- [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
- }
- #endregion Sendkey function
+ Start-Sleep -Seconds 1
- # Force move the WPF form to the foreground
- $Window.Add_Loaded({$Window.Activate()})
- $Form.ShowDialog() | Out-Null
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com")
- Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com") -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ # Emulate the Backspace key sending
+ [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
}
+ #endregion Sendkey function
+
+ # Force move the WPF form to the foreground
+ $Window.Add_Loaded({$Window.Activate()})
+ $Form.ShowDialog() | Out-Null
}
#endregion WSL
@@ -9907,10 +9755,10 @@ function UninstallUWPApps
# Xbox Speech To Text Overlay
"Microsoft.XboxSpeechToTextOverlay",
- # Xbox Game Bar
+ # Game Bar
"Microsoft.XboxGamingOverlay",
- # Xbox Game Bar Plugin
+ # Game Bar Plugin
"Microsoft.XboxGameOverlay"
)
@@ -9923,6 +9771,10 @@ function UninstallUWPApps
"AppUp.IntelGraphicsControlPanel",
"AppUp.IntelGraphicsExperience",
+ # ELAN Touchpad
+ "ELANMicroelectronicsCorpo.ELANTouchpadforThinkpad",
+ "ELANMicroelectronicsCorpo.ELANTrackPointforThinkpa",
+
# Microsoft Application Compatibility Enhancements
"Microsoft.ApplicationCompatibilityEnhancements",
@@ -9983,7 +9835,11 @@ function UninstallUWPApps
"NVIDIACorp.NVIDIAControlPanel",
# Realtek Audio Console
- "RealtekSemiconductorCorp.RealtekAudioControl"
+ "RealtekSemiconductorCorp.RealtekAudioControl",
+
+ # Synaptics
+ "SynapticsIncorporated.SynapticsControlPanel",
+ "SynapticsIncorporated.24916F58D6E7"
)
#region Variables
@@ -10208,7 +10064,7 @@ function UninstallUWPApps
$Window.Close() | Out-Null
- # If Xbox Game Bar is selected to uninstall stop its processes
+ # If Game Bar is selected to uninstall stop its processes
if ($PackagesToRemove -match "Microsoft.XboxGamingOverlay")
{
Get-Process -Name GameBar, GameBarFTServer -ErrorAction Ignore | Stop-Process -Force
@@ -12094,7 +11950,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -12176,6 +12032,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -12199,6 +12056,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -12250,7 +12108,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateScript({
- # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Isolate IPv4 IP addresses and Check whether $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS)
})]
[string]
@@ -12258,7 +12116,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateScript({
- # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Isolate IPv4 IP addresses and Check whether $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS)
})]
[string]
@@ -12740,7 +12598,7 @@ function MultipleInvokeContext
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -12771,6 +12629,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -12831,6 +12691,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_11_LTSC_2024/Sophia.ps1 b/src/Sophia_Script_for_Windows_11_LTSC_2024/Sophia.ps1
index c07bee6a..05ce6114 100644
--- a/src/Sophia_Script_for_Windows_11_LTSC_2024/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_11_LTSC_2024/Sophia.ps1
@@ -1225,7 +1225,7 @@ MultipleInvokeContext -Enable
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы
diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/uk-UA/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/uk-UA/Sophia.psd1
index cebb4bae..a4a1a2ec 100644
--- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/uk-UA/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/uk-UA/Sophia.psd1
@@ -11,7 +11,7 @@ TweakerWarning = Стабільність вашої
Bin = У папці bin відсутні файли. Будь ласка, повторно завантажте архів.
RebootPending = Комп'ютер очікує на перезавантаження.
UnsupportedRelease = Виявлено нову версію.
-KeyboardArrows = Для вибору відповіді на клавіатурі стрілки {0} і {1}
+KeyboardArrows = Для вибору відповіді використовуйте на клавіатурі стрілки {0} і {1}
CustomizationWarning = Ви налаштували всі функції в пресет-файлі {0} перед запуском Sophia Script?
WindowsComponentBroken = {0} пошкоджено або видалено з ОС.
UpdateDefender = Визначення Microsoft Defender застаріли. Запустіть Windows Update і повторіть спробу.
diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Manifest/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Manifest/Sophia.psd1
index 2a38b877..d549b700 100644
--- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Manifest/Sophia.psd1
+++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Manifest/Sophia.psd1
@@ -5,7 +5,7 @@
Author = 'Dmitry "farag" Nefedov'
Copyright = '(c) 2014—2024 farag, Inestic & lowl1f3. All rights reserved'
Description = 'Module for Windows fine-tuning and automating the routine tasks'
- PowerShellVersion = '7.3'
+ PowerShellVersion = '7.4'
ProcessorArchitecture = 'AMD64'
FunctionsToExport = '*'
diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Module/Sophia.psm1
index 629af512..3792f776 100644
--- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Module/Sophia.psm1
+++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Module/Sophia.psm1
@@ -286,6 +286,116 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
}
}
+ # Remove harmful blocked DNS domains list from https://github.com/schrebra/Windows.10.DNS.Block.List
+ Get-NetFirewallRule -DisplayName Block.MSFT* -ErrorAction Ignore | Remove-NetFirewallRule
+
+ # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
+ # https://wpd.app
+ Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
+ # https://github.com/crazy-max/WindowsSpyBlocker
+ try
+ {
+ # Check whether https://github.com is alive
+ $Parameters = @{
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
+ }
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
+ {
+ return
+ }
+
+ Clear-Variable -Name IPArray -ErrorAction Ignore
+
+ # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $extra_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $spy_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update = (Invoke-WebRequest @Parameters).Content
+
+ $Parameters = @{
+ Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ $update_v6 = (Invoke-WebRequest @Parameters).Content
+
+ $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
+ # Split the Array variable content
+ $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
+
+ Write-Information -MessageData "" -InformationAction Continue
+ # Extract the localized "Please wait..." string from shell32.dll
+ Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
+
+ # Check whether hosts contains any of string from $IPArray array
+ if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
+ ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
+ }) -contains $true)
+ {
+ Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
+
+ # Clear hosts file
+ $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force
+ $hosts | ForEach-Object -Process {
+ if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
+ {
+ $hostsData = $_
+ $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
+ }
+ }
+ # Save in UTF8 without BOM
+ $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force
+
+ Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
+ }
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ }
+
# Check whether Get-WindowsEdition cmdlet is working
# https://github.com/PowerShell/PowerShell/issues/21295
try
@@ -525,52 +635,32 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_PowerShell_5_1
+ $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
- try
+ if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
{
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/sophia_script_versions.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_11_PowerShell_5_1
- $CurrentRelease = (Get-Module -Name Sophia).Version.ToString()
-
- if ([System.Version]$LatestRelease -gt [System.Version]$CurrentRelease)
- {
- Write-Information -MessageData "" -InformationAction Continue
- Write-Warning -Message $Localization.UnsupportedRelease
- Write-Information -MessageData "" -InformationAction Continue
+ Write-Information -MessageData "" -InformationAction Continue
+ Write-Warning -Message $Localization.UnsupportedRelease
+ Write-Information -MessageData "" -InformationAction Continue
- Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
- Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
- Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
+ Write-Verbose -Message "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" -Verbose
+ Write-Verbose -Message "https://t.me/sophia_chat" -Verbose
+ Write-Verbose -Message "https://discord.gg/sSryhaEv79" -Verbose
- exit
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ exit
}
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# Check whether all necessary files exist in the bin folder
@@ -624,40 +714,20 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
# Check whether the current module version is the latest one
try
{
- # Check the internet connection
+ # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # https://github.com/farag2/Sophia-Script-for-Windows/blob/master/supported_windows_builds.json
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
- Verbose = $true
- UseBasicParsing = $true
- }
- $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_11
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/supported_windows_builds.json"
+ Verbose = $true
+ UseBasicParsing = $true
}
+ $LatestSupportedBuild = (Invoke-RestMethod @Parameters).Windows_11
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
$LatestSupportedBuild = 0
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
}
# We may use Test-Path -Path variable:LatestSupportedBuild
@@ -707,137 +777,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
Get-CimInstance -ClassName CIM_ComputerSystem | Set-CimInstance -Property @{AutomaticManagedPageFile = $true}
}
- # Remove firewalled IP addresses that block Microsoft recourses added by harmful tweakers
- # https://wpd.app
- Get-NetFirewallRule | Where-Object -FilterScript {($_.DisplayName -match "Blocker MicrosoftTelemetry") -or ($_.DisplayName -match "Blocker MicrosoftExtra") -or ($_.DisplayName -match "windowsSpyBlocker")} | Remove-NetFirewallRule
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Remove IP addresses from hosts file that block Microsoft recourses added by WindowsSpyBlocker
- # https://github.com/crazy-max/WindowsSpyBlocker
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- Clear-Variable -Name IPArray -ErrorAction Ignore
-
- # https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $extra_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $spy_v6 = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update = (Invoke-WebRequest @Parameters).Content
-
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update_v6.txt"
- UseBasicParsing = $true
- Verbose = $true
- }
- $update_v6 = (Invoke-WebRequest @Parameters).Content
-
- $IPArray += $extra, $extra_v6, $spy, $spy_v6, $update, $update_v6
- # Split the Array variable content
- $IPArray = $IPArray -split "`r?`n" | Where-Object -FilterScript {$_ -notmatch "#"}
-
- Write-Information -MessageData "" -InformationAction Continue
- # Extract the localized "Please wait..." string from shell32.dll
- Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
- Write-Information -MessageData "" -InformationAction Continue
-
- # Check whether hosts contains any of string from $IPArray array
- if ((Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force | ForEach-Object -Process {$_.Trim()} | ForEach-Object -Process {
- ($_ -ne "") -and ($_ -ne " ") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_)
- }) -contains $true)
- {
- Write-Warning -Message ($Localization.TweakerWarning -f "WindowsSpyBlocker")
-
- # Clear hosts file
- $hosts = Get-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding Default -Force
- $hosts | ForEach-Object -Process {
- if (($_ -ne "") -and (-not $_.StartsWith("#")) -and ($IPArray -split "`r?`n" | Select-String -Pattern $_.Trim()))
- {
- $hostsData = $_
- $hosts = $hosts | Where-Object -FilterScript {$_ -notmatch $hostsData}
- }
- }
- # Save in UTF8 without BOM
- $hosts | Set-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Encoding utf8NoBOM -Force
-
- Start-Process -FilePath notepad.exe "$env:SystemRoot\System32\drivers\etc\hosts"
- }
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
# PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
# https://github.com/PowerShell/PowerShell/issues/21070
Get-ChildItem -Path "$env:TEMP\Computer.txt", "$env:TEMP\User.txt" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
@@ -898,7 +837,7 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
$Menu += [WinAPI.GetStrings]::GetString(16956)
}
- # Check if current terminal is Windows Terminal
+ # Check whether current terminal is Windows Terminal
if ($env:WT_SESSION)
{
# https://github.com/microsoft/terminal/issues/14992
@@ -4337,114 +4276,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
- OutFile = "$DownloadsFolder\dark.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
- "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/dark.zip"
+ OutFile = "$DownloadsFolder\dark.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_dark_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_dark_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\dark.zip`" -C `"$env:SystemRoot\Cursors\W11_dark_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursors Dark Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\busy.ani",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_dark_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursors Dark Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\dark.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4453,114 +4370,92 @@ function Cursors
{
try
{
- # Check the internet connection
+ # Check whether https://github.com is alive
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://github.com"
+ Method = "Head"
+ DisableKeepAlive = $true
+ UseBasicParsing = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
+ if (-not (Invoke-WebRequest @Parameters).StatusDescription)
{
return
}
- try
- {
- # Check whether https://github.com is alive
- $Parameters = @{
- Uri = "https://github.com"
- Method = "Head"
- DisableKeepAlive = $true
- UseBasicParsing = $true
- }
- if (-not (Invoke-WebRequest @Parameters).StatusDescription)
- {
- return
- }
-
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
- OutFile = "$DownloadsFolder\light.zip"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
- {
- New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
- }
-
- # Extract archive
- Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
-
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
-
- if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
- {
- New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
- }
- [string[]]$Schemes = (
- "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
- "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
- "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
- "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
- ) -join ","
- New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
-
- Start-Sleep -Seconds 1
-
- Remove-Item -Path "$DownloadsFolder\light.zip" -Force
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ $Parameters = @{
+ Uri = "https://github.com/farag2/Sophia-Script-for-Windows/raw/master/Misc/light.zip"
+ OutFile = "$DownloadsFolder\light.zip"
+ UseBasicParsing = $true
+ Verbose = $true
}
- catch [System.Net.WebException]
+ Invoke-WebRequest @Parameters
+
+ if (-not (Test-Path -Path "$env:SystemRoot\Cursors\W11_light_v2.2"))
{
- Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
- Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
+ New-Item -Path "$env:SystemRoot\Cursors\W11_light_v2.2" -ItemType Directory -Force
+ }
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ # Extract archive
+ Start-Process -FilePath "$env:SystemRoot\System32\tar.exe" -ArgumentList "-xf `"$DownloadsFolder\light.zip`" -C `"$env:SystemRoot\Cursors\W11_light_v2.2`" -v"
+
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "(default)" -PropertyType String -Value "W11 Cursor Light Free v2.2 by Jepri Creations" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name AppStarting -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\working.ani" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Arrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name ContactVisualization -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Crosshair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name CursorBaseSize -PropertyType DWord -Value 32 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name GestureVisualization -PropertyType DWord -Value 31 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Hand -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\link.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Help -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\help.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name IBeam -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name No -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name NWPen -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Person -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\person.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Pin -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name precisionhair -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -PropertyType DWord -Value 1 -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeAll -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\move.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNESW -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNS -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeNWSE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name SizeWE -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name UpArrow -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur" -Force
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name Wait -PropertyType ExpandString -Value "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani" -Force
+
+ if (-not (Test-Path -Path "HKCU:\Control Panel\Cursors\Schemes"))
+ {
+ New-Item -Path "HKCU:\Control Panel\Cursors\Schemes" -Force
}
+ [string[]]$Schemes = (
+ "%SystemRoot%\Cursors\W11_light_v2.2\pointer.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\help.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\working.ani",
+ "%SystemRoot%\Cursors\W11_light_v2.2\busy.ani",,
+ "%SystemRoot%\Cursors\W11_light_v2.2\precision.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\beam.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\handwriting.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\unavailable.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\vert.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\horz.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn1.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\dgn2.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\move.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\alternate.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\link.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\person.cur",
+ "%SystemRoot%\Cursors\W11_light_v2.2\pin.cur"
+ ) -join ","
+ New-ItemProperty -Path "HKCU:\Control Panel\Cursors\Schemes" -Name "W11 Cursor Light Free v2.2 by Jepri Creations" -PropertyType String -Value $Schemes -Force
+
+ Start-Sleep -Seconds 1
+
+ Remove-Item -Path "$DownloadsFolder\light.zip" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://github.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://github.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -4956,18 +4851,6 @@ public static bool MarkFileDelete (string sourcefile)
{
try
{
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
-
# Downloading the latest OneDrive installer 64-bit
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message $Localization.OneDriveDownloading -Verbose
@@ -5006,12 +4889,14 @@ public static bool MarkFileDelete (string sourcefile)
Remove-Item -Path "$DownloadsFolder\OneDriveSetup.exe" -Force
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
@@ -6163,10 +6048,12 @@ function WindowsCapabilities
}
catch [System.ComponentModel.Win32Exception]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice")
+ Write-Error -Message ($Localization.NoResponse -f "http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
}
}
"Uninstall"
@@ -9603,69 +9490,41 @@ function InstallVCRedist
{
try
{
- # Check the internet connection
+ $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x86.exe"
+ UseBasicParsing = $true
+ Verbose = $true
}
+ Invoke-WebRequest @Parameters
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VCRedist/2015%2B
- winget install --id=Microsoft.VCRedist.2015+.x86 --exact --force --accept-source-agreements
- winget install --id=Microsoft.VCRedist.2015+.x64 --exact --force --accept-source-agreements
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
- {
- $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x86.exe"
- OutFile = "$DownloadsFolder\VC_redist.x86.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x86.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- $Parameters = @{
- Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
- OutFile = "$DownloadsFolder\VC_redist.x64.exe"
- UseBasicParsing = $true
- Verbose = $true
- }
- Invoke-WebRequest @Parameters
-
- Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\VC_redist.x86.exe",
- "$DownloadsFolder\VC_redist.x64.exe",
- "$env:TEMP\dd_vcredist_x86_*.log",
- "$env:TEMP\dd_vcredist_amd64_*.log"
- )
- Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
+ $Parameters = @{
+ Uri = "https://aka.ms/vs/17/release/VC_redist.x64.exe"
+ OutFile = "$DownloadsFolder\VC_redist.x64.exe"
+ UseBasicParsing = $true
+ Verbose = $true
+ }
+ Invoke-WebRequest @Parameters
+
+ Start-Process -FilePath "$DownloadsFolder\VC_redist.x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\VC_redist.x86.exe",
+ "$DownloadsFolder\VC_redist.x64.exe",
+ "$env:TEMP\dd_vcredist_x86_*.log",
+ "$env:TEMP\dd_vcredist_amd64_*.log"
+ )
+ Get-ChildItem -Path $Paths -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Ignore
}
- catch [System.ComponentModel.Win32Exception]
+ catch [System.Net.WebException]
{
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
@@ -9698,48 +9557,13 @@ function InstallDotNetRuntimes
$Runtimes
)
- try
- {
- # Check the internet connection
- $Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
- }
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
-
- Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- }
-
foreach ($Runtime in $Runtimes)
{
switch ($Runtime)
{
NET6x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6
- # .NET Desktop Runtime 6 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# Install .NET Desktop Runtime 6
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -9750,7 +9574,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com")
+ Write-Error -Message ($Localization.NoResponse -f "https://download.visualstudio.microsoft.com") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+
+ return
+ }
+ try
+ {
# .NET Desktop Runtime 6 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9759,33 +9595,30 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
NET8x64
{
- if (Get-AppxPackage -Name Microsoft.DesktopAppInstaller)
- {
- if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller).Version -ge [System.Version]"1.17")
- {
- # .NET Desktop Runtime 8 x64
- winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x64 --exact --force --accept-source-agreements
-
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
- }
- }
- else
+ try
{
# .NET Desktop Runtime 8
# https://github.com/dotnet/core/blob/main/release-notes/releases-index.json
@@ -9796,7 +9629,19 @@ function InstallDotNetRuntimes
}
$LatestRelease = (Invoke-RestMethod @Parameters)."latest-release"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json") -ErrorAction SilentlyContinue
+
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
+ return
+ }
+
+ try
+ {
# .NET Desktop Runtime 8 x64
$Parameters = @{
Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x64.exe"
@@ -9805,17 +9650,26 @@ function InstallDotNetRuntimes
Verbose = $true
}
Invoke-WebRequest @Parameters
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net")
+ Write-Error -Message ($Localization.NoResponse -f "https://dotnetcli.blob.core.windows.net") -ErrorAction SilentlyContinue
- Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
- # https://github.com/PowerShell/PowerShell/issues/21070
- $Paths = @(
- "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
- "$env:TEMP\Microsoft_.NET_Runtime*.log"
- )
- Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
+ return
}
+
+ Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe" -ArgumentList "/install /passive /norestart" -Wait
+
+ # PowerShell 5.1 (7.5 too) interprets 8.3 file name literally, if an environment variable contains a non-Latin word
+ # https://github.com/PowerShell/PowerShell/issues/21070
+ $Paths = @(
+ "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x64.exe",
+ "$env:TEMP\Microsoft_.NET_Runtime*.log"
+ )
+ Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore
}
}
}
@@ -10136,42 +9990,38 @@ function Install-WSL
{
try
{
- # Check the internet connection
+ # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
+ # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
$Parameters = @{
- Name = "dns.msftncsi.com"
- Server = "1.1.1.1"
- DnsOnly = $true
- ErrorAction = "Stop"
+ Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
+ UseBasicParsing = $true
+ Verbose = $true
}
- if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255")
- {
- return
+ $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
+ [PSCustomObject]@{
+ "Distribution" = $_.FriendlyName
+ "Alias" = $_.Name
+ }
}
+ }
+ catch [System.Net.WebException]
+ {
+ Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json")
+ Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json") -ErrorAction SilentlyContinue
- try
- {
- # https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json
- # wsl --list --online relies on Internet connection too, so it's much convenient to parse DistributionInfo.json, rather than parse a cmd output
- $Parameters = @{
- Uri = "https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"
- UseBasicParsing = $true
- Verbose = $true
- }
- $Distributions = (Invoke-RestMethod @Parameters).Distributions | ForEach-Object -Process {
- [PSCustomObject]@{
- "Distribution" = $_.FriendlyName
- "Alias" = $_.Name
- }
- }
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
- Add-Type -AssemblyName PresentationCore, PresentationFramework
+ return
+ }
- #region Variables
- $CommandTag = $null
+ Add-Type -AssemblyName PresentationCore, PresentationFramework
- #region XAML Markup
- # The section defines the design of the upcoming dialog box
- [xml]$XAML = @"
+ #region Variables
+ $CommandTag = $null
+
+ #region XAML Markup
+ # The section defines the design of the upcoming dialog box
+ [xml]$XAML = @"
"@
- #endregion XAML Markup
-
- $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
- $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
+ #endregion XAML Markup
- $ButtonInstall.Content = $Localization.Install
- #endregion Variables
+ $Form = [Windows.Markup.XamlReader]::Load((New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML))
+ $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
+ Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
+ }
- #region Functions
- function RadioButtonChecked
- {
- $Script:CommandTag = $_.OriginalSource.Tag
- if (-not $ButtonInstall.IsEnabled)
- {
- $ButtonInstall.IsEnabled = $true
- }
- }
+ $ButtonInstall.Content = $Localization.Install
+ #endregion Variables
- function ButtonInstallClicked
- {
- Write-Warning -Message $Script:CommandTag
+ #region Functions
+ function RadioButtonChecked
+ {
+ $Script:CommandTag = $_.OriginalSource.Tag
+ if (-not $ButtonInstall.IsEnabled)
+ {
+ $ButtonInstall.IsEnabled = $true
+ }
+ }
- Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
+ function ButtonInstallClicked
+ {
+ Write-Warning -Message $Script:CommandTag
- $Form.Close()
+ Start-Process -FilePath wsl.exe -ArgumentList "--install --distribution $Script:CommandTag" -Wait
- # Receive updates for other Microsoft products when you update Windows
- (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
+ $Form.Close()
- # Check for updates
- Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
- }
- #endregion
+ # Receive updates for other Microsoft products when you update Windows
+ (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
- foreach ($Distribution in $Distributions)
- {
- $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
- $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
- $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
- $Panel.Orientation = "Horizontal"
- $RadioButton.GroupName = "WslDistribution"
- $RadioButton.Tag = $Distribution.Alias
- $RadioButton.Add_Checked({RadioButtonChecked})
- $TextBlock.Text = $Distribution.Distribution
- $Panel.Children.Add($RadioButton) | Out-Null
- $Panel.Children.Add($TextBlock) | Out-Null
- $PanelContainer.Children.Add($Panel) | Out-Null
- }
+ # Check for updates
+ Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan
+ }
+ #endregion
- $ButtonInstall.Add_Click({ButtonInstallClicked})
+ foreach ($Distribution in $Distributions)
+ {
+ $Panel = New-Object -TypeName System.Windows.Controls.StackPanel
+ $RadioButton = New-Object -TypeName System.Windows.Controls.RadioButton
+ $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
+ $Panel.Orientation = "Horizontal"
+ $RadioButton.GroupName = "WslDistribution"
+ $RadioButton.Tag = $Distribution.Alias
+ $RadioButton.Add_Checked({RadioButtonChecked})
+ $TextBlock.Text = $Distribution.Distribution
+ $Panel.Children.Add($RadioButton) | Out-Null
+ $Panel.Children.Add($TextBlock) | Out-Null
+ $PanelContainer.Children.Add($Panel) | Out-Null
+ }
- #region Sendkey function
- # Emulate the Backspace key sending to prevent the console window to freeze
- Start-Sleep -Milliseconds 500
+ $ButtonInstall.Add_Click({ButtonInstallClicked})
- Add-Type -AssemblyName System.Windows.Forms
+ #region Sendkey function
+ # Emulate the Backspace key sending to prevent the console window to freeze
+ Start-Sleep -Milliseconds 500
- # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
- Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 11")} | ForEach-Object -Process {
- # Show window, if minimized
- [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
+ Add-Type -AssemblyName System.Windows.Forms
- Start-Sleep -Seconds 1
+ # We cannot use Get-Process -Id $PID as script might be invoked via Terminal with different $PID
+ Get-Process | Where-Object -FilterScript {(($_.ProcessName -eq "powershell") -or ($_.ProcessName -eq "WindowsTerminal")) -and ($_.MainWindowTitle -match "Sophia Script for Windows 11")} | ForEach-Object -Process {
+ # Show window, if minimized
+ [WinAPI.ForegroundWindow]::ShowWindowAsync($_.MainWindowHandle, 10)
- # Force move the console window to the foreground
- [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
+ Start-Sleep -Seconds 1
- Start-Sleep -Seconds 1
+ # Force move the console window to the foreground
+ [WinAPI.ForegroundWindow]::SetForegroundWindow($_.MainWindowHandle)
- # Emulate the Backspace key sending
- [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
- }
- #endregion Sendkey function
+ Start-Sleep -Seconds 1
- # Force move the WPF form to the foreground
- $Window.Add_Loaded({$Window.Activate()})
- $Form.ShowDialog() | Out-Null
- }
- catch [System.Net.WebException]
- {
- Write-Warning -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com")
- Write-Error -Message ($Localization.NoResponse -f "https://raw.githubusercontent.com") -ErrorAction SilentlyContinue
- }
- }
- catch [System.ComponentModel.Win32Exception]
- {
- Write-Warning -Message $Localization.NoInternetConnection
- Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
+ # Emulate the Backspace key sending
+ [System.Windows.Forms.SendKeys]::SendWait("{BACKSPACE 1}")
}
+ #endregion Sendkey function
+
+ # Force move the WPF form to the foreground
+ $Window.Add_Loaded({$Window.Activate()})
+ $Form.ShowDialog() | Out-Null
}
#endregion WSL
@@ -10454,10 +10292,10 @@ function UninstallUWPApps
# Xbox Speech To Text Overlay
"Microsoft.XboxSpeechToTextOverlay",
- # Xbox Game Bar
+ # Game Bar
"Microsoft.XboxGamingOverlay",
- # Xbox Game Bar Plugin
+ # Game Bar Plugin
"Microsoft.XboxGameOverlay"
)
@@ -10763,7 +10601,7 @@ function UninstallUWPApps
$Window.Close() | Out-Null
- # If Xbox Game Bar is selected to uninstall stop its processes
+ # If Game Bar is selected to uninstall stop its processes
if ($PackagesToRemove -match "Microsoft.XboxGamingOverlay")
{
Get-Process -Name GameBar, GameBarFTServer -ErrorAction Ignore | Stop-Process -Force
@@ -11018,13 +10856,13 @@ function TeamsAutostart
#region Gaming
<#
.SYNOPSIS
- Xbox Game Bar
+ Game Bar
.PARAMETER Disable
- Disable Xbox Game Bar
+ Disable Game Bar
.PARAMETER Enable
- Enable Xbox Game Bar
+ Enable Game Bar
.EXAMPLE
XboxGameBar -Disable
@@ -11033,7 +10871,7 @@ function TeamsAutostart
XboxGameBar -Enable
.NOTES
- To prevent popping up the "You'll need a new app to open this ms-gamingoverlay" warning, you need to disable the Xbox Game Bar app, even if you uninstalled it before
+ To prevent popping up the "You'll need a new app to open this ms-gamingoverlay" warning, you need to disable the Game Bar app, even if you uninstalled it before
.NOTES
Current user
@@ -11074,13 +10912,13 @@ function XboxGameBar
<#
.SYNOPSIS
- Xbox Game Bar tips
+ Game Bar tips
.PARAMETER Disable
- Disable Xbox Game Bar tips
+ Disable Game Bar tips
.PARAMETER Enable
- Enable Xbox Game Bar tips
+ Enable Game Bar tips
.EXAMPLE
XboxGameTips -Disable
@@ -12890,7 +12728,7 @@ function WindowsScriptHost
{
"Disable"
{
- # Check if any scheduled tasks were created before, because they rely on Windows Host running vbs files
+ # Check whether any scheduled tasks were created before, because they rely on Windows Host running vbs files
Get-ScheduledTask -TaskName SoftwareDistribution, Temp, "Windows Cleanup", "Windows Cleanup Notification" -ErrorAction Ignore | ForEach-Object -Process {
# Skip if a scheduled task exists
if ($_.State -eq "Ready")
@@ -12980,6 +12818,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13003,6 +12842,7 @@ function WindowsSandbox
catch [System.Exception]
{
Write-Error -Message $Localization.EnableHardwareVT -ErrorAction SilentlyContinue
+ Write-Error -Message ($Localization.RestartFunction -f $MyInvocation.Line.Trim()) -ErrorAction SilentlyContinue
}
}
}
@@ -13054,7 +12894,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateScript({
- # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Isolate IPv4 IP addresses and Check whether $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS)
})]
[string]
@@ -13062,7 +12902,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)]
[ValidateScript({
- # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
+ # Isolate IPv4 IP addresses and Check whether $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS)
})]
[string]
@@ -13463,7 +13303,7 @@ function EditWithClipchampContext
.NOTES
Current user
#>
-function EditWithPhotosContext
+function EditWithPhotosContext
{
param
(
@@ -13904,7 +13744,7 @@ function OpenWindowsTerminalAdminContext
<#
.SYNOPSIS
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
.EXAMPLE
UpdateLGPEPolicies
@@ -13935,6 +13775,8 @@ function UpdateLGPEPolicies
Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose
Write-Verbose -Message $Localization.GPOUpdate -Verbose
+
+ Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKLM -Verbose
Write-Information -MessageData "" -InformationAction Continue
@@ -13995,6 +13837,7 @@ function UpdateLGPEPolicies
Write-Information -MessageData "" -InformationAction Continue
Write-Verbose -Message HKCU -Verbose
+ Write-Information -MessageData "" -InformationAction Continue
# Current User policies paths to scan recursively
$CU_Paths = @(
diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Sophia.ps1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Sophia.ps1
index 8df37ea6..c7be8662 100644
--- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Sophia.ps1
+++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Sophia.ps1
@@ -1349,7 +1349,7 @@ OpenWindowsTerminalAdminContext -Enable
#region Update Policies
<#
Display all policy registry keys (even manually created ones) in the Local Group Policy Editor snap-in (gpedit.msc)
- This can take up to 30 minutes, depending on on the number of policies created in the registry and your system resources
+ This can take up to 30 minutes, depending on the number of policies created in the registry and your system resources
Отобразить все политики реестра (даже созданные вручную) в оснастке Редактора локальной групповой политики (gpedit.msc)
Это может занять до 30 минут в зависимости от количества политик, созданных в реестре, и мощности вашей системы