diff --git a/patches/patches.json b/patches/patches.json index b6a436f..35fe83e 100644 --- a/patches/patches.json +++ b/patches/patches.json @@ -579,7 +579,7 @@ "native_description": "Enable embedded display ads on NPV", "version": { "fr": "1.2.57", - "to": "" + "to": "1.2.77" } }, "EnhancedAdsClientDeconfliction": { @@ -615,7 +615,7 @@ "native_description": "EWhen enabled, enhanced visibility logs will be sent for embedded ads", "version": { "fr": "1.2.63", - "to": "" + "to": "1.2.77" } }, "Hpto": { @@ -660,7 +660,7 @@ "native_description": "Enable embedded ads fetching when canvas track is playing. Defaults to true since this is currently existing behavior", "version": { "fr": "1.2.72", - "to": "" + "to": "1.2.77" } }, "SponsoredPlaylistMockEndpoint": { @@ -690,12 +690,47 @@ "to": "" } }, - "AgeAssuranceSocial": { - "name": "enableAgeAssuranceSocial", - "description": "Enables the age assurance feature for social aspects (e.g., comments, friend feed)", - "native_description": "Enables the age assurance feature for social aspects (e.g., comments, friend feed)", + "AgeAssuranceFriendActivity": { + "name": "enableAgeAssuranceFriendActivity", "version": { - "fr": "1.2.77", + "fr": "1.2.78", + "to": "" + } + }, + "AgeAssuranceComments": { + "name": "enableAgeAssuranceComments", + "version": { + "fr": "1.2.78", + "to": "" + } + }, + "AgeAssuranceProfileMenu": { + "name": "enableAgeAssuranceProfileMenu", + "version": { + "fr": "1.2.78", + "to": "" + } + }, + "AgeAssuranceSettings": { + "name": "enableAgeAssuranceSettings", + "version": { + "fr": "1.2.78", + "to": "" + } + }, + "UnderAgeBlockingModal": { + "name": "enableUnderAgeBlockingModal", + "native_description": "Enables the underage blocking modal for accounts in blocked/pending disabled state", + "version": { + "fr": "1.2.78", + "to": "" + } + }, + "AdImpressionDoesNotIgnoreVisilibility": { + "name": "embeddedAdImpressionDoesNotIgnoreVisilibility", + "native_description": "If enabled, we do consider percent visibility when logging the display ad impression", + "version": { + "fr": "1.2.78", "to": "" } } @@ -1708,6 +1743,22 @@ "fr": "1.2.76", "to": "" } + }, + "ExclusiveModeSetting": { + "name": "enableExclusiveModeSetting", + "native_description": "Display a setting to enable exclusive mode for an output device", + "version": { + "fr": "1.2.78", + "to": "" + } + }, + "ListPrivateByDefaultSetting": { + "name": "enableListPrivateByDefaultSetting", + "native_description": "Enable List Private By Default setting in Desktop Social Settings", + "version": { + "fr": "1.2.78", + "to": "" + } } }, "CustomExp": { diff --git a/run.ps1 b/run.ps1 index 46baaf6..1454b00 100644 --- a/run.ps1 +++ b/run.ps1 @@ -305,6 +305,26 @@ if ($psv -ge 7) { # add Tls12 [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; +function Stop-Script { + param( + [string]$Message = ($lang).StopScript + ) + + Write-Host $Message + + switch ($Host.Name) { + "Windows PowerShell ISE Host" { + pause + break + } + default { + Write-Host ($lang).PressAnyKey + [void][System.Console]::ReadKey($true) + break + } + } + Exit +} function Get-Link { param ( [Alias("e")] @@ -382,7 +402,7 @@ if (!($version -and $version -match $match_v)) { } else { # latest tested version for Win 10-12 - $onlineFull = "1.2.77.358.g4339a634-545" + $onlineFull = "1.2.78.409.g6aead1f8-948" } } else { @@ -557,13 +577,11 @@ function downloadSp() { $Error[0].Exception Write-Host Write-Host ($lang).Download4`n - ($lang).StopScript $tempDirectory = $PWD Pop-Location Start-Sleep -Milliseconds 200 Remove-Item -Recurse -LiteralPath $tempDirectory - Pause - Exit + Stop-Script } } } @@ -644,9 +662,7 @@ if ($win10 -or $win11 -or $win8_1 -or $win8 -or $win12) { Get-AppxPackage -Name SpotifyAB.SpotifyMusic | Remove-AppxPackage } if ($ch -eq 'n') { - Read-Host ($lang).StopScript - Pause - Exit + Stop-Script } } } @@ -871,13 +887,11 @@ if ($spotifyInstalled) { } if ($ch -eq 'n') { - Write-Host ($lang).StopScript $tempDirectory = $PWD Pop-Location Start-Sleep -Milliseconds 200 Remove-Item -Recurse -LiteralPath $tempDirectory - Pause - Exit + Stop-Script } } } @@ -1006,14 +1020,11 @@ $webjson = Get -Url (Get-Link -e "/patches/patches.json") -RetrySeconds 5 if ($webjson -eq $null) { Write-Host Write-Host "Failed to get patches.json" -ForegroundColor Red - Write-Host ($lang).StopScript $tempDirectory = $PWD Pop-Location Start-Sleep -Milliseconds 200 Remove-Item -Recurse -LiteralPath $tempDirectory - Pause - Exit - + Stop-Script } @@ -1679,114 +1690,201 @@ function Extract-WebpackModules { } function Reset-Dll-Sign { - param( - [Parameter(Mandatory = $true)] + param ( [string]$FilePath ) - # convert hex string to byte array - function ConvertTo-ByteArray { - param([string]$HexString) - return [byte[]]($HexString -split ' ' | ForEach-Object { [Convert]::ToByte($_, 16) }) - } + $TargetStringText = "Check failed: sep_pos != std::wstring::npos." - # byte patterns for x64 arch - # <= 1.2.77 - $searchPattern_x64_old = '30 01 00 00 5B C3 CC CC 48 89 5C 24 18 55' - - # >= 1.2.78 - $searchPattern_x64_new = '4A 01 CC CC CC 48 8B C4 48 89 58' + $Patch_x64 = "B8 01 00 00 00 C3" - # common replace pattern for x64 - $replacePattern_x64 = 'B8 01 00 00 00 C3' - $bytesToReplaceCount_x64 = 6 - - # byte patterns for ARM64 arch - $searchPattern_ARM64 = 'E0 03 13 AA FD 7B D3 A8 F3 07 41 F8 C0 03 5F D6 61 00 00 D4 00 00 00 00 FD 7B BA A9 F3 53 01 A9' - $replacePattern_ARM64 = '20 00 80 52 C0 03 5F D6' - $bytesToReplaceCount_ARM64 = 8 + $Patch_ARM64 = "20 00 80 52 C0 03 5F D6" - if (-not (Test-Path $FilePath -PathType Leaf)) { - Write-Error "File not found at path: $FilePath" - Write-Host ($lang).StopScript - Pause - Exit - } + $Patch_x64 = [byte[]]($Patch_x64 -split ' ' | ForEach-Object { [Convert]::ToByte($_, 16) }) + $Patch_ARM64 = [byte[]]($Patch_ARM64 -split ' ' | ForEach-Object { [Convert]::ToByte($_, 16) }) - $fileBytes = [System.IO.File]::ReadAllBytes($FilePath) - $peHeaderOffset = [System.BitConverter]::ToUInt32($fileBytes, 0x3C) - $fileHeaderOffset = $peHeaderOffset + 4 - $archInfo = Get-PEArchitectureOffsets -bytes $fileBytes -fileHeaderOffset $fileHeaderOffset - - if ($archInfo.Architecture -eq 'ARM64') { - $searchPattern = ConvertTo-ByteArray $searchPattern_ARM64 - $replacePattern = ConvertTo-ByteArray $replacePattern_ARM64 - $bytesToReplaceCount = $bytesToReplaceCount_ARM64 - Write-Verbose "Using ARM64 byte patterns" - } - else { - $replacePattern = ConvertTo-ByteArray $replacePattern_x64 - $bytesToReplaceCount = $bytesToReplaceCount_x64 - if ([version]$offline -ge [version]'1.2.78.354') { - $searchPattern = ConvertTo-ByteArray $searchPattern_x64_new - Write-Verbose "Using new x64 byte patterns (>= 1.2.78)" - } - else { - $searchPattern = ConvertTo-ByteArray $searchPattern_x64_old - Write-Verbose "Using old x64 byte patterns (<= 1.2.77)" + $csharpCode = @" +using System; +using System.Collections.Generic; + +public class ScannerCore { + public static int FindBytes(byte[] data, byte[] pattern) { + for (int i = 0; i < data.Length - pattern.Length; i++) { + bool match = true; + for (int j = 0; j < pattern.Length; j++) { + if (data[i + j] != pattern[j]) { match = false; break; } + } + if (match) return i; } + return -1; } - try { - Write-Verbose "Reading file..." - $fileBytes = [System.IO.File]::ReadAllBytes($FilePath) - Write-Verbose "File read. Size: $($fileBytes.Length) bytes." - - $offset = -1 - $searchLimit = $fileBytes.Length - $searchPattern.Length - - Write-Verbose "Searching for byte sequence..." - for ($i = 0; $i -le $searchLimit; $i++) { - $match = $true - for ($j = 0; $j -lt $searchPattern.Length; $j++) { - if ($fileBytes[$i + $j] -ne $searchPattern[$j]) { - $match = $false - break + public static List FindXref_ARM64(byte[] data, ulong stringRVA, ulong sectionRVA, uint sectionRawPtr, uint sectionSize) { + List results = new List(); + for (uint i = 0; i < sectionSize; i += 4) { + uint fileOffset = sectionRawPtr + i; + if (fileOffset + 8 > data.Length) break; + uint inst1 = BitConverter.ToUInt32(data, (int)fileOffset); + + // ADRP + if ((inst1 & 0x9F000000) == 0x90000000) { + int rd = (int)(inst1 & 0x1F); + long immLo = (inst1 >> 29) & 3; + long immHi = (inst1 >> 5) & 0x7FFFF; + long imm = (immHi << 2) | immLo; + if ((imm & 0x100000) != 0) { imm |= unchecked((long)0xFFFFFFFFFFE00000); } + imm = imm << 12; + ulong pc = sectionRVA + i; + ulong pcPage = pc & 0xFFFFFFFFFFFFF000; + ulong page = (ulong)((long)pcPage + imm); + + uint inst2 = BitConverter.ToUInt32(data, (int)fileOffset + 4); + // ADD + if ((inst2 & 0xFF800000) == 0x91000000) { + int rn = (int)((inst2 >> 5) & 0x1F); + if (rn == rd) { + long imm12 = (inst2 >> 10) & 0xFFF; + ulong target = page + (ulong)imm12; + if (target == stringRVA) { results.Add((int)fileOffset); } + } } } - if ($match) { - $offset = $i - break + } + return results; + } + + public static int FindStart(byte[] data, int startOffset, bool isArm) { + int step = isArm ? 4 : 1; + if (isArm && (startOffset % 4 != 0)) { startOffset -= (startOffset % 4); } + + for (int i = startOffset; i > 0; i -= step) { + if (isArm) { + if (i < 4) break; + uint currInst = BitConverter.ToUInt32(data, i); + // ARM64 Prologue: STP X29, X30, [SP, -imm]! -> FD 7B .. A9 + if ((currInst & 0xFF00FFFF) == 0xA9007BFD) { return i; } + } else { + // x64 Prologue: Padding 0xCC + if (data[i] != 0xCC && data[i-1] == 0xCC) return i; + } + if (startOffset - i > 20000) break; + } + return 0; + } +} +"@ + + if (-not ([System.Management.Automation.PSTypeName]'ScannerCore').Type) { + Add-Type -TypeDefinition $csharpCode + } + + Write-Verbose "Loading file: $FilePath" + if (-not (Test-Path $FilePath)) { + Write-Warning "File Spotify.dll not found" + Stop-Script + } + $bytes = [System.IO.File]::ReadAllBytes($FilePath) + + try { + $e_lfanew = [BitConverter]::ToInt32($bytes, 0x3C) + $Machine = [BitConverter]::ToUInt16($bytes, $e_lfanew + 4) + $IsArm64 = $false + $ArchName = "Unknown" + + if ($Machine -eq 0x8664) { $ArchName = "x64"; $IsArm64 = $false } + elseif ($Machine -eq 0xAA64) { $ArchName = "ARM64"; $IsArm64 = $true } + else { + Write-Warning "Architecture not supported for patching Spotify.dll" + Stop-Script + } + + Write-Verbose "Architecture: $ArchName" + + $NumberOfSections = [BitConverter]::ToUInt16($bytes, $e_lfanew + 0x06) + $SizeOfOptionalHeader = [BitConverter]::ToUInt16($bytes, $e_lfanew + 0x14) + $SectionTableStart = $e_lfanew + 0x18 + $SizeOfOptionalHeader + + $Sections = @(); $CodeSection = $null + for ($i = 0; $i -lt $NumberOfSections; $i++) { + $secEntry = $SectionTableStart + ($i * 40) + $VA = [BitConverter]::ToUInt32($bytes, $secEntry + 12) + $RawSize = [BitConverter]::ToUInt32($bytes, $secEntry + 16) + $RawPtr = [BitConverter]::ToUInt32($bytes, $secEntry + 20) + $Chars = [BitConverter]::ToUInt32($bytes, $secEntry + 36) + $SecObj = [PSCustomObject]@{ VA = $VA; RawPtr = $RawPtr; RawSize = $RawSize } + $Sections += $SecObj + if (($Chars -band 0x20) -ne 0 -and $CodeSection -eq $null) { $CodeSection = $SecObj } + } + } + catch { + Write-Warning "PE Error in Spotify.dll" + Stop-Script + } + + function Get-RVA($FileOffset) { + foreach ($sec in $Sections) { + if ($FileOffset -ge $sec.RawPtr -and $FileOffset -lt ($sec.RawPtr + $sec.RawSize)) { + return ($FileOffset - $sec.RawPtr) + $sec.VA } } - - if ($offset -eq -1) { - Write-Warning "Required byte sequence not found for the signature reset patch" - Write-Warning "Spotify Version: $offline | Architecture: $($archInfo.Architecture)" - Write-Host ($lang).StopScript - Pause - Exit - } - - Write-Verbose "Sequence found at offset: 0x$($offset.ToString('X'))" - - $patchOffset = $offset + ($searchPattern.Length - $bytesToReplaceCount) - - Write-Verbose "Applying patch at offset: 0x$($patchOffset.ToString('X'))" - - for ($i = 0; $i -lt $replacePattern.Length; $i++) { - $fileBytes[$patchOffset + $i] = $replacePattern[$i] - } - - Write-Verbose "Writing patched file..." - [System.IO.File]::WriteAllBytes($FilePath, $fileBytes) - + return 0 } - catch { - Write-Error "An error occurred: $_" - Write-Host ($lang).StopScript - Pause - Exit + + Write-Verbose "Searching for function..." + $StringBytes = [System.Text.Encoding]::ASCII.GetBytes($TargetStringText) + $StringOffset = [ScannerCore]::FindBytes($bytes, $StringBytes) + if ($StringOffset -eq -1) { + Write-Warning "String not found in Spotify.dll" + Stop-Script + } + $StringRVA = Get-RVA $StringOffset + + $PatchOffset = 0 + if (-not $IsArm64) { + $RawStart = $CodeSection.RawPtr; $RawEnd = $RawStart + $CodeSection.RawSize + for ($i = $RawStart; $i -lt $RawEnd; $i++) { + if ($bytes[$i] -eq 0x48 -and $bytes[$i + 1] -eq 0x8D -and $bytes[$i + 2] -eq 0x15) { + $Rel = [BitConverter]::ToInt32($bytes, $i + 3) + $Target = (Get-RVA $i) + 7 + $Rel + if ($Target -eq $StringRVA) { + $PatchOffset = [ScannerCore]::FindStart($bytes, $i, $false); break + } + } + } + } + else { + $Results = [ScannerCore]::FindXref_ARM64($bytes, [uint64]$StringRVA, [uint64]$CodeSection.VA, [uint32]$CodeSection.RawPtr, [uint32]$CodeSection.RawSize) + if ($Results.Count -gt 0) { + $PatchOffset = [ScannerCore]::FindStart($bytes, $Results[0], $true) + } + } + + if ($PatchOffset -eq 0) { + Write-Warning "Function not found in Spotify.dll" + Stop-Script + } + + $BytesToWrite = if ($IsArm64) { $Patch_ARM64 } else { $Patch_x64 } + + $CurrentBytes = @(); for ($i = 0; $i -lt $BytesToWrite.Length; $i++) { $CurrentBytes += $bytes[$PatchOffset + $i] } + $FoundHex = ($CurrentBytes | ForEach-Object { $_.ToString("X2") }) -join " " + Write-Verbose "Found (Offset: 0x$($PatchOffset.ToString("X"))): $FoundHex" + + if ($CurrentBytes[0] -eq $BytesToWrite[0] -and $CurrentBytes[$BytesToWrite.Length - 1] -eq $BytesToWrite[$BytesToWrite.Length - 1]) { + Write-Warning "File Spotify.dll already patched" + return + } + + Write-Verbose "Applying patch..." + for ($i = 0; $i -lt $BytesToWrite.Length; $i++) { $bytes[$PatchOffset + $i] = $BytesToWrite[$i] } + + try { + [System.IO.File]::WriteAllBytes($FilePath, $bytes) + Write-Verbose "Success" + } + catch { + Write-Warning "Write error in Spotify.dll $($_.Exception.Message)" + Stop-Script } } @@ -1852,9 +1950,7 @@ function Remove-Signature-FromFiles([string[]]$fileNames) { $fullPath = Join-Path -Path $spotifyDirectory -ChildPath $fileName if (-not (Test-Path $fullPath)) { Write-Error "File not found: $fullPath" - Write-Host ($lang).StopScript - Pause - Exit + Stop-Script } try { Write-Verbose "Processing file: $fileName" @@ -1864,9 +1960,7 @@ function Remove-Signature-FromFiles([string[]]$fileNames) { } catch { Write-Error "Failed to process file '$fileName': $_" - Write-Host ($lang).StopScript - Pause - Exit + Stop-Script } } } @@ -1943,9 +2037,7 @@ $test_js = Test-Path -Path $xpui_js_patch if ($test_spa -and $test_js) { Write-Host ($lang).Error -ForegroundColor Red Write-Host ($lang).FileLocBroken - Write-Host ($lang).StopScript - pause - Exit + Stop-Script } if ($test_js) { @@ -1962,16 +2054,12 @@ if ($test_js) { Start-Process $Url } - Write-Host ($lang).StopScript - Pause - Exit + Stop-Script } if (!($test_js) -and !($test_spa)) { Write-Host "xpui.spa not found, reinstall Spotify" - Write-Host ($lang).StopScript - Pause - Exit + Stop-Script } if ($test_spa) { @@ -2027,9 +2115,7 @@ if ($test_spa) { } if (-not $v8_snapshot -and $null -eq $xpuiJsEntry) { Write-Warning "v8_context_snapshot file not found, cannot create xpui.js" - Write-Host ($lang).StopScript - Pause - Exit + Stop-Script } } diff --git a/scripts/installer-lang/be.ps1 b/scripts/installer-lang/be.ps1 index 8301e9b..66e4f91 100644 --- a/scripts/installer-lang/be.ps1 +++ b/scripts/installer-lang/be.ps1 @@ -46,4 +46,5 @@ HostBak = "Рэзервовае капіраванне hosts.bak..." HostDel = "Спроба выдаліць непажаданыя URL-адрасы з арыгінальнага файла hosts..." HostError = "Нешта пайшло не так пры рэдагаванні файла hosts, адрэдагуйце яго ўручную або запусціце сцэнарый ад імя адміністратара" -} \ No newline at end of file + PressAnyKey = "Націсніце любую клавішу, каб выйсці..." +} diff --git a/scripts/installer-lang/bn.ps1 b/scripts/installer-lang/bn.ps1 index c4c6ea5..8df958e 100644 --- a/scripts/installer-lang/bn.ps1 +++ b/scripts/installer-lang/bn.ps1 @@ -46,4 +46,5 @@ HostBak = "hosts.bak ফাইলটি ব্যাকআপ রাখা হয়েছে..." HostDel = "অরিজিনাল হোস্ট ফাইল থেকে অপ্রত্যাশিত ইউআরএল মুছে ফেলার চেষ্টা করা হচ্ছে..." HostError = "হোস্ট ফাইল মুছে ফেলার সময় কিছু একটা সমস্যা হয়েছে, এটি ম্যানুয়ালি সম্পাদন করুন অথবা এডমিনিস্ট্রেটর হিসেবে স্ক্রিপ্টটি রান করুন" -} \ No newline at end of file + PressAnyKey = "Press any key to exit..." +} diff --git a/scripts/installer-lang/cs.ps1 b/scripts/installer-lang/cs.ps1 index 74016ab..242ff85 100644 --- a/scripts/installer-lang/cs.ps1 +++ b/scripts/installer-lang/cs.ps1 @@ -46,4 +46,5 @@ HostBak = "Zálohuji soubor hosts.bak..." HostDel = "Pokouším se odebrat nechtěné URL adresy z originálního souboru hosts..." HostError = "Něco se nepovedlo s úpravou souboru hosts, upravte ho manuálně nebo spusťte skript jako" + PressAnyKey = "Stiskněte libovolnou klávesu pro ukončení..." } diff --git a/scripts/installer-lang/de.ps1 b/scripts/installer-lang/de.ps1 index fca34b5..5b83b70 100644 --- a/scripts/installer-lang/de.ps1 +++ b/scripts/installer-lang/de.ps1 @@ -46,4 +46,5 @@ HostBak = "Sichere hosts.bak..." HostDel = "Versuche, unerwünschte URLs von der originalen hosts-Datei zu entfernen..." HostError = "Beim Bearbeiten der hosts-Datei ist etwas schief gelaufen, bearbeiten Sie sie manuell oder führen Sie die Installation als Administrator aus" + PressAnyKey = "Drücken Sie eine beliebige Taste zum Beenden..." } diff --git a/scripts/installer-lang/el.ps1 b/scripts/installer-lang/el.ps1 index 272188d..724adf3 100644 --- a/scripts/installer-lang/el.ps1 +++ b/scripts/installer-lang/el.ps1 @@ -46,4 +46,5 @@ HostBak = "Δημιουργείται αντίγραφο ασφαλείας hosts.bak..." HostDel = "Προσπάθεια κατάργησης ανεπιθύμητων διευθύνσεων URL από το αρχικό αρχείο hosts..." HostError = "Παρουσιάστηκε κάποιο πρόβλημα κατά την επεξεργασία του αρχείου hosts, επεξεργαστείτε το χειροκίνητα ή εκτελέστε το script ως διαχειριστής" + PressAnyKey = "Πατήστε οποιοδήποτε πλήκτρο για έξοδο..." } diff --git a/scripts/installer-lang/en.ps1 b/scripts/installer-lang/en.ps1 index ce77d57..7a885a4 100644 --- a/scripts/installer-lang/en.ps1 +++ b/scripts/installer-lang/en.ps1 @@ -46,4 +46,5 @@ HostBak = "Backing up hosts.bak..." HostDel = "Trying to remove unwanted URLs from the original hosts file..." HostError = "Something went wrong while editing the hosts file, edit it manually or run the script as administrator" -} \ No newline at end of file + PressAnyKey = "Press any key to exit..." +} diff --git a/scripts/installer-lang/es.ps1 b/scripts/installer-lang/es.ps1 index 7922498..c70eeef 100644 --- a/scripts/installer-lang/es.ps1 +++ b/scripts/installer-lang/es.ps1 @@ -46,4 +46,5 @@ HostBak = "Haciendo una copia de seguridad de hosts.bak..." HostDel = "Intentando eliminar los URL no deseados del archivo hosts original..." HostError = "Algo salió mal al editar el archivo hosts; edítelo manualmente o ejecute el script como administrador" + PressAnyKey = "Presione cualquier tecla para salir..." } diff --git a/scripts/installer-lang/fa.ps1 b/scripts/installer-lang/fa.ps1 index 0a61d33..84e8fb4 100644 --- a/scripts/installer-lang/fa.ps1 +++ b/scripts/installer-lang/fa.ps1 @@ -46,4 +46,5 @@ HostBak = "پشتیبان گیری از hosts.bak" HostDel = "تلاش برای حذف URL های ناخواسته از فایل میزبان اصلی" HostError = "هنگام ویرایش فایل میزبان مشکلی پیش آمد، آن را به صورت دستی ویرایش کنید یا اسکریپت را صورت ادمینستریتور اجرا کنید" + PressAnyKey = "برای خروج هر کلیدی را فشار دهید..." } diff --git a/scripts/installer-lang/fi.ps1 b/scripts/installer-lang/fi.ps1 index 498873f..55e4417 100644 --- a/scripts/installer-lang/fi.ps1 +++ b/scripts/installer-lang/fi.ps1 @@ -46,4 +46,5 @@ HostBak = "Varmuuskopioidaan hosts.bak..." HostDel = "Yritetään poistaa ei toivottuja URL-osoitteita alkuperäisestä hosts-tiedostosta..." HostError = "Jotain meni pieleen, hosts-tiedostoton muokkaamisessa, muokkaa sitä manuaalisesti tai suorita komentosarja järjestelmänvalvojana" + PressAnyKey = "Paina mitä tahansa näppäintä poistuaksesi..." } diff --git a/scripts/installer-lang/fil.ps1 b/scripts/installer-lang/fil.ps1 index 18b4873..32394c5 100644 --- a/scripts/installer-lang/fil.ps1 +++ b/scripts/installer-lang/fil.ps1 @@ -46,4 +46,5 @@ HostBak = "Nagbabackup ng hosts.bak..." HostDel = "Sinusubukang alisin ang mga hindi kanais-nais na URL mula sa orihinal na hosts file..." HostError = "May naging problema sa pag-eedit ng hosts file, i-edit ito ng manu-mano o patakbuhin ang script bilang administrator" + PressAnyKey = "Pindutin ang anumang key upang lumabas..." } diff --git a/scripts/installer-lang/fr.ps1 b/scripts/installer-lang/fr.ps1 index 066b95d..62f8d02 100644 --- a/scripts/installer-lang/fr.ps1 +++ b/scripts/installer-lang/fr.ps1 @@ -46,4 +46,5 @@ HostBak = "Sauvegarde de hosts.bak..." HostDel = "Tentative de suppression des URLs indésirables du fichier hosts original..." HostError = "Quelque chose ne s'est pas bien passé lors de l'édition du fichier hosts, modifiez le manuellement ou lancez le script en tant qu'administrateur" + PressAnyKey = "Appuyez sur n'importe quelle touche pour quitter..." } diff --git a/scripts/installer-lang/hi.ps1 b/scripts/installer-lang/hi.ps1 index dc8c85d..21b2b26 100644 --- a/scripts/installer-lang/hi.ps1 +++ b/scripts/installer-lang/hi.ps1 @@ -46,4 +46,5 @@ HostBak = "hosts.bak का बैकअप बनाया जा रहा है..." HostDel = "ओरिजिनल hosts फ़ाइल से गैर-जरूरी URLs को हटाने की कोशिश की जा रही है..." HostError = "hosts फ़ाइल को एडिट करते समय कोई समस्या हुई है। कृपया इसे मैनुअली एडिट करें या स्क्रिप्ट को एडमिनिस्ट्रेटर के रूप में चलाएँ" + PressAnyKey = "Press any key to exit..." } diff --git a/scripts/installer-lang/hu.ps1 b/scripts/installer-lang/hu.ps1 index d2a2589..7ba3886 100644 --- a/scripts/installer-lang/hu.ps1 +++ b/scripts/installer-lang/hu.ps1 @@ -46,4 +46,5 @@ HostBak = "A hosts.bak mentése..." HostDel = "A nem kívánt URL-ek eltávolítása az eredeti hosts fájlból..." HostError = "Valami hiba történt a hosts fájl szerkesztése közben, szerkeszd meg manuálisan, vagy futtasd a szkriptet rendszergazdaként." + PressAnyKey = "Nyomjon meg egy gombot a kilépéshez..." } diff --git a/scripts/installer-lang/id.ps1 b/scripts/installer-lang/id.ps1 index b28e5da..82c1c2b 100644 --- a/scripts/installer-lang/id.ps1 +++ b/scripts/installer-lang/id.ps1 @@ -46,4 +46,5 @@ HostBak = "Membuat cadangan hosts.bak..." HostDel = "Mencoba menghapus URL yang tidak diinginkan dari file hosts asli..." HostError = "Ada yang salah saat mengedit file hosts, edit manual atau jalankan skrip sebagai administrator" + PressAnyKey = "Tekan sembarang tombol untuk keluar..." } diff --git a/scripts/installer-lang/it.ps1 b/scripts/installer-lang/it.ps1 index 2f84260..02db802 100644 --- a/scripts/installer-lang/it.ps1 +++ b/scripts/installer-lang/it.ps1 @@ -46,4 +46,5 @@ HostBak = "Backup di hosts.bak in corso..." HostDel = "Provo a rimuovere URL non desiderati dal file hosts originale..." HostError = "Qualcosa è andato storto durante la modifica del file hosts, modificalo manualmente o fai partire lo script come amministratore" + PressAnyKey = "Premi un tasto qualsiasi per uscire..." } diff --git a/scripts/installer-lang/ja.ps1 b/scripts/installer-lang/ja.ps1 index 9b73ec8..3af0d8a 100644 --- a/scripts/installer-lang/ja.ps1 +++ b/scripts/installer-lang/ja.ps1 @@ -46,4 +46,5 @@ HostBak = "hosts.bak にバックアップ中..." HostDel = "元の hosts から望まない URL を削除中..." HostError = "hosts ファイルの編集中に不明の問題が発生、手動で編集するか、管理者としてスクリプトを実行してください" + PressAnyKey = "終了するには何かキーを押してください..." } diff --git a/scripts/installer-lang/ka.ps1 b/scripts/installer-lang/ka.ps1 index 12a04bd..7f83d9b 100644 --- a/scripts/installer-lang/ka.ps1 +++ b/scripts/installer-lang/ka.ps1 @@ -46,4 +46,5 @@ HostBak = "იქმნება hosts.bak-ის სარევეზნო ასლი..." HostDel = "ვცდილობთ რომ ამოვიღოთ არასასურველი URL-ები ორიგინალური მასპინძელის ფაილიდან..." HostError = "რაღაც შეცდომა მოხდა მასპინძელის ფაილის რედაქტირებისას, დაარედაქტირეთ ის ხელით ან გაუშვით სკრიპტი ადმინისტრატორის სახით" -} \ No newline at end of file + PressAnyKey = "დააჭირეთ ნებისმიერ ღილაკს გასასვლელად..." +} diff --git a/scripts/installer-lang/ko.ps1 b/scripts/installer-lang/ko.ps1 index 1a1da4f..ef24c34 100644 --- a/scripts/installer-lang/ko.ps1 +++ b/scripts/installer-lang/ko.ps1 @@ -46,4 +46,5 @@ HostBak = "hosts.bak 백업 파일을 생성하는 중..." HostDel = "원본 hosts 파일에서 불필요한 URL 제거를 시도하는 중..." HostError = "파일을 수정하는 데 오류가 발생했습니다, 직접 수정하거나 이 스크립트를 관리자 권한으로 실행해주세요" -} \ No newline at end of file + PressAnyKey = "종료하려면 아무 키나 누르십시오..." +} diff --git a/scripts/installer-lang/lv.ps1 b/scripts/installer-lang/lv.ps1 index 1fa381c..9e6b2c2 100644 --- a/scripts/installer-lang/lv.ps1 +++ b/scripts/installer-lang/lv.ps1 @@ -46,4 +46,5 @@ HostBak = "Dublē hosts.bak ..." HostDel = "Mēģina noņemt nevēlamus URL no sākotnējā hosts faila..." HostError = "Kaut kas greizi aizgāja rediģējot hosts failu, rediģējiet to manuāli vai palaidiet skriptu ar administratora privilēģijām" -} \ No newline at end of file + PressAnyKey = "Nospiediet jebkuru taustiņu, lai izietu..." +} diff --git a/scripts/installer-lang/pl.ps1 b/scripts/installer-lang/pl.ps1 index e1e6436..b4cc208 100644 --- a/scripts/installer-lang/pl.ps1 +++ b/scripts/installer-lang/pl.ps1 @@ -46,4 +46,5 @@ HostBak = "Tworzenie kopii zapasowej pliku hosts.bak..." HostDel = "Próba usunięcia niechcianych adresów URL z oryginalnego pliku hosts..." HostError = "Coś poszło nie tak podczas edycji pliku hosts, edytuj go ręcznie lub uruchom skrypt jako administrator" + PressAnyKey = "Naciśnij dowolny klawisz, aby wyjść..." } diff --git a/scripts/installer-lang/pt.ps1 b/scripts/installer-lang/pt.ps1 index 748389c..068d912 100644 --- a/scripts/installer-lang/pt.ps1 +++ b/scripts/installer-lang/pt.ps1 @@ -46,4 +46,5 @@ HostBak = "Fazendo backup de hosts.bak..." HostDel = "Tentando remover URLs indesejados do arquivo hosts original..." HostError = "Algo deu errado ao editar o arquivo hosts, edite-o manualmente ou execute o script como Administrador" + PressAnyKey = "Pressione qualquer tecla para sair..." } diff --git a/scripts/installer-lang/ro.ps1 b/scripts/installer-lang/ro.ps1 index 5f84e61..1fc83e0 100644 --- a/scripts/installer-lang/ro.ps1 +++ b/scripts/installer-lang/ro.ps1 @@ -46,4 +46,5 @@ HostBak = "Se efectuează o copie de siguranță a fișierului hosts.bak..." HostDel = "Se încearcă eliminarea URL-urilor nedorite din fișierul original hosts..." HostError = "Ceva nu a mers bine in timpul editării fișierului hosts, editează-l manual sau rulează scriptul ca Administrator." + PressAnyKey = "Apăsați orice tastă pentru a ieși..." } diff --git a/scripts/installer-lang/ru.ps1 b/scripts/installer-lang/ru.ps1 index b1e3570..e41c385 100644 --- a/scripts/installer-lang/ru.ps1 +++ b/scripts/installer-lang/ru.ps1 @@ -46,4 +46,5 @@ HostBak = "Создаю резервную копию hosts.bak..." HostDel = "Попытка удалить нежелательные Url-адреса из оригинального файла hosts..." HostError = "Что-то пошло не так при редактировании файла hosts, отредактируйте его вручную или запустите скрипт от администратора" -} \ No newline at end of file + PressAnyKey = "Нажмите любую клавишу для выхода..." +} diff --git a/scripts/installer-lang/sk.ps1 b/scripts/installer-lang/sk.ps1 index 0e52dfa..790624f 100644 --- a/scripts/installer-lang/sk.ps1 +++ b/scripts/installer-lang/sk.ps1 @@ -46,4 +46,5 @@ HostBak = "Zálohujem súbor hosts.bak..." HostDel = "Pokúšam sa odobrať nechcené URLs z originálneho hosts súboru..." HostError = "Niečo sa nepodarilo s upravovaním súboru hosts, uprav ho manuálne alebo spusti skript ako administrátor" + PressAnyKey = "Stlačte ľubovoľnú klávesu pre ukončenie..." } diff --git a/scripts/installer-lang/sr.ps1 b/scripts/installer-lang/sr.ps1 index 298b253..3b148b1 100644 --- a/scripts/installer-lang/sr.ps1 +++ b/scripts/installer-lang/sr.ps1 @@ -46,4 +46,5 @@ HostBak = "Прављење резервне копије hosts.bak..." HostDel = "Покушавамо да уклонимо нежељене URL-ове из оригиналног фајла hosts..." HostError = "Нешто је пошло наопако током уређивања фајла hosts, уредите га ручно или покрените скрипту као администратор" -} \ No newline at end of file + PressAnyKey = "Press any key to exit..." +} diff --git a/scripts/installer-lang/sv.ps1 b/scripts/installer-lang/sv.ps1 index f53f491..8185ace 100644 --- a/scripts/installer-lang/sv.ps1 +++ b/scripts/installer-lang/sv.ps1 @@ -46,4 +46,5 @@ HostBak = "Backar upp hosts.bak..." HostDel = "Försöker ta bort oönskade webbadresser från den ursprungliga hosts filen..." HostError = "Något gick fel vid redigering av hosts filen, redigera den manuellt eller kör skriptet som administratör" -} \ No newline at end of file + PressAnyKey = "Tryck på valfri tangent för att avsluta..." +} diff --git a/scripts/installer-lang/ta.ps1 b/scripts/installer-lang/ta.ps1 index d94e12f..0c467e3 100644 --- a/scripts/installer-lang/ta.ps1 +++ b/scripts/installer-lang/ta.ps1 @@ -46,4 +46,5 @@ HostBak = "hosts.bak காப்புப்பிரதி..." HostDel = "Original host filesலிருந்து தேவையற்ற URL களை அகற்ற முயற்சிக்கிறது ..." HostError = "Hosts Filesயைத் திருத்தும் போது ஏதோ தவறு ஏற்பட்டது, அதை manualலாக திருத்தவும் அல்லது Scriptயை administratorராக இயக்கவும்" + PressAnyKey = "Press any key to exit..." } diff --git a/scripts/installer-lang/tr.ps1 b/scripts/installer-lang/tr.ps1 index ea12005..3634b5a 100644 --- a/scripts/installer-lang/tr.ps1 +++ b/scripts/installer-lang/tr.ps1 @@ -46,4 +46,5 @@ HostBak = "hosts.bak dosyası yedekleniyor...." HostDel = "Orijinal hosts dosyasından istenmeyen URL'ler kaldırılmaya çalışılıyor..." HostError = "Hosts dosyasını düzenlerken bir şeyler ters gitti, elle düzenleyin veya kodu yönetici olarak çalıştırın" + PressAnyKey = "Çıkmak için herhangi bir tuşa basın..." } diff --git a/scripts/installer-lang/ua.ps1 b/scripts/installer-lang/ua.ps1 index 5d4499c..df35b58 100644 --- a/scripts/installer-lang/ua.ps1 +++ b/scripts/installer-lang/ua.ps1 @@ -46,4 +46,5 @@ HostBak = "Бекап hosts.bak..." HostDel = "Спроба прибрати небажані посилання з оригінального файлу hosts..." HostError = "Щось пішло не так під час редагування файлу hosts, змініть його вручну, або спробуйте запустити скрипт від імені адміністратора" + PressAnyKey = "Натисніть будь-яку клавішу, щоб вийти..." } diff --git a/scripts/installer-lang/vi.ps1 b/scripts/installer-lang/vi.ps1 index cd64fe1..bda9b07 100644 --- a/scripts/installer-lang/vi.ps1 +++ b/scripts/installer-lang/vi.ps1 @@ -46,4 +46,5 @@ HostBak = "Đang sao lưu hosts.bak..." HostDel = "Đang xóa các URL không cần thiết khỏi tệp hosts..." HostError = "Xảy ra lỗi khi đang chỉnh sửa tệp hosts. Hãy tự sửa hoặc chạy tệp này với tư cách quản trị viên" + PressAnyKey = "Nhấn phím bất kỳ để thoát..." } diff --git a/scripts/installer-lang/zh-TW.ps1 b/scripts/installer-lang/zh-TW.ps1 index d24c50d..164f549 100644 --- a/scripts/installer-lang/zh-TW.ps1 +++ b/scripts/installer-lang/zh-TW.ps1 @@ -46,4 +46,5 @@ HostBak = "正在備份 hosts.bak..." HostDel = "正在嘗試從原始 hosts 檔案中刪除不需要的網址..." HostError = "在編輯 hosts 檔案時發生了錯誤,請手動編輯或以系統管理員身分執行腳本" + PressAnyKey = "按任意鍵退出..." } diff --git a/scripts/installer-lang/zh.ps1 b/scripts/installer-lang/zh.ps1 index f785cf1..11c9b4f 100644 --- a/scripts/installer-lang/zh.ps1 +++ b/scripts/installer-lang/zh.ps1 @@ -46,4 +46,5 @@ HostBak = "备份原始 hosts 文件为 hosts.bak..." HostDel = "正在试图从原始 hosts 文件中删除不需要的 URL..." HostError = "在编辑 hosts 文件时发生了错误,请手动编辑或以管理员身份重新运行该脚本。" + PressAnyKey = "按任意键退出..." }