From c6b281a12ae19e00e2cd657cd82f2d9eb343346a Mon Sep 17 00:00:00 2001 From: Dmitry Nefedov Date: Wed, 6 Mar 2024 23:59:11 +0300 Subject: [PATCH] =?UTF-8?q?6.6.2=20=E2=80=94=2006.03.2024?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +- README_de-de.md | 8 +- README_uk-ua.md | 8 +- Wrapper/Config/config_Windows_10.json | 13 +- Wrapper/Config/config_Windows_10_LTSC.json | 17 +- Wrapper/Config/config_Windows_11.json | 15 +- .../de-DE/tooltip_Windows_10.json | 40 +-- .../de-DE/tooltip_Windows_11.json | 42 +-- .../en-US/tooltip_Windows_10.json | 42 +-- .../en-US/tooltip_Windows_11.json | 42 +-- .../ru-RU/tooltip_Windows_10.json | 42 +-- .../ru-RU/tooltip_Windows_11.json | 42 +-- Wrapper/SophiaScriptWrapper.exe | Bin 2804224 -> 2805248 bytes sophia_script_versions.json | 14 +- .../Functions.ps1 | 6 +- .../Localizations/de-DE/Sophia.psd1 | 2 +- .../Localizations/en-US/Sophia.psd1 | 2 +- .../Localizations/es-ES/Sophia.psd1 | 2 +- .../Localizations/fr-FR/Sophia.psd1 | 2 +- .../Localizations/hu-HU/Sophia.psd1 | 2 +- .../Localizations/it-IT/Sophia.psd1 | 2 +- .../Localizations/pl-PL/Sophia.psd1 | 2 +- .../Localizations/pt-BR/Sophia.psd1 | 2 +- .../Localizations/ru-RU/Sophia.psd1 | 2 +- .../Localizations/tr-TR/Sophia.psd1 | 2 +- .../Localizations/uk-UA/Sophia.psd1 | 2 +- .../Localizations/zh-CN/Sophia.psd1 | 2 +- .../Module/Sophia.psm1 | 311 +++------------- src/Sophia_Script_for_Windows_10/Sophia.ps1 | 12 +- .../Functions.ps1 | 6 +- .../Localizations/de-DE/Sophia.psd1 | 2 +- .../Localizations/en-US/Sophia.psd1 | 2 +- .../Localizations/es-ES/Sophia.psd1 | 2 +- .../Localizations/fr-FR/Sophia.psd1 | 2 +- .../Localizations/hu-HU/Sophia.psd1 | 2 +- .../Localizations/it-IT/Sophia.psd1 | 2 +- .../Localizations/pl-PL/Sophia.psd1 | 2 +- .../Localizations/pt-BR/Sophia.psd1 | 2 +- .../Localizations/ru-RU/Sophia.psd1 | 2 +- .../Localizations/tr-TR/Sophia.psd1 | 2 +- .../Localizations/uk-UA/Sophia.psd1 | 2 +- .../Localizations/zh-CN/Sophia.psd1 | 2 +- .../Module/Sophia.psm1 | 221 +++--------- .../Sophia.ps1 | 12 +- .../Functions.ps1 | 6 +- .../Localizations/de-DE/Sophia.psd1 | 2 +- .../Localizations/en-US/Sophia.psd1 | 2 +- .../Localizations/es-ES/Sophia.psd1 | 2 +- .../Localizations/fr-FR/Sophia.psd1 | 2 +- .../Localizations/hu-HU/Sophia.psd1 | 2 +- .../Localizations/it-IT/Sophia.psd1 | 2 +- .../Localizations/pl-PL/Sophia.psd1 | 2 +- .../Localizations/pt-BR/Sophia.psd1 | 2 +- .../Localizations/ru-RU/Sophia.psd1 | 2 +- .../Localizations/tr-TR/Sophia.psd1 | 2 +- .../Localizations/uk-UA/Sophia.psd1 | 2 +- .../Localizations/zh-CN/Sophia.psd1 | 2 +- .../Module/Sophia.psm1 | 225 +++--------- .../Sophia.ps1 | 12 +- .../Functions.ps1 | 6 +- .../Localizations/de-DE/Sophia.psd1 | 2 +- .../Localizations/en-US/Sophia.psd1 | 2 +- .../Localizations/es-ES/Sophia.psd1 | 2 +- .../Localizations/fr-FR/Sophia.psd1 | 2 +- .../Localizations/hu-HU/Sophia.psd1 | 2 +- .../Localizations/it-IT/Sophia.psd1 | 2 +- .../Localizations/pl-PL/Sophia.psd1 | 2 +- .../Localizations/pt-BR/Sophia.psd1 | 2 +- .../Localizations/ru-RU/Sophia.psd1 | 2 +- .../Localizations/tr-TR/Sophia.psd1 | 2 +- .../Localizations/uk-UA/Sophia.psd1 | 2 +- .../Localizations/zh-CN/Sophia.psd1 | 2 +- .../Module/Sophia.psm1 | 311 +++------------- .../Sophia.ps1 | 12 +- .../Functions.ps1 | 6 +- .../Localizations/de-DE/Sophia.psd1 | 2 +- .../Localizations/en-US/Sophia.psd1 | 2 +- .../Localizations/es-ES/Sophia.psd1 | 2 +- .../Localizations/fr-FR/Sophia.psd1 | 2 +- .../Localizations/hu-HU/Sophia.psd1 | 2 +- .../Localizations/it-IT/Sophia.psd1 | 2 +- .../Localizations/pl-PL/Sophia.psd1 | 2 +- .../Localizations/pt-BR/Sophia.psd1 | 2 +- .../Localizations/ru-RU/Sophia.psd1 | 2 +- .../Localizations/tr-TR/Sophia.psd1 | 2 +- .../Localizations/uk-UA/Sophia.psd1 | 2 +- .../Localizations/zh-CN/Sophia.psd1 | 2 +- .../Module/Sophia.psm1 | 338 ++++-------------- src/Sophia_Script_for_Windows_11/Sophia.ps1 | 12 +- .../Functions.ps1 | 6 +- .../Localizations/de-DE/Sophia.psd1 | 2 +- .../Localizations/en-US/Sophia.psd1 | 2 +- .../Localizations/es-ES/Sophia.psd1 | 2 +- .../Localizations/fr-FR/Sophia.psd1 | 2 +- .../Localizations/hu-HU/Sophia.psd1 | 2 +- .../Localizations/it-IT/Sophia.psd1 | 2 +- .../Localizations/pl-PL/Sophia.psd1 | 2 +- .../Localizations/pt-BR/Sophia.psd1 | 2 +- .../Localizations/ru-RU/Sophia.psd1 | 2 +- .../Localizations/tr-TR/Sophia.psd1 | 2 +- .../Localizations/uk-UA/Sophia.psd1 | 2 +- .../Localizations/zh-CN/Sophia.psd1 | 2 +- .../Module/Sophia.psm1 | 314 +++------------- .../Sophia.ps1 | 12 +- 104 files changed, 559 insertions(+), 1746 deletions(-) diff --git a/README.md b/README.md index 44e46cf5..143cb198 100644 --- a/README.md +++ b/README.md @@ -114,10 +114,10 @@ | Version | Marketing name | Build | Editions | |:-----------------------------------------|--------------------:|:-----------:|:-------------------:| | Windows 11 Insider Preview 24H2 | 2024 Update | 22509+ | Home/Pro/Enterprise | -| Windows 11 23H2 | 2023 Update | 22631.3085+ | Home/Pro/Enterprise | -| Windows 10 x64 22H2 | 2022 Update | 19045.3996+ | Home/Pro/Enterprise | -| Windows 10 x64 21H2 Enterprise LTSC 2021 | October 2021 Update | 19044.3930+ | Enterprise | -| Windows 10 x64 1809 Enterprise LTSC 2019 | October 2018 Update | 17763.5329+ | Enterprise | +| Windows 11 23H2 | 2023 Update | 22631.3155+ | Home/Pro/Enterprise | +| Windows 10 x64 22H2 | 2022 Update | 19045.4046+ | Home/Pro/Enterprise | +| Windows 10 x64 21H2 Enterprise LTSC 2021 | October 2021 Update | 19044.4046+ | Enterprise | +| Windows 10 x64 1809 Enterprise LTSC 2019 | October 2018 Update | 17763.5458+ | Enterprise | ### Warning diff --git a/README_de-de.md b/README_de-de.md index 1cef6269..7d78c42d 100644 --- a/README_de-de.md +++ b/README_de-de.md @@ -114,10 +114,10 @@ | Version | Marketing name | Build | Editions | |:-----------------------------------------|--------------------:|:-----------:|:-------------------:| | Windows 11 Insider Preview 24H2 | 2024 Update | 22509+ | Home/Pro/Enterprise | -| Windows 11 23H2 | 2023 Update | 22631.3085+ | Home/Pro/Enterprise | -| Windows 10 x64 22H2 | 2022 Update | 19045.3996+ | Home/Pro/Enterprise | -| Windows 10 x64 21H2 Enterprise LTSC 2021 | October 2021 Update | 19044.3930+ | Enterprise | -| Windows 10 x64 1809 Enterprise LTSC 2019 | October 2018 Update | 17763.5329+ | Enterprise | +| Windows 11 23H2 | 2023 Update | 22631.3155+ | Home/Pro/Enterprise | +| Windows 10 x64 22H2 | 2022 Update | 19045.4046+ | Home/Pro/Enterprise | +| Windows 10 x64 21H2 Enterprise LTSC 2021 | October 2021 Update | 19044.4046+ | Enterprise | +| Windows 10 x64 1809 Enterprise LTSC 2019 | October 2018 Update | 17763.5458+ | Enterprise | ### Warnung diff --git a/README_uk-ua.md b/README_uk-ua.md index a7c6c09c..f05ad57e 100644 --- a/README_uk-ua.md +++ b/README_uk-ua.md @@ -114,10 +114,10 @@ | Версія | Маркетингова назва | Збіркa | Видання | |:-----------------------------------------|--------------------:|:-----------:|:-------------------:| | Windows 11 Insider Preview 24H2 | 2024 Update | 22509+ | Home/Pro/Enterprise | -| Windows 11 23H2 | 2023 Update | 22631.3085+ | Home/Pro/Enterprise | -| Windows 10 x64 22H2 | 2022 Update | 19045.3996+ | Home/Pro/Enterprise | -| Windows 10 x64 21H2 Enterprise LTSC 2021 | October 2021 Update | 19044.3930+ | Enterprise | -| Windows 10 x64 1809 Enterprise LTSC 2019 | October 2018 Update | 17763.5329+ | Enterprise | +| Windows 11 23H2 | 2023 Update | 22631.3155+ | Home/Pro/Enterprise | +| Windows 10 x64 22H2 | 2022 Update | 19045.4046+ | Home/Pro/Enterprise | +| Windows 10 x64 21H2 Enterprise LTSC 2021 | October 2021 Update | 19044.4046+ | Enterprise | +| Windows 10 x64 1809 Enterprise LTSC 2019 | October 2018 Update | 17763.5458+ | Enterprise | ### Увага diff --git a/Wrapper/Config/config_Windows_10.json b/Wrapper/Config/config_Windows_10.json index f7b658ed..f5485659 100644 --- a/Wrapper/Config/config_Windows_10.json +++ b/Wrapper/Config/config_Windows_10.json @@ -1632,21 +1632,12 @@ "Function": "InstallDotNetRuntimes -Runtimes", "Arg": { "Zero": { - "Tag": "NET6x86" - }, - "One": { "Tag": "NET6x64" }, - "Two": { - "Tag": "NET7x86" - }, - "Three": { + "One": { "Tag": "NET7x64" }, - "Four": { - "Tag": "NET8x86" - }, - "Five": { + "Two": { "Tag": "NET8x64" } }, diff --git a/Wrapper/Config/config_Windows_10_LTSC.json b/Wrapper/Config/config_Windows_10_LTSC.json index c40500b0..a9debb68 100644 --- a/Wrapper/Config/config_Windows_10_LTSC.json +++ b/Wrapper/Config/config_Windows_10_LTSC.json @@ -1559,28 +1559,17 @@ "Function": "InstallDotNetRuntimes -Runtimes", "Arg": { "Zero": { - "Tag": "NET6x86" - }, - "One": { "Tag": "NET6x64" }, - "Two": { - "Tag": "NET7x86" - }, - "Three": { + "One": { "Tag": "NET7x64" }, - "Four": { - "Tag": "NET8x86" - }, - "Five": { + "Two": { "Tag": "NET8x64" } }, "Preset": "", - "WindowsDefault": "", - "LTSC2019": "true", - "LTSC2021": "true" + "WindowsDefault": "" }, { "Region": "System", diff --git a/Wrapper/Config/config_Windows_11.json b/Wrapper/Config/config_Windows_11.json index 069edb1c..10a347db 100644 --- a/Wrapper/Config/config_Windows_11.json +++ b/Wrapper/Config/config_Windows_11.json @@ -1558,25 +1558,16 @@ "Function": "InstallDotNetRuntimes -Runtimes", "Arg": { "Zero": { - "Tag": "NET6x86" - }, - "One": { "Tag": "NET6x64" }, - "Two": { - "Tag": "NET7x86" - }, - "Three": { + "One": { "Tag": "NET7x64" }, - "Four": { - "Tag": "NET8x86" - }, - "Five": { + "Two": { "Tag": "NET8x64" } }, - "Preset": "012345", + "Preset": "", "WindowsDefault": "" }, { diff --git a/Wrapper/Localizations/de-DE/tooltip_Windows_10.json b/Wrapper/Localizations/de-DE/tooltip_Windows_10.json index 23e4f734..a1f44a37 100644 --- a/Wrapper/Localizations/de-DE/tooltip_Windows_10.json +++ b/Wrapper/Localizations/de-DE/tooltip_Windows_10.json @@ -1379,17 +1379,17 @@ "ToolTip": "Registrieren Sie die App, berechnen Sie den Hash und verknüpfen Sie sie mit einer Erweiterung, wobei das Popup 'Wie möchten Sie diese öffnen?' ausgeblendet ist." }, "One": { - "Tag": "ProgramPath", - "ToolTip": "Pfad zur ausführbaren Datei." - }, - "Two": { - "Tag": "Extension", - "ToolTip": "Erweiterung." - }, - "Three": { - "Tag": "Icon", - "ToolTip": "Pfad zum Symbol." - } + "Tag": "ProgramPath", + "ToolTip": "Pfad zur ausführbaren Datei." + }, + "Two": { + "Tag": "Extension", + "ToolTip": "Erweiterung." + } + "Three": { + "Tag": "Icon", + "ToolTip": "Pfad zum Symbol." + } } }, { @@ -1435,29 +1435,17 @@ { "Region": "System", "Function": "InstallDotNetRuntimes -Runtimes", - "ToolTip": "Installieren Sie die neueste .NET Desktop Runtime 6, 7, 8 (x86/x64).", + "ToolTip": "Installieren Sie die neueste .NET Desktop Runtime 6, 7, 8 x64.", "Arg": { "Zero": { - "Tag": "NET6x86", - "ToolTip": ".NET Desktop Runtime 6 x86." - }, - "One": { "Tag": "NET6x64", "ToolTip": ".NET Desktop Runtime 6 x64." }, - "Two": { - "Tag": "NET7x86", - "ToolTip": ".NET Desktop Runtime 7 x86." - }, - "Three": { + "One": { "Tag": "NET7x64", "ToolTip": ".NET Desktop Runtime 7 x64." }, - "Four": { - "Tag": "NET8x86", - "ToolTip": ".NET Desktop Runtime 8 x86." - }, - "Five": { + "Two": { "Tag": "NET8x64", "ToolTip": ".NET Desktop Runtime 8 x64." } diff --git a/Wrapper/Localizations/de-DE/tooltip_Windows_11.json b/Wrapper/Localizations/de-DE/tooltip_Windows_11.json index 90bb3cca..f3d7bde0 100644 --- a/Wrapper/Localizations/de-DE/tooltip_Windows_11.json +++ b/Wrapper/Localizations/de-DE/tooltip_Windows_11.json @@ -1312,18 +1312,18 @@ "Tag": "", "ToolTip": "Registrieren Sie die App, berechnen Sie den Hash und verknüpfen Sie sie mit einer Erweiterung, wobei das Popup 'Wie möchten Sie diese öffnen?' ausgeblendet ist." }, - "One": { - "Tag": "ProgramPath", - "ToolTip": "Pfad zur ausführbaren Datei." - }, - "Two": { - "Tag": "Extension", - "ToolTip": "Erweiterung." - }, - "Three": { - "Tag": "Icon", - "ToolTip": "Pfad zum Symbol." - } + "One": { + "Tag": "ProgramPath", + "ToolTip": "Pfad zur ausführbaren Datei." + }, + "Two": { + "Tag": "Extension", + "ToolTip": "Erweiterung." + }, + "Three": { + "Tag": "Icon", + "ToolTip": "Pfad zum Symbol." + } } }, { @@ -1373,29 +1373,17 @@ { "Region": "System", "Function": "InstallDotNetRuntimes -Runtimes", - "ToolTip": "Installieren Sie die neueste .NET Desktop Runtime 6, 7, 8 (x86/x64).", + "ToolTip": "Installieren Sie die neueste .NET Desktop Runtime 6, 7, 8 x64.", "Arg": { "Zero": { - "Tag": "NET6x86", - "ToolTip": ".NET Desktop Runtime 6 x86." - }, - "One": { "Tag": "NET6x64", "ToolTip": ".NET Desktop Runtime 6 x64." }, - "Two": { - "Tag": "NET7x86", - "ToolTip": ".NET Desktop Runtime 7 x86." - }, - "Three": { + "One": { "Tag": "NET7x64", "ToolTip": ".NET Desktop Runtime 7 x64." }, - "Four": { - "Tag": "NET8x86", - "ToolTip": ".NET Desktop Runtime 8 x86." - }, - "Five": { + "Two": { "Tag": "NET8x64", "ToolTip": ".NET Desktop Runtime 8 x64." } diff --git a/Wrapper/Localizations/en-US/tooltip_Windows_10.json b/Wrapper/Localizations/en-US/tooltip_Windows_10.json index 5466ecd8..df697a1d 100644 --- a/Wrapper/Localizations/en-US/tooltip_Windows_10.json +++ b/Wrapper/Localizations/en-US/tooltip_Windows_10.json @@ -1378,18 +1378,18 @@ "Tag": "", "ToolTip": "Register app, calculate hash, and associate with an extension with the 'How do you want to open this' pop-up hidden." }, - "One": { - "Tag": "ProgramPath", - "ToolTip": "Path to executable file." - }, - "Two": { - "Tag": "Extension", - "ToolTip": "Extension." - }, - "Three": { - "Tag": "Icon", - "ToolTip": "Path to icon." - } + "One": { + "Tag": "ProgramPath", + "ToolTip": "Path to executable file." + }, + "Two": { + "Tag": "Extension", + "ToolTip": "Extension." + }, + "Three": { + "Tag": "Icon", + "ToolTip": "Path to icon." + } } }, { @@ -1435,29 +1435,17 @@ { "Region": "System", "Function": "InstallDotNetRuntimes -Runtimes", - "ToolTip": "Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64).", + "ToolTip": "Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64).", "Arg": { "Zero": { - "Tag": "NET6x86", - "ToolTip": ".NET Desktop Runtime 6 x86." - }, - "One": { "Tag": "NET6x64", "ToolTip": ".NET Desktop Runtime 6 x64." }, - "Two": { - "Tag": "NET7x86", - "ToolTip": ".NET Desktop Runtime 7 x86." - }, - "Three": { + "One": { "Tag": "NET7x64", "ToolTip": ".NET Desktop Runtime 7 x64." }, - "Four": { - "Tag": "NET8x86", - "ToolTip": ".NET Desktop Runtime 8 x86." - }, - "Five": { + "Two": { "Tag": "NET8x64", "ToolTip": ".NET Desktop Runtime 8 x64." } diff --git a/Wrapper/Localizations/en-US/tooltip_Windows_11.json b/Wrapper/Localizations/en-US/tooltip_Windows_11.json index 09fa903f..807a0dbb 100644 --- a/Wrapper/Localizations/en-US/tooltip_Windows_11.json +++ b/Wrapper/Localizations/en-US/tooltip_Windows_11.json @@ -1312,18 +1312,18 @@ "Tag": "", "ToolTip": "Register app, calculate hash, and associate with an extension with the 'How do you want to open this' pop-up hidden." }, - "One": { - "Tag": "ProgramPath", - "ToolTip": "Path to executable file." - }, - "Two": { - "Tag": "Extension", - "ToolTip": "Extension." - }, - "Three": { - "Tag": "Icon", - "ToolTip": "Path to icon." - } + "One": { + "Tag": "ProgramPath", + "ToolTip": "Path to executable file." + }, + "Two": { + "Tag": "Extension", + "ToolTip": "Extension." + }, + "Three": { + "Tag": "Icon", + "ToolTip": "Path to icon." + } } }, { @@ -1373,29 +1373,17 @@ { "Region": "System", "Function": "InstallDotNetRuntimes -Runtimes", - "ToolTip": "Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64).", + "ToolTip": "Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64).", "Arg": { "Zero": { - "Tag": "NET6x86", - "ToolTip": ".NET Desktop Runtime 6 x86." - }, - "One": { "Tag": "NET6x64", "ToolTip": ".NET Desktop Runtime 6 x64." }, - "Two": { - "Tag": "NET7x86", - "ToolTip": ".NET Desktop Runtime 7 x86." - }, - "Three": { + "One": { "Tag": "NET7x64", "ToolTip": ".NET Desktop Runtime 7 x64." }, - "Four": { - "Tag": "NET8x86", - "ToolTip": ".NET Desktop Runtime 8 x86." - }, - "Five": { + "Two": { "Tag": "NET8x64", "ToolTip": ".NET Desktop Runtime 8 x64." } diff --git a/Wrapper/Localizations/ru-RU/tooltip_Windows_10.json b/Wrapper/Localizations/ru-RU/tooltip_Windows_10.json index 299dc31a..6d62d6e3 100644 --- a/Wrapper/Localizations/ru-RU/tooltip_Windows_10.json +++ b/Wrapper/Localizations/ru-RU/tooltip_Windows_10.json @@ -1378,18 +1378,18 @@ "Tag": "", "ToolTip": "Зарегистрируйте приложение, рассчитайте хэш и свяжите его с расширением со скрытым всплывающим окном 'Как вы хотите открыть это'." }, - "One": { - "Tag": "ProgramPath", - "ToolTip": "Путь до исполняемого файла." - }, - "Two": { - "Tag": "Extension", - "ToolTip": "Расширение." - }, - "Three": { - "Tag": "Icon", - "ToolTip": "Путь до значка." - } + "One": { + "Tag": "ProgramPath", + "ToolTip": "Путь до исполняемого файла." + }, + "Two": { + "Tag": "Extension", + "ToolTip": "Расширение." + }, + "Three": { + "Tag": "Icon", + "ToolTip": "Путь до значка." + } } }, { @@ -1435,29 +1435,17 @@ { "Region": "System", "Function": "InstallDotNetRuntimes -Runtimes", - "ToolTip": "Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64).", + "ToolTip": "Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64).", "Arg": { "Zero": { - "Tag": "NET6x86", - "ToolTip": ".NET Desktop Runtime 6 x86." - }, - "One": { "Tag": "NET6x64", "ToolTip": ".NET Desktop Runtime 6 x64." }, - "Two": { - "Tag": "NET7x86", - "ToolTip": ".NET Desktop Runtime 7 x86." - }, - "Three": { + "One": { "Tag": "NET7x64", "ToolTip": ".NET Desktop Runtime 7 x64." }, - "Four": { - "Tag": "NET8x86", - "ToolTip": ".NET Desktop Runtime 8 x86." - }, - "Five": { + "Two": { "Tag": "NET8x64", "ToolTip": ".NET Desktop Runtime 8 x64." } diff --git a/Wrapper/Localizations/ru-RU/tooltip_Windows_11.json b/Wrapper/Localizations/ru-RU/tooltip_Windows_11.json index a018568b..93fb9ae1 100644 --- a/Wrapper/Localizations/ru-RU/tooltip_Windows_11.json +++ b/Wrapper/Localizations/ru-RU/tooltip_Windows_11.json @@ -1312,18 +1312,18 @@ "Tag": "", "ToolTip": "Зарегистрируйте приложение, рассчитайте хэш и свяжите его с расширением со скрытым всплывающим окном 'Как вы хотите открыть это'." }, - "One": { - "Tag": "ProgramPath", - "ToolTip": "Путь до исполняемого файла." - }, - "Two": { - "Tag": "Extension", - "ToolTip": "Расширение." - }, - "Three": { - "Tag": "Icon", - "ToolTip": "Путь до значка." - } + "One": { + "Tag": "ProgramPath", + "ToolTip": "Путь до исполняемого файла." + }, + "Two": { + "Tag": "Extension", + "ToolTip": "Расширение." + }, + "Three": { + "Tag": "Icon", + "ToolTip": "Путь до значка." + } } }, { @@ -1373,29 +1373,17 @@ { "Region": "System", "Function": "InstallDotNetRuntimes -Runtimes", - "ToolTip": "Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64).", + "ToolTip": "Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64).", "Arg": { "Zero": { - "Tag": "NET6x86", - "ToolTip": ".NET Desktop Runtime 6 x86." - }, - "One": { "Tag": "NET6x64", "ToolTip": ".NET Desktop Runtime 6 x64." }, - "Two": { - "Tag": "NET7x86", - "ToolTip": ".NET Desktop Runtime 7 x86." - }, - "Three": { + "One": { "Tag": "NET7x64", "ToolTip": ".NET Desktop Runtime 7 x64." }, - "Four": { - "Tag": "NET8x86", - "ToolTip": ".NET Desktop Runtime 8 x86." - }, - "Five": { + "Two": { "Tag": "NET8x64", "ToolTip": ".NET Desktop Runtime 8 x64." } diff --git a/Wrapper/SophiaScriptWrapper.exe b/Wrapper/SophiaScriptWrapper.exe index 4fc30682f9ff6d446f589df35fee0a3597ff51d7..7fc559d78db0a83e7c4418e59ad344cc2139e9a9 100644 GIT binary patch delta 107727 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 J)uX&^{};E9V445` delta 105908 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 Cu;|bL diff --git a/sophia_script_versions.json b/sophia_script_versions.json index fd798a3a..b21203fa 100644 --- a/sophia_script_versions.json +++ b/sophia_script_versions.json @@ -1,9 +1,9 @@ { - "Sophia_Script_Windows_10_PowerShell_5_1": "5.18.1", - "Sophia_Script_Windows_10_PowerShell_7": "5.18.1", - "Sophia_Script_Windows_10_LTSC2019": "5.8.1", - "Sophia_Script_Windows_10_LTSC2021": "5.18.1", - "Sophia_Script_Windows_11_PowerShell_5_1": "6.6.1", - "Sophia_Script_Windows_11_PowerShell_7": "6.6.1", - "Sophia_Script_Wrapper": "2.6.17" + "Sophia_Script_Windows_10_PowerShell_5_1": "5.18.2", + "Sophia_Script_Windows_10_PowerShell_7": "5.18.2", + "Sophia_Script_Windows_10_LTSC2019": "5.8.2", + "Sophia_Script_Windows_10_LTSC2021": "5.18.2", + "Sophia_Script_Windows_11_PowerShell_5_1": "6.6.2", + "Sophia_Script_Windows_11_PowerShell_7": "6.6.2", + "Sophia_Script_Wrapper": "2.6.18" } diff --git a/src/Sophia_Script_for_Windows_10/Functions.ps1 b/src/Sophia_Script_for_Windows_10/Functions.ps1 index 0fab6280..d0c5c0fd 100644 --- a/src/Sophia_Script_for_Windows_10/Functions.ps1 +++ b/src/Sophia_Script_for_Windows_10/Functions.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS The TAB completion for functions and their arguments - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -50,7 +50,7 @@ function Sophia Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-Module -Name $PSScriptRoot\Manifest\Sophia.psd1 -PassThru -Force diff --git a/src/Sophia_Script_for_Windows_10/Localizations/de-DE/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/de-DE/Sophia.psd1 index 831558b8..33fb2a86 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/de-DE/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/de-DE/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Das Skript unterstützt nur 64-Bit-Windows. UnsupportedOSBuild = Das Skript unterstützt Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 kompiliert keinen Code, wenn der Benutzername nicht-lateinische Zeichen (einschließlich Emoji) enthält und in Kleinbuchstaben geschrieben ist. Bitte verwenden Sie PowerShell 7. -UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: 19045.4123+. Führen Sie Windows Update aus und versuchen Sie es erneut. +UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: {2}+. Führen Sie Windows Update aus und versuchen Sie es erneut. UnsupportedLanguageMode = Die PowerShell-Sitzung wird in einem eingeschränkten Sprachmodus ausgeführt. LoggedInUserNotAdmin = Der angemeldete Benutzer hat keine Administratorrechte. UnsupportedPowerShell = Sie versuchen ein Skript über PowerShell {0}.{1} auszuführen. Das Skript in der entsprechenden PowerShell-Version ausführen. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/en-US/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/en-US/Sophia.psd1 index e3d7d576..2bbb4ef6 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/en-US/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/en-US/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = The script supports 64-bit Windows only. UnsupportedOSBuild = The script supports Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 does not compile code if the username contains non-Latin characters (including emoji) and is written in lowercase. Please, use PowerShell 7. -UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: 19045.4123+. Run Windows Update and try again. +UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: {2}+. Run Windows Update and try again. UnsupportedLanguageMode = The PowerShell session in running in a limited language mode. LoggedInUserNotAdmin = The logged-on user doesn't have admin rights. UnsupportedPowerShell = You're trying to run script via PowerShell {0}.{1}. Run the script in the appropriate PowerShell version. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/es-ES/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/es-ES/Sophia.psd1 index cbdd10af..da4f308b 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/es-ES/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/es-ES/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = El script sólo es compatible con Windows de 64 bits. UnsupportedOSBuild = El script es compatible con versión Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 no compila código si el nombre de usuario contiene caracteres no latinos (incluidos los emoji) y está escrito en minúsculas. Por favor, utiliza PowerShell 7. -UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: 19045.4123+. Ejecute Windows Update y vuelva a intentarlo. +UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: {2}+. Ejecute Windows Update y vuelva a intentarlo. UnsupportedLanguageMode = Sesión de PowerShell ejecutada en modo de lenguaje limitado. LoggedInUserNotAdmin = El usuario que inició sesión no tiene derechos de administrador. UnsupportedPowerShell = Estás intentando ejecutar el script a través de PowerShell {0}.{1}. Ejecute el script en la versión apropiada de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/fr-FR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/fr-FR/Sophia.psd1 index 2d1f934e..cff456de 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/fr-FR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/fr-FR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Le script n'est compatible qu'avec Windows 64 bits. UnsupportedOSBuild = Le script supporte les versions Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 ne compile pas le code si le nom d'utilisateur contient des caractères non latins (y compris emoji) et est écrit en minuscules. Veuillez utiliser PowerShell 7. -UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: 19045.4123+. Exécutez Windows Update et réessayez. +UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: {2}+. Exécutez Windows Update et réessayez. UnsupportedLanguageMode = La session PowerShell s'exécute dans un mode de langue limité. LoggedInUserNotAdmin = L'utilisateur connecté n'a pas de droits d'administrateur. UnsupportedPowerShell = Vous essayez d'exécuter le script via PowerShell {0}.{1}. Exécutez le script dans la version appropriée de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/hu-HU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/hu-HU/Sophia.psd1 index 351b3191..594ba0e5 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/hu-HU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/hu-HU/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = A szkript csak a 64 bites Windows-t támogatja. UnsupportedOSBuild = A szkript támogatja a Windows 10 22H2 verzióját. NonLatinUsernameWarning = A PowerShell 5.1 nem fordít kódot, ha a felhasználónév nem latin betűket tartalmaz (beleértve az emojikat is), és kisbetűvel van írva. Kérjük, használja a PowerShell 7-et. -UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: 19045.4123+. Futtassa a Windows Update programot, és próbálja meg újra. +UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: {2}+. Futtassa a Windows Update programot, és próbálja meg újra. UnsupportedLanguageMode = A PowerShell munkamenet korlátozott nyelvi üzemmódban fut. LoggedInUserNotAdmin = A bejelentkezett felhasználó nem rendelkezik admin jogokkal. UnsupportedPowerShell = A PowerShell {0}.{1} segítségével próbálja futtatni a szkriptet. Futtassa a szkriptet a megfelelő PowerShell-verzióban. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/it-IT/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/it-IT/Sophia.psd1 index 7b56fa37..1d31c0f7 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/it-IT/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/it-IT/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Lo script supporta solo Windows a 64 bit. UnsupportedOSBuild = Lo script supporta Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 non compila il codice se il nome utente contiene caratteri non latini (compresi gli emoji) ed è scritto in minuscolo. Si prega di utilizzare PowerShell 7. -UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: 19045.4123+. Eseguire Windows Update e riprovare. +UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: {2}+. Eseguire Windows Update e riprovare. UnsupportedLanguageMode = La sessione PowerShell è in esecuzione in modalità lingua limitata. LoggedInUserNotAdmin = L'utente in suo non ha i diritti di amministratore. UnsupportedPowerShell = Stai cercando di eseguire lo script tramite PowerShell {0}.{1}. Esegui lo script nella versione di PowerShell appropriata. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/pl-PL/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/pl-PL/Sophia.psd1 index ae96317f..37fe3225 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/pl-PL/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/pl-PL/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Skrypt obsługuje tylko 64-bitowe systemy Windows. UnsupportedOSBuild = Skrypt obsługuje system Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 nie kompiluje kodu, jeśli nazwa użytkownika zawiera znaki spoza alfabetu łacińskiego (w tym emoji) i jest zapisana małymi literami. Prosimy o używanie PowerShell 7. -UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: 19045.4123+. Uruchom aktualizację systemu Windows i spróbuj ponownie. +UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: {2}+. Uruchom aktualizację systemu Windows i spróbuj ponownie. UnsupportedLanguageMode = Sesja PowerShell działa w trybie ograniczonego języka. LoggedInUserNotAdmin = Zalogowany użytkownik nie posiada uprawnień administratora. UnsupportedPowerShell = Próbujesz uruchomić skrypt przy użyciu PowerShell {0}.{1}. Uruchom skrypt używając odpowiedniej wersji PowerShell. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/pt-BR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/pt-BR/Sophia.psd1 index f4b8c4ce..f331647e 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/pt-BR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/pt-BR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = O guião suporta apenas Windows de 64 bits. UnsupportedOSBuild = O script suporta versões Windows 10 22H2. NonLatinUsernameWarning = O PowerShell 5.1 não compilará o código se o nome de usuário contiver caracteres não latinos (inclusive emoji) e estiver escrito em letras minúsculas. Por favor, use o PowerShell 7. -UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: 19045.4123+. Execute o Windows Update e tente novamente. +UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: {2}+. Execute o Windows Update e tente novamente. UnsupportedLanguageMode = A sessão PowerShell em funcionamento em um modo de linguagem limitada. LoggedInUserNotAdmin = O usuário logado não tem direitos de administrador. UnsupportedPowerShell = Você está tentando executar o script via PowerShell {0}.{1}. Execute o script na versão apropriada do PowerShell. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/ru-RU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/ru-RU/Sophia.psd1 index b9e0df29..690dd5d2 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/ru-RU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/ru-RU/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Скрипт поддерживает только 64-битную версию Windows. UnsupportedOSBuild = Скрипт поддерживает Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 не компилирует код, если имя пользователя содержит нелатинские символы (включая эмодзи) и написано со строчной буквы. Пожалуйста, используйте PowerShell 7. -UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: 19045.4123+. Запустите обновление Windows и попробуйте заново. +UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: {2}+. Запустите обновление Windows и попробуйте заново. UnsupportedLanguageMode = Сессия PowerShell работает в ограниченном режиме. LoggedInUserNotAdmin = Текущий вошедший пользователь не обладает правами администратора. UnsupportedPowerShell = Вы пытаетесь запустить скрипт в PowerShell {0}.{1}. Запустите скрипт в соответствующей версии PowerShell. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/tr-TR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/tr-TR/Sophia.psd1 index f57230d1..a63851d8 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/tr-TR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/tr-TR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Komut dosyası yalnızca 64 bit Windows'u destekler. UnsupportedOSBuild = Komut dosyası Windows 10 22H2'u destekler. NonLatinUsernameWarning = PowerShell 5.1, kullanıcı adı Latin olmayan karakterler içeriyorsa (emoji dahil) ve küçük harfle yazılmışsa kodu derlemez. Lütfen PowerShell 7 kullanın. -UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: 19045.4123+. Windows Update'i çalıştırın ve tekrar deneyin. +UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: {2}+. Windows Update'i çalıştırın ve tekrar deneyin. UnsupportedLanguageMode = Sınırlı bir dil modunda çalışan PowerShell oturumu. LoggedInUserNotAdmin = Oturum açan kullanıcının yönetici hakları yok. UnsupportedPowerShell = Komut dosyasını PowerShell {0}.{1} aracılığıyla çalıştırmaya çalışıyorsunuz. Komut dosyasını uygun PowerShell sürümünde çalıştırın. 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 25f2b2ce..25bf4062 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 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Скрипт підтримує тільки 64-розрядну версію Windows. UnsupportedOSBuild = Скрипт підтримує Windows 10 22H2. NonLatinUsernameWarning = PowerShell 5.1 не компілює код, якщо ім'я користувача містить нелатинські символи (включно з емодзі) і написане з малої літери. Будь ласка, використовуйте PowerShell 7. -UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: 19045.4123+. Запустіть Windows Update і повторіть спробу. +UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: {2}+. Запустіть Windows Update і повторіть спробу. UnsupportedLanguageMode = Сесія PowerShell працює в обмеженому режимі. LoggedInUserNotAdmin = Поточний користувач, що увійшов, не має прав адміністратора. UnsupportedPowerShell = Ви намагаєтеся запустити скрипт в PowerShell {0}.{1}. Запустіть скрипт у відповідній версії PowerShell. diff --git a/src/Sophia_Script_for_Windows_10/Localizations/zh-CN/Sophia.psd1 b/src/Sophia_Script_for_Windows_10/Localizations/zh-CN/Sophia.psd1 index 5775ea7b..4a7db466 100644 --- a/src/Sophia_Script_for_Windows_10/Localizations/zh-CN/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10/Localizations/zh-CN/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = 该脚本仅支持64位Windows。 UnsupportedOSBuild = 该脚本支持Windows 10版本22H2和更高版本。 NonLatinUsernameWarning = 如果用户名包含非拉丁字符(包括表情符号)且以小写字母书写,PowerShell 5.1 将无法编译代码。请使用 PowerShell 7。 -UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: 19045.4123+。运行Windows Update并再次尝试。 +UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: {2}+。运行Windows Update并再次尝试。 UnsupportedLanguageMode = PowerShell会话在有限的语言模式下运行。 LoggedInUserNotAdmin = 登录的用户没有管理员的权利。 UnsupportedPowerShell = 你想通过PowerShell {0}.{1}运行脚本。在适当的PowerShell版本中运行该脚本。 diff --git a/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1 index 1d2eb106..bcd5d509 100644 --- a/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1 +++ b/src/Sophia_Script_for_Windows_10/Module/Sophia.psm1 @@ -2,8 +2,8 @@ .SYNOPSIS Sophia Script is a PowerShell module for Windows 10 & Windows 11 fine-tuning and automating the routine tasks - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -172,89 +172,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } } - # Check whether Microsoft Edge as being a system component was removed by harmful tweakers - if (-not (Test-Path -Path "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe")) - { - Write-Information -MessageData "" -InformationAction Continue - # Extract the localized "Please wait..." string from shell32.dll - Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose - - 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") - { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - - return - } - - try - { - # Download Microsoft Edge Stable x64 - # https://edgeupdates.microsoft.com/api/products?view=enterprise - $Parameters = @{ - Uri = "https://edgeupdates.microsoft.com/api/products?view=enterprise" - UseBasicParsing = $true - Verbose = $true - } - $EdgeLinks = Invoke-RestMethod @Parameters - $EdgeURL = (($EdgeLinks | Where-Object -FilterScript {$_.Product -eq "Stable"}).Releases | Where-Object -FilterScript {($_.Platform -eq "Windows") -and ($_.Architecture -eq "x64")} | Select-Object -Index 1).Artifacts.Location - - $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" - $Parameters = @{ - Uri = $EdgeURL - OutFile = "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" - UseBasicParsing = $true - Verbose = $true - } - Invoke-Webrequest @Parameters - - # Install Microsoft Edge Stable x64 - Start-Process -FilePath "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -ArgumentList "/passive /norestart DONOTCREATEDESKTOPSHORTCUT=TRUE" -Wait - - Remove-Item -Path "$env:Public\Desktop\Microsoft Edge.lnk" -Force -ErrorAction Ignore - - Start-Sleep -Seconds 5 - - try - { - & "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe" --no-first-run --noerrdialogs --no-default-browser-check --start-maximized - } - catch - { - Write-Warning -Message ($Localization.WindowsComponentBroken -f "Microsoft Edge") - - Start-Process -FilePath "https://t.me/sophia_chat" - Start-Process -FilePath "https://discord.gg/sSryhaEv79" - - exit - } - - Stop-Process -Name msedge -Force -ErrorAction Ignore - - Remove-Item -Path "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -Force - } - catch [System.Net.WebException] - { - Write-Warning -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") - Write-Error -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") -ErrorAction SilentlyContinue - } - } - catch [System.ComponentModel.Win32Exception] - { - Write-Warning -Message $Localization.NoInternetConnection - Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue - } - } - # Detect Windows bitness if (-not [System.Environment]::Is64BitOperatingSystem) { @@ -631,9 +548,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -710,13 +624,53 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } "19045" { - if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt 4123) + # Check whether the current module version is the latest one + try { - # Check whether Windows minor build version is 4123 minimum - # https://learn.microsoft.com/en-us/windows/release-health/release-information#windows-10-current-versions-by-servicing-option + # 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 + { + # 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 + } + } + catch [System.ComponentModel.Win32Exception] + { + $LatestSupportedBuild = 0 + + Write-Warning -Message $Localization.NoInternetConnection + Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue + } + + # We may use Test-Path -Path variable:LatestSupportedBuild + if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt $LatestSupportedBuild) + { + # Check Windows minor build version + # https://support.microsoft.com/en-us/topic/windows-10-update-history-8127c2c6-6edf-4fdf-8b9f-0f7be1ef3562 $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR - Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR) + Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR, $LatestSupportedBuild) Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -776,9 +730,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -908,7 +859,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); { Write-Verbose -Message ($Localization.WindowsComponentBroken -f [WinAPI.GetStrings]::GetIndirectString("@%SystemRoot%\system32\schedsvc.dll,-100")) -Verbose - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -4849,9 +4799,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4975,9 +4922,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -5488,9 +5432,6 @@ public static bool MarkFileDelete (string sourcefile) } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6966,9 +6907,6 @@ function WindowsCapabilities } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -7314,9 +7252,6 @@ function IPv6Component } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -10481,9 +10416,6 @@ function InstallVCRedist } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -10542,10 +10474,10 @@ function InstallVCRedist <# .SYNOPSIS - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 .EXAMPLE - InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 + InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 .LINK https://dotnet.microsoft.com/en-us/download/dotnet @@ -10562,7 +10494,7 @@ function InstallDotNetRuntimes Mandatory = $true, ParameterSetName = "Runtimes" )] - [ValidateSet("NET6x86", "NET6x64", "NET7x86", "NET7x64", "NET8x86", "NET8x64")] + [ValidateSet("NET6x64", "NET7x64", "NET8x64")] [string[]] $Runtimes ) @@ -10578,9 +10510,6 @@ function InstallDotNetRuntimes } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } } @@ -10596,50 +10525,6 @@ function InstallDotNetRuntimes { switch ($Runtime) { - NET6x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6 - # .NET Desktop Runtime 6 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x86 --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 - { - # Install .NET Desktop Runtime 6 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/6.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 6 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET6x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10684,50 +10569,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } } - NET7x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/7 - # .NET Desktop Runtime 7 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.7 --architecture x86 --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 - Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - else - { - # .NET Desktop Runtime 7 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/7.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 7 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET7x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10771,52 +10612,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - - } - NET8x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/8 - # .NET Desktop Runtime 8 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x86 --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 - { - # .NET Desktop Runtime 8 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 8 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET8x64 { @@ -10860,7 +10655,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } } } @@ -11168,9 +10962,6 @@ function Install-WSL } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -16286,10 +16077,10 @@ function Errors } [PSCustomObject]@{ - $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber + $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber # Extract the localized "File" string from shell32.dll "$([WinAPI.GetStrings]::GetString(4130))" = $ErrorInFile - $Localization.ErrorsMessage = $_.Exception.Message + $Localization.ErrorsMessage = $_.Exception.Message } } | Sort-Object -Property $Localization.ErrorsLine | Format-Table -AutoSize -Wrap | Out-String).Trim() } diff --git a/src/Sophia_Script_for_Windows_10/Sophia.ps1 b/src/Sophia_Script_for_Windows_10/Sophia.ps1 index 2e0454a7..61f4cd89 100644 --- a/src/Sophia_Script_for_Windows_10/Sophia.ps1 +++ b/src/Sophia_Script_for_Windows_10/Sophia.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS Default preset file for "Sophia Script for Windows 10" - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -70,7 +70,7 @@ param Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-LocalizedData -BindingVariable Global:Localization -BaseDirectory $PSScriptRoot\Localizations -FileName Sophia @@ -1007,12 +1007,12 @@ UninstallPCHealthCheck InstallVCRedist <# - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) - Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 + Установить последнюю версию .NET Desktop Runtime 6, 7, 8 x64 https://dotnet.microsoft.com/en-us/download/dotnet #> -InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 +InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 # Enable proxying only blocked sites from the unified registry of Roskomnadzor. The function is applicable for Russia only # Включить проксирование только заблокированных сайтов из единого реестра Роскомнадзора. Функция применима только для России diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Functions.ps1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Functions.ps1 index 20e75ea0..fa3e4765 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Functions.ps1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Functions.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS The TAB completion for functions and their arguments - Version: v5.8.1 - Date: 03.03.2024 + Version: v5.8.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -50,7 +50,7 @@ function Sophia Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2019 v5.8.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows 10 | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2019 v5.8.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows 10 | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-Module -Name $PSScriptRoot\Manifest\Sophia.psd1 -PassThru -Force diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/de-DE/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/de-DE/Sophia.psd1 index 5808be9f..58b3030e 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/de-DE/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/de-DE/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Das Skript unterstützt nur 64-Bit-Windows. UnsupportedOSBuild = Das Skript unterstützt Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 kompiliert keinen Code, wenn der Benutzername nicht-lateinische Zeichen (einschließlich Emoji) enthält und in Kleinbuchstaben geschrieben ist. Bitte verwenden Sie PowerShell 7. -UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: 17763.5458+. Führen Sie Windows Update aus und versuchen Sie es erneut. +UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: {2}+. Führen Sie Windows Update aus und versuchen Sie es erneut. UnsupportedLanguageMode = Die PowerShell-Sitzung wird in einem eingeschränkten Sprachmodus ausgeführt. LoggedInUserNotAdmin = Der angemeldete Benutzer hat keine Administratorrechte. UnsupportedPowerShell = Sie versuchen ein Skript über PowerShell {0}.{1} auszuführen. Das Skript in der entsprechenden PowerShell-Version ausführen. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/en-US/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/en-US/Sophia.psd1 index f50e6b4b..01537193 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/en-US/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/en-US/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = The script supports 64-bit Windows only. UnsupportedOSBuild = The script supports Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 does not compile code if the username contains non-Latin characters (including emoji) and is written in lowercase. Please, use PowerShell 7. -UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: 17763.5458+. Run Windows Update and try again. +UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: {2}+. Run Windows Update and try again. UnsupportedLanguageMode = The PowerShell session in running in a limited language mode. LoggedInUserNotAdmin = The logged-on user doesn't have admin rights. UnsupportedPowerShell = You're trying to run script via PowerShell {0}.{1}. Run the script in the appropriate PowerShell version. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/es-ES/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/es-ES/Sophia.psd1 index d398deaf..11417a65 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/es-ES/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/es-ES/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = El script sólo es compatible con Windows de 64 bits. UnsupportedOSBuild = El script es compatible con versión Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 no compila código si el nombre de usuario contiene caracteres no latinos (incluidos los emoji) y está escrito en minúsculas. Por favor, utiliza PowerShell 7. -UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: 17763.5458+. Ejecute Windows Update y vuelva a intentarlo. +UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: {2}+. Ejecute Windows Update y vuelva a intentarlo. UnsupportedLanguageMode = Sesión de PowerShell ejecutada en modo de lenguaje limitado. LoggedInUserNotAdmin = El usuario que inició sesión no tiene derechos de administrador. UnsupportedPowerShell = Estás intentando ejecutar el script a través de PowerShell {0}.{1}. Ejecute el script en la versión apropiada de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/fr-FR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/fr-FR/Sophia.psd1 index 450276df..792ec9e1 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/fr-FR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/fr-FR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Le script n'est compatible qu'avec Windows 64 bits. UnsupportedOSBuild = Le script supporte le version Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 ne compile pas le code si le nom d'utilisateur contient des caractères non latins (y compris emoji) et est écrit en minuscules. Veuillez utiliser PowerShell 7. -UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: 17763.5458+. Exécutez Windows Update et réessayez. +UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: {2}+. Exécutez Windows Update et réessayez. UnsupportedLanguageMode = La session PowerShell s'exécute dans un mode de langue limité. LoggedInUserNotAdmin = L'utilisateur connecté n'a pas de droits d'administrateur. UnsupportedPowerShell = Vous essayez d'exécuter le script via PowerShell {0}.{1}. Exécutez le script dans la version appropriée de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/hu-HU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/hu-HU/Sophia.psd1 index a371b551..a867b836 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/hu-HU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/hu-HU/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = A szkript csak a 64 bites Windows-t támogatja. UnsupportedOSBuild = A szkript támogatja a Windows 10 Enterprise LTSC 2019 kiadást. NonLatinUsernameWarning = A PowerShell 5.1 nem fordít kódot, ha a felhasználónév nem latin betűket tartalmaz (beleértve az emojikat is), és kisbetűvel van írva. Kérjük, használja a PowerShell 7-et. -UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: 17763.5458+. Futtassa a Windows Update programot, és próbálja meg újra. +UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: {2}+. Futtassa a Windows Update programot, és próbálja meg újra. UnsupportedLanguageMode = A PowerShell munkamenet korlátozott nyelvi üzemmódban fut. LoggedInUserNotAdmin = A bejelentkezett felhasználó nem rendelkezik admin jogokkal. UnsupportedPowerShell = A PowerShell {0}.{1} segítségével próbálja futtatni a szkriptet. Futtassa a szkriptet a megfelelő PowerShell-verzióban. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/it-IT/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/it-IT/Sophia.psd1 index e882f360..af15b35b 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/it-IT/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/it-IT/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Lo script supporta solo Windows a 64 bit. UnsupportedOSBuild = Lo script supporta Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 non compila il codice se il nome utente contiene caratteri non latini (compresi gli emoji) ed è scritto in minuscolo. Si prega di utilizzare PowerShell 7. -UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: 17763.5458+. Eseguire Windows Update e riprovare. +UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: {2}+. Eseguire Windows Update e riprovare. UnsupportedLanguageMode = La sessione PowerShell è in esecuzione in modalità lingua limitata. LoggedInUserNotAdmin = L'utente in suo non ha i diritti di amministratore. UnsupportedPowerShell = Stai cercando di eseguire lo script tramite PowerShell {0}.{1}. Esegui lo script nella versione di PowerShell appropriata. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pl-PL/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pl-PL/Sophia.psd1 index e5595be4..c1ffcd2e 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pl-PL/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pl-PL/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Skrypt obsługuje tylko 64-bitowe systemy Windows. UnsupportedOSBuild = Skrypt obsługuje system Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 nie kompiluje kodu, jeśli nazwa użytkownika zawiera znaki spoza alfabetu łacińskiego (w tym emoji) i jest zapisana małymi literami. Prosimy o używanie PowerShell 7. -UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: 17763.5458+. Uruchom aktualizację systemu Windows i spróbuj ponownie. +UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: {2}+. Uruchom aktualizację systemu Windows i spróbuj ponownie. UnsupportedLanguageMode = Sesja PowerShell działa w trybie ograniczonego języka. LoggedInUserNotAdmin = Zalogowany użytkownik nie posiada uprawnień administratora. UnsupportedPowerShell = Próbujesz uruchomić skrypt przy użyciu PowerShell {0}.{1}. Uruchom skrypt używając odpowiedniej wersji PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pt-BR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pt-BR/Sophia.psd1 index 027c03bd..ce004b47 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pt-BR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/pt-BR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = O guião suporta apenas Windows de 64 bits. UnsupportedOSBuild = O script suporta versões Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = O PowerShell 5.1 não compilará o código se o nome de usuário contiver caracteres não latinos (inclusive emoji) e estiver escrito em letras minúsculas. Por favor, use o PowerShell 7. -UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: 17763.5458+. Execute o Windows Update e tente novamente. +UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: {2}+. Execute o Windows Update e tente novamente. UnsupportedLanguageMode = A sessão PowerShell em funcionamento em um modo de linguagem limitada. LoggedInUserNotAdmin = O usuário logado não tem direitos de administrador. UnsupportedPowerShell = Você está tentando executar o script via PowerShell {0}.{1}. Execute o script na versão apropriada do PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/ru-RU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/ru-RU/Sophia.psd1 index 4b0da7a3..02957670 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/ru-RU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/ru-RU/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Скрипт поддерживает только 64-битную версию Windows. UnsupportedOSBuild = Скрипт поддерживает только Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 не компилирует код, если имя пользователя содержит нелатинские символы (включая эмодзи) и написано со строчной буквы. Пожалуйста, используйте PowerShell 7. -UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: 17763.5458+. Запустите обновление Windows и попробуйте заново. +UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: {2}+. Запустите обновление Windows и попробуйте заново. UnsupportedLanguageMode = Сессия PowerShell работает в ограниченном режиме. LoggedInUserNotAdmin = Текущий вошедший пользователь не обладает правами администратора. UnsupportedPowerShell = Вы пытаетесь запустить скрипт в PowerShell {0}.{1}. Запустите скрипт в соответствующей версии PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/tr-TR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/tr-TR/Sophia.psd1 index 05e6fdbd..71a6f039 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/tr-TR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/tr-TR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Komut dosyası yalnızca 64 bit Windows'u destekler. UnsupportedOSBuild = Komut dosyası Windows 10 Enterprise LTSC 2019'u destekler. NonLatinUsernameWarning = PowerShell 5.1, kullanıcı adı Latin olmayan karakterler içeriyorsa (emoji dahil) ve küçük harfle yazılmışsa kodu derlemez. Lütfen PowerShell 7 kullanın. -UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: 17763.5458+. Windows Update'i çalıştırın ve tekrar deneyin. +UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: {2}+. Windows Update'i çalıştırın ve tekrar deneyin. UnsupportedLanguageMode = Sınırlı bir dil modunda çalışan PowerShell oturumu. LoggedInUserNotAdmin = Oturum açan kullanıcının yönetici hakları yok. UnsupportedPowerShell = Komut dosyasını PowerShell {0}.{1} aracılığıyla çalıştırmaya çalışıyorsunuz. Komut dosyasını uygun PowerShell sürümünde çalıştırın. 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 52619476..97e24d41 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 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Скрипт підтримує тільки 64-розрядну версію Windows. UnsupportedOSBuild = Скрипт підтримує тільки Windows 10 Enterprise LTSC 2019. NonLatinUsernameWarning = PowerShell 5.1 не компілює код, якщо ім'я користувача містить нелатинські символи (включно з емодзі) і написане з малої літери. Будь ласка, використовуйте PowerShell 7. -UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: 17763.5458+. Запустіть Windows Update і повторіть спробу. +UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: {2}+. Запустіть Windows Update і повторіть спробу. UnsupportedLanguageMode = Сесія PowerShell працює в обмеженому режимі. LoggedInUserNotAdmin = Поточний користувач, що увійшов, не має прав адміністратора. UnsupportedPowerShell = Ви намагаєтеся запустити скрипт в PowerShell {0}.{1}. Запустіть скрипт у відповідній версії PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/zh-CN/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/zh-CN/Sophia.psd1 index 479e32c7..09ffdbcd 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/zh-CN/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Localizations/zh-CN/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = 该脚本仅支持64位Windows。 UnsupportedOSBuild = 该脚本支持Windows 10版本Enterprise LTSC 2019。 NonLatinUsernameWarning = 如果用户名包含非拉丁字符(包括表情符号)且以小写字母书写,PowerShell 5.1 将无法编译代码。请使用 PowerShell 7。 -UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: 17763.5458+。运行Windows Update并再次尝试。 +UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: {2}+。运行Windows Update并再次尝试。 UnsupportedLanguageMode = PowerShell会话在有限的语言模式下运行。 LoggedInUserNotAdmin = 登录的用户没有管理员的权利。 UnsupportedPowerShell = 你想通过PowerShell {0}.{1}运行脚本。在适当的PowerShell版本中运行该脚本。 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 69ed3099..74cb56c3 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 @@ -2,8 +2,8 @@ .SYNOPSIS Sophia Script is a PowerShell module for Windows 10 & Windows 11 fine-tuning and automating the routine tasks - Version: v5.8.1 - Date: 03.03.2024 + Version: v5.8.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -514,9 +514,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -601,13 +598,53 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } "17763" { - if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt 5458) + # Check whether the current module version is the latest one + 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 + { + # 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 + } + } + catch [System.ComponentModel.Win32Exception] { - # Check whether Windows minor build version is 5458 minimum - # https://learn.microsoft.com/en-us/windows/release-health/release-information#windows-10-current-versions-by-servicing-option + $LatestSupportedBuild = 0 + + Write-Warning -Message $Localization.NoInternetConnection + Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue + } + + # We may use Test-Path -Path variable:LatestSupportedBuild + if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt $LatestSupportedBuild) + { + # Check Windows minor build version + # https://support.microsoft.com/en-us/topic/windows-10-and-windows-server-2019-update-history-725fc2e1-4443-6831-a5ca-51ff5cbcb059 $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR - Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR) + Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR, $LatestSupportedBuild) Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -664,9 +701,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -796,7 +830,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); { Write-Verbose -Message ($Localization.WindowsComponentBroken -f [WinAPI.GetStrings]::GetIndirectString("@%SystemRoot%\system32\schedsvc.dll,-100")) -Verbose - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -3790,9 +3823,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -3916,9 +3946,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -5589,9 +5616,6 @@ function WindowsCapabilities } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -5937,9 +5961,6 @@ function IPv6Component } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -8708,9 +8729,6 @@ function InstallVCRedist } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -8769,10 +8787,10 @@ function InstallVCRedist <# .SYNOPSIS - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 .EXAMPLE - InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 + InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 .LINK https://dotnet.microsoft.com/en-us/download/dotnet @@ -8789,7 +8807,7 @@ function InstallDotNetRuntimes Mandatory = $true, ParameterSetName = "Runtimes" )] - [ValidateSet("NET6x86", "NET6x64", "NET7x86", "NET7x64", "NET8x86", "NET8x64")] + [ValidateSet("NET6x64", "NET7x64", "NET8x64")] [string[]] $Runtimes ) @@ -8805,9 +8823,6 @@ function InstallDotNetRuntimes } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } } @@ -8823,50 +8838,6 @@ function InstallDotNetRuntimes { switch ($Runtime) { - NET6x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6 - # .NET Desktop Runtime 6 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x86 --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 - { - # Install .NET Desktop Runtime 6 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/6.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 6 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET6x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -8911,50 +8882,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } } - NET7x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/7 - # .NET Desktop Runtime 7 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.7 --architecture x86 --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 - Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - else - { - # .NET Desktop Runtime 7 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/7.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 7 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET7x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -8999,51 +8926,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } - NET8x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/8 - # .NET Desktop Runtime 8 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x86 --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 - { - # .NET Desktop Runtime 8 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 8 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET8x64 { @@ -9087,7 +8969,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } } } @@ -12562,10 +12443,10 @@ function Errors } [PSCustomObject]@{ - $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber + $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber # Extract the localized "File" string from shell32.dll "$([WinAPI.GetStrings]::GetString(4130))" = $ErrorInFile - $Localization.ErrorsMessage = $_.Exception.Message + $Localization.ErrorsMessage = $_.Exception.Message } } | Sort-Object -Property $Localization.ErrorsLine | Format-Table -AutoSize -Wrap | Out-String).Trim() } 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 4776651d..926849c6 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2019/Sophia.ps1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2019/Sophia.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS Default preset file for "Sophia Script for Windows 10 LTSC 2019" - Version: v5.8.1 - Date: 03.03.2024 + Version: v5.8.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -70,7 +70,7 @@ param Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2019 v5.8.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2019 v5.8.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-LocalizedData -BindingVariable Global:Localization -BaseDirectory $PSScriptRoot\Localizations -FileName Sophia @@ -788,12 +788,12 @@ ActiveHours -Automatically InstallVCRedist <# - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) - Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 + Установить последнюю версию .NET Desktop Runtime 6, 7, 8 x64 https://dotnet.microsoft.com/en-us/download/dotnet #> -InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 +InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 # Enable proxying only blocked sites from the unified registry of Roskomnadzor. The function is applicable for Russia only # Включить проксирование только заблокированных сайтов из единого реестра Роскомнадзора. Функция применима только для России diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Functions.ps1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Functions.ps1 index 1b78d58f..2e27fc65 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Functions.ps1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Functions.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS The TAB completion for functions and their arguments - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -50,7 +50,7 @@ function Sophia Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2021 v5.18.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2021 v5.18.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-Module -Name $PSScriptRoot\Manifest\Sophia.psd1 -PassThru -Force diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/de-DE/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/de-DE/Sophia.psd1 index 559a7d57..b464dd5f 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/de-DE/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/de-DE/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Das Skript unterstützt nur 64-Bit-Windows. UnsupportedOSBuild = Das Skript unterstützt Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 kompiliert keinen Code, wenn der Benutzername nicht-lateinische Zeichen (einschließlich Emoji) enthält und in Kleinbuchstaben geschrieben ist. Bitte verwenden Sie PowerShell 7. -UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: 19044.4046+. Führen Sie Windows Update aus und versuchen Sie es erneut. +UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: {2}+. Führen Sie Windows Update aus und versuchen Sie es erneut. UnsupportedLanguageMode = Die PowerShell-Sitzung wird in einem eingeschränkten Sprachmodus ausgeführt. LoggedInUserNotAdmin = Der angemeldete Benutzer hat keine Administratorrechte. UnsupportedPowerShell = Sie versuchen ein Skript über PowerShell {0}.{1} auszuführen. Das Skript in der entsprechenden PowerShell-Version ausführen. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/en-US/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/en-US/Sophia.psd1 index d4261ef6..e84b5563 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/en-US/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/en-US/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = The script supports 64-bit Windows only. UnsupportedOSBuild = The script supports Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 does not compile code if the username contains non-Latin characters (including emoji) and is written in lowercase. Please, use PowerShell 7. -UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: 19044.4046+. Run Windows Update and try again. +UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: {2}+. Run Windows Update and try again. UnsupportedLanguageMode = The PowerShell session in running in a limited language mode. LoggedInUserNotAdmin = The logged-on user doesn't have admin rights. UnsupportedPowerShell = You're trying to run script via PowerShell {0}.{1}. Run the script in the appropriate PowerShell version. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/es-ES/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/es-ES/Sophia.psd1 index a99a59d9..c77d14aa 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/es-ES/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/es-ES/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = El script sólo es compatible con Windows de 64 bits. UnsupportedOSBuild = El script es compatible con versión Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 no compila código si el nombre de usuario contiene caracteres no latinos (incluidos los emoji) y está escrito en minúsculas. Por favor, utiliza PowerShell 7. -UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: 19044.4046+. Ejecute Windows Update y vuelva a intentarlo. +UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: {2}+. Ejecute Windows Update y vuelva a intentarlo. UnsupportedLanguageMode = Sesión de PowerShell ejecutada en modo de lenguaje limitado. LoggedInUserNotAdmin = El usuario que inició sesión no tiene derechos de administrador. UnsupportedPowerShell = Estás intentando ejecutar el script a través de PowerShell {0}.{1}. Ejecute el script en la versión apropiada de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/fr-FR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/fr-FR/Sophia.psd1 index c2eee3e7..7cd7db5f 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/fr-FR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/fr-FR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Le script n'est compatible qu'avec Windows 64 bits. UnsupportedOSBuild = Le script supporte les versions Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 ne compile pas le code si le nom d'utilisateur contient des caractères non latins (y compris emoji) et est écrit en minuscules. Veuillez utiliser PowerShell 7. -UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: 19044.4046+. Exécutez Windows Update et réessayez. +UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: {2}+. Exécutez Windows Update et réessayez. UnsupportedLanguageMode = La session PowerShell s'exécute dans un mode de langue limité. LoggedInUserNotAdmin = L'utilisateur connecté n'a pas de droits d'administrateur. UnsupportedPowerShell = Vous essayez d'exécuter le script via PowerShell {0}.{1}. Exécutez le script dans la version appropriée de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/hu-HU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/hu-HU/Sophia.psd1 index 1eca4fd3..313ff930 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/hu-HU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/hu-HU/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = A szkript csak a 64 bites Windows-t támogatja. UnsupportedOSBuild = A szkript támogatja a Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = A PowerShell 5.1 nem fordít kódot, ha a felhasználónév nem latin betűket tartalmaz (beleértve az emojikat is), és kisbetűvel van írva. Kérjük, használja a PowerShell 7-et. -UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: 19044.4046+. Futtassa a Windows Update programot, és próbálja meg újra. +UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: {2}+. Futtassa a Windows Update programot, és próbálja meg újra. UnsupportedLanguageMode = A PowerShell munkamenet korlátozott nyelvi üzemmódban fut. LoggedInUserNotAdmin = A bejelentkezett felhasználó nem rendelkezik admin jogokkal. UnsupportedPowerShell = A PowerShell {0}.{1} segítségével próbálja futtatni a szkriptet. Futtassa a szkriptet a megfelelő PowerShell-verzióban. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/it-IT/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/it-IT/Sophia.psd1 index 62001dc2..a4b265e9 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/it-IT/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/it-IT/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Lo script supporta solo Windows a 64 bit. UnsupportedOSBuild = Lo script supporta Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 non compila il codice se il nome utente contiene caratteri non latini (compresi gli emoji) ed è scritto in minuscolo. Si prega di utilizzare PowerShell 7. -UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: 19044.4046+. Eseguire Windows Update e riprovare. +UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: {2}+. Eseguire Windows Update e riprovare. UnsupportedLanguageMode = La sessione PowerShell è in esecuzione in modalità lingua limitata. LoggedInUserNotAdmin = L'utente in suo non ha i diritti di amministratore. UnsupportedPowerShell = Stai cercando di eseguire lo script tramite PowerShell {0}.{1}. Esegui lo script nella versione di PowerShell appropriata. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pl-PL/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pl-PL/Sophia.psd1 index 7190bc16..efe81f4f 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pl-PL/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pl-PL/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Skrypt obsługuje tylko 64-bitowe systemy Windows. UnsupportedOSBuild = Skrypt obsługuje system Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 nie kompiluje kodu, jeśli nazwa użytkownika zawiera znaki spoza alfabetu łacińskiego (w tym emoji) i jest zapisana małymi literami. Prosimy o używanie PowerShell 7. -UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: 19044.4046+. Uruchom aktualizację systemu Windows i spróbuj ponownie. +UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: {2}+. Uruchom aktualizację systemu Windows i spróbuj ponownie. UnsupportedLanguageMode = Sesja PowerShell działa w trybie ograniczonego języka. LoggedInUserNotAdmin = Zalogowany użytkownik nie posiada uprawnień administratora. UnsupportedPowerShell = Próbujesz uruchomić skrypt przy użyciu PowerShell {0}.{1}. Uruchom skrypt używając odpowiedniej wersji PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pt-BR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pt-BR/Sophia.psd1 index 202acbed..0bc17227 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pt-BR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/pt-BR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = O guião suporta apenas Windows de 64 bits. UnsupportedOSBuild = O script suporta versões Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = O PowerShell 5.1 não compilará o código se o nome de usuário contiver caracteres não latinos (inclusive emoji) e estiver escrito em letras minúsculas. Por favor, use o PowerShell 7. -UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: 19044.4046+. Execute o Windows Update e tente novamente. +UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: {2}+. Execute o Windows Update e tente novamente. UnsupportedLanguageMode = A sessão PowerShell em funcionamento em um modo de linguagem limitada. LoggedInUserNotAdmin = O usuário logado não tem direitos de administrador. UnsupportedPowerShell = Você está tentando executar o script via PowerShell {0}.{1}. Execute o script na versão apropriada do PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/ru-RU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/ru-RU/Sophia.psd1 index b624cd60..f9bf6628 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/ru-RU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/ru-RU/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Скрипт поддерживает только 64-битную версию Windows. UnsupportedOSBuild = Скрипт поддерживает только Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 не компилирует код, если имя пользователя содержит нелатинские символы (включая эмодзи) и написано со строчной буквы. Пожалуйста, используйте PowerShell 7. -UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: 19044.4046+. Запустите обновление Windows и попробуйте заново. +UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: {2}+. Запустите обновление Windows и попробуйте заново. UnsupportedLanguageMode = Сессия PowerShell работает в ограниченном режиме. LoggedInUserNotAdmin = Текущий вошедший пользователь не обладает правами администратора. UnsupportedPowerShell = Вы пытаетесь запустить скрипт в PowerShell {0}.{1}. Запустите скрипт в соответствующей версии PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/tr-TR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/tr-TR/Sophia.psd1 index d2eb92c9..a5204873 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/tr-TR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/tr-TR/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Komut dosyası yalnızca 64 bit Windows'u destekler. UnsupportedOSBuild = Komut dosyası Windows 10 Enterprise LTSC 2021'u destekler. NonLatinUsernameWarning = PowerShell 5.1, kullanıcı adı Latin olmayan karakterler içeriyorsa (emoji dahil) ve küçük harfle yazılmışsa kodu derlemez. Lütfen PowerShell 7 kullanın. -UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: 19044.4046+. Windows Update'i çalıştırın ve tekrar deneyin. +UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: {2}+. Windows Update'i çalıştırın ve tekrar deneyin. UnsupportedLanguageMode = Sınırlı bir dil modunda çalışan PowerShell oturumu. LoggedInUserNotAdmin = Oturum açan kullanıcının yönetici hakları yok. UnsupportedPowerShell = Komut dosyasını PowerShell {0}.{1} aracılığıyla çalıştırmaya çalışıyorsunuz. Komut dosyasını uygun PowerShell sürümünde çalıştırın. 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 5b996b7f..e2be4634 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 @@ -2,7 +2,7 @@ UnsupportedOSBitness = Скрипт підтримує тільки 64-розрядну версію Windows. UnsupportedOSBuild = Скрипт підтримує тільки Windows 10 Enterprise LTSC 2021. NonLatinUsernameWarning = PowerShell 5.1 не компілює код, якщо ім'я користувача містить нелатинські символи (включно з емодзі) і написане з малої літери. Будь ласка, використовуйте PowerShell 7. -UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: 19044.4046+. Запустіть Windows Update і повторіть спробу. +UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: {2}+. Запустіть Windows Update і повторіть спробу. UnsupportedLanguageMode = Сесія PowerShell працює в обмеженому режимі. LoggedInUserNotAdmin = Поточний користувач, що увійшов, не має прав адміністратора. UnsupportedPowerShell = Ви намагаєтеся запустити скрипт в PowerShell {0}.{1}. Запустіть скрипт у відповідній версії PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/zh-CN/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/zh-CN/Sophia.psd1 index 31bfb10d..86d52b02 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/zh-CN/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Localizations/zh-CN/Sophia.psd1 @@ -2,7 +2,7 @@ UnsupportedOSBitness = 该脚本仅支持64位Windows。 UnsupportedOSBuild = 该脚本支持Windows 10 Enterprise LTSC 2021。 NonLatinUsernameWarning = 如果用户名包含非拉丁字符(包括表情符号)且以小写字母书写,PowerShell 5.1 将无法编译代码。请使用 PowerShell 7。 -UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: 19044.4046+。运行Windows Update并再次尝试。 +UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: {2}+。运行Windows Update并再次尝试。 UnsupportedLanguageMode = PowerShell会话在有限的语言模式下运行。 LoggedInUserNotAdmin = 登录的用户没有管理员的权利。 UnsupportedPowerShell = 你想通过PowerShell {0}.{1}运行脚本。在适当的PowerShell版本中运行该脚本。 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 b9c87a74..2240497d 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 @@ -2,8 +2,8 @@ .SYNOPSIS Sophia Script is a PowerShell module for Windows 10 & Windows 11 fine-tuning and automating the routine tasks - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -514,9 +514,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -601,13 +598,53 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } "19044" { - if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt 4046) + # Check whether the current module version is the latest one + try { - # Check whether Windows minor build version is 4046 minimum - # https://learn.microsoft.com/en-us/windows/release-health/release-information#windows-10-current-versions-by-servicing-option + # 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 + { + # 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 + } + } + catch [System.ComponentModel.Win32Exception] + { + $LatestSupportedBuild = 0 + + Write-Warning -Message $Localization.NoInternetConnection + Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue + } + + # We may use Test-Path -Path variable:LatestSupportedBuild + if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt $LatestSupportedBuild) + { + # Check Windows minor build version + # https://support.microsoft.com/en-us/topic/windows-10-update-history-8127c2c6-6edf-4fdf-8b9f-0f7be1ef3562 $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR - Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR) + Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR, $LatestSupportedBuild) Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -664,9 +701,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -796,7 +830,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); { Write-Verbose -Message ($Localization.WindowsComponentBroken -f [WinAPI.GetStrings]::GetIndirectString("@%SystemRoot%\system32\schedsvc.dll,-100")) -Verbose - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -4162,9 +4195,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4288,9 +4318,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -5977,9 +6004,6 @@ function WindowsCapabilities } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6325,9 +6349,6 @@ function IPv6Component } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -9335,9 +9356,6 @@ function InstallVCRedist } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -9396,10 +9414,10 @@ function InstallVCRedist <# .SYNOPSIS - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 .EXAMPLE - InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 + InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 .LINK https://dotnet.microsoft.com/en-us/download/dotnet @@ -9416,7 +9434,7 @@ function InstallDotNetRuntimes Mandatory = $true, ParameterSetName = "Runtimes" )] - [ValidateSet("NET6x86", "NET6x64", "NET7x86", "NET7x64", "NET8x86", "NET8x64")] + [ValidateSet("NET6x64", "NET7x64", "NET8x64")] [string[]] $Runtimes ) @@ -9432,9 +9450,6 @@ function InstallDotNetRuntimes } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } } @@ -9450,50 +9465,6 @@ function InstallDotNetRuntimes { switch ($Runtime) { - NET6x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6 - # .NET Desktop Runtime 6 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x86 --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 - { - # Install .NET Desktop Runtime 6 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/6.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 6 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET6x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -9538,50 +9509,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } } - NET7x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/7 - # .NET Desktop Runtime 7 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.7 --architecture x86 --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 - Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - else - { - # .NET Desktop Runtime 7 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/7.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 7 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET7x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -9625,52 +9552,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - - } - NET8x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/8 - # .NET Desktop Runtime 8 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x86 --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 - { - # .NET Desktop Runtime 8 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 8 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET8x64 { @@ -9714,7 +9595,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } } } @@ -10022,9 +9902,6 @@ function Install-WSL } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -13756,10 +13633,10 @@ function Errors } [PSCustomObject]@{ - $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber + $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber # Extract the localized "File" string from shell32.dll "$([WinAPI.GetStrings]::GetString(4130))" = $ErrorInFile - $Localization.ErrorsMessage = $_.Exception.Message + $Localization.ErrorsMessage = $_.Exception.Message } } | Sort-Object -Property $Localization.ErrorsLine | Format-Table -AutoSize -Wrap | Out-String).Trim() } 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 c36d52ba..62ad5917 100644 --- a/src/Sophia_Script_for_Windows_10_LTSC_2021/Sophia.ps1 +++ b/src/Sophia_Script_for_Windows_10_LTSC_2021/Sophia.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS Default preset file for "Sophia Script for Windows 10 LTSC 2021" - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -70,7 +70,7 @@ param Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2021 v5.18.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 LTSC 2021 v5.18.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-LocalizedData -BindingVariable Global:Localization -BaseDirectory $PSScriptRoot\Localizations -FileName Sophia @@ -886,12 +886,12 @@ ActiveHours -Automatically InstallVCRedist <# - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) - Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 + Установить последнюю версию .NET Desktop Runtime 6, 7, 8 x64 https://dotnet.microsoft.com/en-us/download/dotnet #> -InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 +InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 # Enable proxying only blocked sites from the unified registry of Roskomnadzor. The function is applicable for Russia only # Включить проксирование только заблокированных сайтов из единого реестра Роскомнадзора. Функция применима только для России diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Functions.ps1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Functions.ps1 index 36d6d8f5..d091a907 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Functions.ps1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Functions.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS The TAB completion for functions and their arguments - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -50,7 +50,7 @@ function Sophia Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.1 (PowerShell 7) | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.2 (PowerShell 7) | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-Module -Name $PSScriptRoot\Manifest\Sophia.psd1 -PassThru -Force diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/de-DE/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/de-DE/Sophia.psd1 index 15a2e08d..52c12353 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/de-DE/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/de-DE/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Das Skript unterstützt nur 64-Bit-Windows. UnsupportedOSBuild = Das Skript unterstützt Windows 10 22H2. -UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: 19045.4123+. Führen Sie Windows Update aus und versuchen Sie es erneut. +UpdateWarning = Ihr Windows 10-Build: {0}.{1}. Unterstützter Builds: {2}+. Führen Sie Windows Update aus und versuchen Sie es erneut. UnsupportedLanguageMode = Die PowerShell-Sitzung wird in einem eingeschränkten Sprachmodus ausgeführt. LoggedInUserNotAdmin = Der angemeldete Benutzer hat keine Administratorrechte. UnsupportedPowerShell = Sie versuchen ein Skript über PowerShell {0}.{1} auszuführen. Das Skript in der entsprechenden PowerShell-Version ausführen. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/en-US/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/en-US/Sophia.psd1 index edb6be96..07ecd635 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/en-US/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/en-US/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = The script supports 64-bit Windows only. UnsupportedOSBuild = The script supports Windows 10 22H2. -UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: 19045.4123+. Run Windows Update and try again. +UpdateWarning = Your Windows 10 build: {0}.{1}. Supported builds: {2}+. Run Windows Update and try again. UnsupportedLanguageMode = The PowerShell session in running in a limited language mode. LoggedInUserNotAdmin = The logged-on user doesn't have admin rights. UnsupportedPowerShell = You're trying to run script via PowerShell {0}.{1}. Run the script in the appropriate PowerShell version. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/es-ES/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/es-ES/Sophia.psd1 index 30c31b5d..5465afae 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/es-ES/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/es-ES/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = El script sólo es compatible con Windows de 64 bits. UnsupportedOSBuild = El script es compatible con versión Windows 10 22H2. -UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: 19045.4123+. Ejecute Windows Update y vuelva a intentarlo. +UpdateWarning = Su build de Windows 10: {0}.{1}. Compilaciones compatibles: {2}+. Ejecute Windows Update y vuelva a intentarlo. UnsupportedLanguageMode = Sesión de PowerShell ejecutada en modo de lenguaje limitado. LoggedInUserNotAdmin = El usuario que inició sesión no tiene derechos de administrador. UnsupportedPowerShell = Estás intentando ejecutar el script a través de PowerShell {0}.{1}. Ejecute el script en la versión apropiada de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/fr-FR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/fr-FR/Sophia.psd1 index 7587eb32..3dbb5973 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/fr-FR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/fr-FR/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Le script n'est compatible qu'avec Windows 64 bits. UnsupportedOSBuild = Le script supporte les versions Windows 10 22H2. -UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: 19045.4123+. Exécutez Windows Update et réessayez. +UpdateWarning = Votre version de Windows 10: {0}.{1}. Versions prises en charge: {2}+. Exécutez Windows Update et réessayez. UnsupportedLanguageMode = La session PowerShell s'exécute dans un mode de langue limité. LoggedInUserNotAdmin = L'utilisateur connecté n'a pas de droits d'administrateur. UnsupportedPowerShell = Vous essayez d'exécuter le script via PowerShell {0}.{1}. Exécutez le script dans la version appropriée de PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/hu-HU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/hu-HU/Sophia.psd1 index a924a541..4f18f28a 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/hu-HU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/hu-HU/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = A szkript csak a 64 bites Windows-t támogatja. UnsupportedOSBuild = A szkript támogatja a Windows 10 22H2 verzióját. -UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: 19045.4123+. Futtassa a Windows Update programot, és próbálja meg újra. +UpdateWarning = Az Ön Windows 10 építése: {0}.{1}. Támogatott buildek: {2}+. Futtassa a Windows Update programot, és próbálja meg újra. UnsupportedLanguageMode = A PowerShell munkamenet korlátozott nyelvi üzemmódban fut. LoggedInUserNotAdmin = A bejelentkezett felhasználó nem rendelkezik admin jogokkal. UnsupportedPowerShell = A PowerShell {0}.{1} segítségével próbálja futtatni a szkriptet. Futtassa a szkriptet a megfelelő PowerShell-verzióban. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/it-IT/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/it-IT/Sophia.psd1 index c43c691d..ba556a1b 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/it-IT/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/it-IT/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Lo script supporta solo Windows a 64 bit. UnsupportedOSBuild = Lo script supporta Windows 10 22H2. -UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: 19045.4123+. Eseguire Windows Update e riprovare. +UpdateWarning = La tua build di Windows 10 {0}.{1} non è supportata. Build supportate: {2}+. Eseguire Windows Update e riprovare. UnsupportedLanguageMode = La sessione PowerShell è in esecuzione in modalità lingua limitata. LoggedInUserNotAdmin = L'utente in suo non ha i diritti di amministratore. UnsupportedPowerShell = Stai cercando di eseguire lo script tramite PowerShell {0}.{1}. Esegui lo script nella versione di PowerShell appropriata. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pl-PL/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pl-PL/Sophia.psd1 index cb72bf90..ccb63236 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pl-PL/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pl-PL/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Skrypt obsługuje tylko 64-bitowe systemy Windows. UnsupportedOSBuild = Skrypt obsługuje system Windows 10 22H2. -UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: 19045.4123+. Uruchom aktualizację systemu Windows i spróbuj ponownie. +UpdateWarning = Twoja wersja systemu Windows 10: {0}.{1}. Obsługiwane kompilacje: {2}+. Uruchom aktualizację systemu Windows i spróbuj ponownie. UnsupportedLanguageMode = Sesja PowerShell działa w trybie ograniczonego języka. LoggedInUserNotAdmin = Zalogowany użytkownik nie posiada uprawnień administratora. UnsupportedPowerShell = Próbujesz uruchomić skrypt przy użyciu PowerShell {0}.{1}. Uruchom skrypt używając odpowiedniej wersji PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pt-BR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pt-BR/Sophia.psd1 index 50ff5ae8..9474f2c4 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pt-BR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/pt-BR/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = O guião suporta apenas Windows de 64 bits. UnsupportedOSBuild = O script suporta versões Windows 10 22H2. -UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: 19045.4123+. Execute o Windows Update e tente novamente. +UpdateWarning = La tua build di Windows 10: {0}.{1}. Build suportadas: {2}+. Execute o Windows Update e tente novamente. UnsupportedLanguageMode = A sessão PowerShell em funcionamento em um modo de linguagem limitada. LoggedInUserNotAdmin = O usuário logado não tem direitos de administrador. UnsupportedPowerShell = Você está tentando executar o script via PowerShell {0}.{1}. Execute o script na versão apropriada do PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/ru-RU/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/ru-RU/Sophia.psd1 index c7150813..dc8c6f3a 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/ru-RU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/ru-RU/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Скрипт поддерживает только 64-битную версию Windows. UnsupportedOSBuild = Скрипт поддерживает Windows 10 22H2. -UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: 19045.4123+. Запустите обновление Windows и попробуйте заново. +UpdateWarning = Ваш билд Windows 10: {0}.{1}. Поддерживаемые сборки: {2}+. Запустите обновление Windows и попробуйте заново. UnsupportedLanguageMode = Сессия PowerShell работает в ограниченном режиме. LoggedInUserNotAdmin = Текущий вошедший пользователь не обладает правами администратора. UnsupportedPowerShell = Вы пытаетесь запустить скрипт в PowerShell {0}.{1}. Запустите скрипт в соответствующей версии PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/tr-TR/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/tr-TR/Sophia.psd1 index b81f5721..ee691332 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/tr-TR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/tr-TR/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Komut dosyası yalnızca 64 bit Windows'u destekler. UnsupportedOSBuild = Komut dosyası Windows 10 22H2'u destekler. -UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: 19045.4123+. Windows Update'i çalıştırın ve tekrar deneyin. +UpdateWarning = Windows 10 yapınız: {0}.{1}. Desteklenen yapılar: {2}+. Windows Update'i çalıştırın ve tekrar deneyin. UnsupportedLanguageMode = Sınırlı bir dil modunda çalışan PowerShell oturumu. LoggedInUserNotAdmin = Oturum açan kullanıcının yönetici hakları yok. UnsupportedPowerShell = Komut dosyasını PowerShell {0}.{1} aracılığıyla çalıştırmaya çalışıyorsunuz. Komut dosyasını uygun PowerShell sürümünde çalıştırın. 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 c9029851..6bbba916 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 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = Скрипт підтримує тільки 64-розрядну версію Windows. UnsupportedOSBuild = Скрипт підтримує Windows 10 22H2. -UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: 19045.4123+. Запустіть Windows Update і повторіть спробу. +UpdateWarning = Ваш білд Windows 10: {0}.{1}. Підтримувані збірки: {2}+. Запустіть Windows Update і повторіть спробу. UnsupportedLanguageMode = Сесія PowerShell працює в обмеженому режимі. LoggedInUserNotAdmin = Поточний користувач, що увійшов, не має прав адміністратора. UnsupportedPowerShell = Ви намагаєтеся запустити скрипт в PowerShell {0}.{1}. Запустіть скрипт у відповідній версії PowerShell. diff --git a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/zh-CN/Sophia.psd1 b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/zh-CN/Sophia.psd1 index ad94f622..9f972ac2 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/zh-CN/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Localizations/zh-CN/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBitness = 该脚本仅支持64位Windows。 UnsupportedOSBuild = 该脚本支持Windows 10版本22H2和更高版本。 -UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: 19045.4123+。运行Windows Update并再次尝试。 +UpdateWarning = 您的Windows 10构建: {0}.{1}。支持的构建: {2}+。运行Windows Update并再次尝试。 UnsupportedLanguageMode = PowerShell会话在有限的语言模式下运行。 LoggedInUserNotAdmin = 登录的用户没有管理员的权利。 UnsupportedPowerShell = 你想通过PowerShell {0}.{1}运行脚本。在适当的PowerShell版本中运行该脚本。 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 0224708e..fe94f43f 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 @@ -2,8 +2,8 @@ .SYNOPSIS Sophia Script is a PowerShell module for Windows 10 & Windows 11 fine-tuning and automating the routine tasks - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -151,89 +151,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } } - # Check whether Microsoft Edge as being a system component was removed by harmful tweakers - if (-not (Test-Path -Path "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe")) - { - Write-Information -MessageData "" -InformationAction Continue - # Extract the localized "Please wait..." string from shell32.dll - Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose - - 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") - { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - - return - } - - try - { - # Download Microsoft Edge Stable x64 - # https://edgeupdates.microsoft.com/api/products?view=enterprise - $Parameters = @{ - Uri = "https://edgeupdates.microsoft.com/api/products?view=enterprise" - UseBasicParsing = $true - Verbose = $true - } - $EdgeLinks = Invoke-RestMethod @Parameters - $EdgeURL = (($EdgeLinks | Where-Object -FilterScript {$_.Product -eq "Stable"}).Releases | Where-Object -FilterScript {($_.Platform -eq "Windows") -and ($_.Architecture -eq "x64")} | Select-Object -Index 1).Artifacts.Location - - $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" - $Parameters = @{ - Uri = $EdgeURL - OutFile = "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" - UseBasicParsing = $true - Verbose = $true - } - Invoke-Webrequest @Parameters - - # Install Microsoft Edge Stable x64 - Start-Process -FilePath "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -ArgumentList "/passive /norestart DONOTCREATEDESKTOPSHORTCUT=TRUE" -Wait - - Remove-Item -Path "$env:Public\Desktop\Microsoft Edge.lnk" -Force -ErrorAction Ignore - - Start-Sleep -Seconds 5 - - try - { - & "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe" --no-first-run --noerrdialogs --no-default-browser-check --start-maximized - } - catch - { - Write-Warning -Message ($Localization.WindowsComponentBroken -f "Microsoft Edge") - - Start-Process -FilePath "https://t.me/sophia_chat" - Start-Process -FilePath "https://discord.gg/sSryhaEv79" - - exit - } - - Stop-Process -Name msedge -Force -ErrorAction Ignore - - Remove-Item -Path "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -Force - } - catch [System.Net.WebException] - { - Write-Warning -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") - Write-Error -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") -ErrorAction SilentlyContinue - } - } - catch [System.ComponentModel.Win32Exception] - { - Write-Warning -Message $Localization.NoInternetConnection - Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue - } - } - # Detect Windows bitness if (-not [System.Environment]::Is64BitOperatingSystem) { @@ -612,9 +529,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -696,13 +610,53 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } "19045" { - if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt 4123) + # Check whether the current module version is the latest one + try { - # Check whether Windows minor build version is 4123 minimum - # https://learn.microsoft.com/en-us/windows/release-health/release-information#windows-10-current-versions-by-servicing-option + # 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 + { + # 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 + } + } + catch [System.ComponentModel.Win32Exception] + { + $LatestSupportedBuild = 0 + + Write-Warning -Message $Localization.NoInternetConnection + Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue + } + + # We may use Test-Path -Path variable:LatestSupportedBuild + if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt $LatestSupportedBuild) + { + # Check Windows minor build version + # https://support.microsoft.com/en-us/topic/windows-10-update-history-8127c2c6-6edf-4fdf-8b9f-0f7be1ef3562 $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR - Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR) + Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR, $LatestSupportedBuild) Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -762,9 +716,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -894,7 +845,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); { Write-Verbose -Message ($Localization.WindowsComponentBroken -f [WinAPI.GetStrings]::GetIndirectString("@%SystemRoot%\system32\schedsvc.dll,-100")) -Verbose - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -4838,9 +4788,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4964,9 +4911,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -5477,9 +5421,6 @@ public static bool MarkFileDelete (string sourcefile) } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6955,9 +6896,6 @@ function WindowsCapabilities } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -7303,9 +7241,6 @@ function IPv6Component } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -10470,9 +10405,6 @@ function InstallVCRedist } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -10531,10 +10463,10 @@ function InstallVCRedist <# .SYNOPSIS - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 .EXAMPLE - InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 + InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 .LINK https://dotnet.microsoft.com/en-us/download/dotnet @@ -10551,7 +10483,7 @@ function InstallDotNetRuntimes Mandatory = $true, ParameterSetName = "Runtimes" )] - [ValidateSet("NET6x86", "NET6x64", "NET7x86", "NET7x64", "NET8x86", "NET8x64")] + [ValidateSet("NET6x64", "NET7x64", "NET8x64")] [string[]] $Runtimes ) @@ -10567,9 +10499,6 @@ function InstallDotNetRuntimes } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } } @@ -10585,50 +10514,6 @@ function InstallDotNetRuntimes { switch ($Runtime) { - NET6x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6 - # .NET Desktop Runtime 6 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x86 --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 - { - # Install .NET Desktop Runtime 6 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/6.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 6 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET6x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10673,50 +10558,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } } - NET7x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/7 - # .NET Desktop Runtime 7 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.7 --architecture x86 --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 - Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - else - { - # .NET Desktop Runtime 7 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/7.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 7 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET7x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10760,52 +10601,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - - } - NET8x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/8 - # .NET Desktop Runtime 8 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x86 --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 - { - # .NET Desktop Runtime 8 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 8 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET8x64 { @@ -10849,7 +10644,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } } } @@ -11157,9 +10951,6 @@ function Install-WSL } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -16295,10 +16086,10 @@ function Errors } [PSCustomObject]@{ - $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber + $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber # Extract the localized "File" string from shell32.dll "$([WinAPI.GetStrings]::GetString(4130))" = $ErrorInFile - $Localization.ErrorsMessage = $_.Exception.Message + $Localization.ErrorsMessage = $_.Exception.Message } } | Sort-Object -Property $Localization.ErrorsLine | Format-Table -AutoSize -Wrap | Out-String).Trim() } 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 7eef9dc1..79c00939 100644 --- a/src/Sophia_Script_for_Windows_10_PowerShell_7/Sophia.ps1 +++ b/src/Sophia_Script_for_Windows_10_PowerShell_7/Sophia.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS Default preset file for "Sophia Script for Windows 10 (PowerShell 7)" - Version: v5.18.1 - Date: 03.03.2024 + Version: v5.18.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -70,7 +70,7 @@ param Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.1 (PowerShell 7) | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 10 v5.18.2 (PowerShell 7) | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" # PowerShell 7 doesn't load en-us localization automatically if there is no localization folder in user's language which is determined by $PSUICulture # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/import-localizeddata?view=powershell-7.3 @@ -1016,12 +1016,12 @@ UninstallPCHealthCheck InstallVCRedist <# - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) - Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 + Установить последнюю версию .NET Desktop Runtime 6, 7, 8 x64 https://dotnet.microsoft.com/en-us/download/dotnet #> -InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 +InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 # Enable proxying only blocked sites from the unified registry of Roskomnadzor. The function is applicable for Russia only # Включить проксирование только заблокированных сайтов из единого реестра Роскомнадзора. Функция применима только для России diff --git a/src/Sophia_Script_for_Windows_11/Functions.ps1 b/src/Sophia_Script_for_Windows_11/Functions.ps1 index 600c44c3..0e24f5a2 100644 --- a/src/Sophia_Script_for_Windows_11/Functions.ps1 +++ b/src/Sophia_Script_for_Windows_11/Functions.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS The TAB completion for functions and their arguments - Version: v6.6.1 - Date: 03.03.2024 + Version: v6.6.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -50,7 +50,7 @@ function Sophia Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-Module -Name $PSScriptRoot\Manifest\Sophia.psd1 -PassThru -Force diff --git a/src/Sophia_Script_for_Windows_11/Localizations/de-DE/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/de-DE/Sophia.psd1 index f37c98de..51e91695 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/de-DE/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/de-DE/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Das Skript unterstützt Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 kompiliert keinen Code, wenn der Benutzername nicht-lateinische Zeichen (einschließlich Emoji) enthält und in Kleinbuchstaben geschrieben ist. Bitte verwenden Sie PowerShell 7. -UpdateWarning = Ihr Windows 11-Build: {0}.{1}. Unterstützter Builds: 22631.3235+. Führen Sie Windows Update aus und versuchen Sie es erneut. +UpdateWarning = Ihr Windows 11-Build: {0}.{1}. Unterstützter Builds: {2}+. Führen Sie Windows Update aus und versuchen Sie es erneut. UnsupportedLanguageMode = Die PowerShell-Sitzung wird in einem eingeschränkten Sprachmodus ausgeführt. LoggedInUserNotAdmin = Der angemeldete Benutzer hat keine Administratorrechte. UnsupportedPowerShell = Sie versuchen ein Skript über PowerShell {0}.{1} auszuführen. Das Skript in der entsprechenden PowerShell-Version ausführen. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/en-US/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/en-US/Sophia.psd1 index bf5874aa..fa4695b0 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/en-US/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/en-US/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = The script supports Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 does not compile code if the username contains non-Latin characters (including emoji) and is written in lowercase. Please, use PowerShell 7. -UpdateWarning = Your Windows 11 build: {0}.{1}. Supported builds: 22631.3235+. Run Windows Update and try again. +UpdateWarning = Your Windows 11 build: {0}.{1}. Supported builds: {2}+. Run Windows Update and try again. UnsupportedLanguageMode = The PowerShell session in running in a limited language mode. LoggedInUserNotAdmin = The logged-on user doesn't have admin rights. UnsupportedPowerShell = You're trying to run script via PowerShell {0}.{1}. Run the script in the appropriate PowerShell version. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/es-ES/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/es-ES/Sophia.psd1 index 4074cdd0..ce977cd2 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/es-ES/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/es-ES/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = El script es compatible con Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 no compila código si el nombre de usuario contiene caracteres no latinos (incluidos los emoji) y está escrito en minúsculas. Por favor, utiliza PowerShell 7. -UpdateWarning = Su build de Windows 11: {0}.{1}. Compilaciones compatibles: 22631.3235+. Ejecute Windows Update y vuelva a intentarlo. +UpdateWarning = Su build de Windows 11: {0}.{1}. Compilaciones compatibles: {2}+. Ejecute Windows Update y vuelva a intentarlo. UnsupportedLanguageMode = Sesión de PowerShell ejecutada en modo de lenguaje limitado. LoggedInUserNotAdmin = El usuario que inició sesión no tiene derechos de administrador. UnsupportedPowerShell = Estás intentando ejecutar el script a través de PowerShell {0}.{1}. Ejecute el script en la versión apropiada de PowerShell. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/fr-FR/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/fr-FR/Sophia.psd1 index a2d187c8..3c6e9891 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/fr-FR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/fr-FR/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Le script prend en charge Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 ne compile pas le code si le nom d'utilisateur contient des caractères non latins (y compris emoji) et est écrit en minuscules. Veuillez utiliser PowerShell 7. -UpdateWarning = Votre version de Windows 11 : {0}.{1}. Versions prises en charge: 22631.3235+. Exécutez Windows Update et réessayez. +UpdateWarning = Votre version de Windows 11 : {0}.{1}. Versions prises en charge: {2}+. Exécutez Windows Update et réessayez. UnsupportedLanguageMode = La session PowerShell s'exécute dans un mode de langue limité. LoggedInUserNotAdmin = L'utilisateur connecté n'a pas de droits d'administrateur. UnsupportedPowerShell = Vous essayez d'exécuter le script via PowerShell {0}.{1}. Exécutez le script dans la version appropriée de PowerShell. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/hu-HU/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/hu-HU/Sophia.psd1 index 44f6f8a1..c43eb290 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/hu-HU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/hu-HU/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = A szkript támogatja a Windows 11 23H2+ rendszert. NonLatinUsernameWarning = A PowerShell 5.1 nem fordít kódot, ha a felhasználónév nem latin betűket tartalmaz (beleértve az emojikat is), és kisbetűvel van írva. Kérjük, használja a PowerShell 7-et. -UpdateWarning = Az Ön Windows 11 építése: {0}.{1}. Támogatott buildek: 22631.3235+. Futtassa a Windows Update programot, és próbálja meg újra. +UpdateWarning = Az Ön Windows 11 építése: {0}.{1}. Támogatott buildek: {2}+. Futtassa a Windows Update programot, és próbálja meg újra. UnsupportedLanguageMode = A PowerShell munkamenet korlátozott nyelvi üzemmódban fut. LoggedInUserNotAdmin = A bejelentkezett felhasználó nem rendelkezik admin jogokkal. UnsupportedPowerShell = A PowerShell {0}.{1} segítségével próbálja futtatni a szkriptet. Futtassa a szkriptet a megfelelő PowerShell-verzióban. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/it-IT/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/it-IT/Sophia.psd1 index bd7c839d..5a0c45db 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/it-IT/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/it-IT/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Lo script supporta Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 non compila il codice se il nome utente contiene caratteri non latini (compresi gli emoji) ed è scritto in minuscolo. Si prega di utilizzare PowerShell 7. -UpdateWarning = La tua build di Windows 11 {0}.{1} non è supportata. Build supportate: 22631.3235+. Eseguire Windows Update e riprovare. +UpdateWarning = La tua build di Windows 11 {0}.{1} non è supportata. Build supportate: {2}+. Eseguire Windows Update e riprovare. UnsupportedLanguageMode = La sessione PowerShell è in esecuzione in modalità lingua limitata. LoggedInUserNotAdmin = L'utente in suo non ha i diritti di amministratore. UnsupportedPowerShell = Stai cercando di eseguire lo script tramite PowerShell {0}.{1}. Esegui lo script nella versione di PowerShell appropriata. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/pl-PL/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/pl-PL/Sophia.psd1 index 4ea317f8..5918410c 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/pl-PL/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/pl-PL/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Skrypt obsługuje system Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 nie kompiluje kodu, jeśli nazwa użytkownika zawiera znaki spoza alfabetu łacińskiego (w tym emoji) i jest zapisana małymi literami. Prosimy o używanie PowerShell 7. -UpdateWarning = Twoja wersja systemu Windows 11: {0}.{1}. Obsługiwane kompilacje: 22631.3235+. Uruchom aktualizację systemu Windows i spróbuj ponownie. +UpdateWarning = Twoja wersja systemu Windows 11: {0}.{1}. Obsługiwane kompilacje: {2}+. Uruchom aktualizację systemu Windows i spróbuj ponownie. UnsupportedLanguageMode = Sesja PowerShell działa w trybie ograniczonego języka. LoggedInUserNotAdmin = Zalogowany użytkownik nie posiada uprawnień administratora. UnsupportedPowerShell = Próbujesz uruchomić skrypt przy użyciu PowerShell {0}.{1}. Uruchom skrypt używając odpowiedniej wersji PowerShell. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/pt-BR/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/pt-BR/Sophia.psd1 index 4f03e21f..f75fbde2 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/pt-BR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/pt-BR/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = O script suporta Windows 11 23H2+. NonLatinUsernameWarning = O PowerShell 5.1 não compilará o código se o nome de usuário contiver caracteres não latinos (inclusive emoji) e estiver escrito em letras minúsculas. Por favor, use o PowerShell 7. -UpdateWarning = La tua build di Windows 11: {0}.{1}. Build suportadas: 22631.3235+. Execute o Windows Update e tente novamente. +UpdateWarning = La tua build di Windows 11: {0}.{1}. Build suportadas: {2}+. Execute o Windows Update e tente novamente. UnsupportedLanguageMode = A sessão PowerShell em funcionamento em um modo de linguagem limitada. LoggedInUserNotAdmin = O usuário logado não tem direitos de administrador. UnsupportedPowerShell = Você está tentando executar o script via PowerShell {0}.{1}. Execute o script na versão apropriada do PowerShell. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/ru-RU/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/ru-RU/Sophia.psd1 index 80939e2d..96942f6f 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/ru-RU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/ru-RU/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Скрипт поддерживает Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 не компилирует код, если имя пользователя содержит нелатинские символы (включая эмодзи) и написано со строчной буквы. Пожалуйста, используйте PowerShell 7. -UpdateWarning = Ваш билд Windows 11: {0}.{1}. Поддерживаемые сборки: 22631.3235+. Запустите обновление Windows и попробуйте заново. +UpdateWarning = Ваш билд Windows 11: {0}.{1}. Поддерживаемые сборки: {2}+. Запустите обновление Windows и попробуйте заново. UnsupportedLanguageMode = Сессия PowerShell работает в ограниченном режиме. LoggedInUserNotAdmin = Текущий вошедший пользователь не обладает правами администратора. UnsupportedPowerShell = Вы пытаетесь запустить скрипт в PowerShell {0}.{1}. Запустите скрипт в соответствующей версии PowerShell. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/tr-TR/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/tr-TR/Sophia.psd1 index 0eab146c..4ae098be 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/tr-TR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/tr-TR/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Komut dosyası Windows 11 23H2+'yı destekler. NonLatinUsernameWarning = PowerShell 5.1, kullanıcı adı Latin olmayan karakterler içeriyorsa (emoji dahil) ve küçük harfle yazılmışsa kodu derlemez. Lütfen PowerShell 7 kullanın. -UpdateWarning = Windows 11 yapınız: {0}.{1}. Desteklenen yapılar: 22631.3235+. Windows Update'i çalıştırın ve tekrar deneyin. +UpdateWarning = Windows 11 yapınız: {0}.{1}. Desteklenen yapılar: {2}+. Windows Update'i çalıştırın ve tekrar deneyin. UnsupportedLanguageMode = Sınırlı bir dil modunda çalışan PowerShell oturumu. LoggedInUserNotAdmin = Oturum açan kullanıcının yönetici hakları yok. UnsupportedPowerShell = Komut dosyasını PowerShell {0}.{1} aracılığıyla çalıştırmaya çalışıyorsunuz. Komut dosyasını uygun PowerShell sürümünde çalıştırın. 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 cc0a9f1c..3987a49b 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 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Скрипт підтримує Windows 11 23H2+. NonLatinUsernameWarning = PowerShell 5.1 не компілює код, якщо ім'я користувача містить нелатинські символи (включно з емодзі) і написане з малої літери. Будь ласка, використовуйте PowerShell 7. -UpdateWarning = Ваш білд Windows 11: {0}.{1}. Підтримувані збірки: 22631.3235+. Запустіть Windows Update і повторіть спробу. +UpdateWarning = Ваш білд Windows 11: {0}.{1}. Підтримувані збірки: {2}+. Запустіть Windows Update і повторіть спробу. UnsupportedLanguageMode = Сесія PowerShell працює в обмеженому режимі. LoggedInUserNotAdmin = Поточний користувач, що увійшов, не має прав адміністратора. UnsupportedPowerShell = Ви намагаєтеся запустити скрипт в PowerShell {0}.{1}. Запустіть скрипт у відповідній версії PowerShell. diff --git a/src/Sophia_Script_for_Windows_11/Localizations/zh-CN/Sophia.psd1 b/src/Sophia_Script_for_Windows_11/Localizations/zh-CN/Sophia.psd1 index 0b4d3ff2..4420ccba 100644 --- a/src/Sophia_Script_for_Windows_11/Localizations/zh-CN/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11/Localizations/zh-CN/Sophia.psd1 @@ -1,7 +1,7 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = 脚本支持Windows 11 23H2+。 NonLatinUsernameWarning = 如果用户名包含非拉丁字符(包括表情符号)且以小写字母书写,PowerShell 5.1 将无法编译代码。请使用 PowerShell 7。 -UpdateWarning = 您的Windows 11构建: {0}.{1}。支持的构建: 22631.3235+。运行Windows Update并再次尝试。 +UpdateWarning = 您的Windows 11构建: {0}.{1}。支持的构建: {2}+。运行Windows Update并再次尝试。 UnsupportedLanguageMode = PowerShell会话在有限的语言模式下运行。 LoggedInUserNotAdmin = 登录的用户没有管理员的权利。 UnsupportedPowerShell = 你想通过PowerShell {0}.{1}运行脚本。在适当的PowerShell版本中运行该脚本。 diff --git a/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1 b/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1 index 521d85f7..5de86b83 100644 --- a/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1 +++ b/src/Sophia_Script_for_Windows_11/Module/Sophia.psm1 @@ -2,8 +2,8 @@ .SYNOPSIS Sophia Script is a PowerShell module for Windows 10 & Windows 11 fine-tuning and automating the routine tasks - Version: v6.6.1 - Date: 03.03.2024 + Version: v6.6.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -171,89 +171,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } } - # Check whether Microsoft Edge as being a system component was removed by harmful tweakers - if (-not (Test-Path -Path "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe")) - { - Write-Information -MessageData "" -InformationAction Continue - # Extract the localized "Please wait..." string from shell32.dll - Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose - - 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") - { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - - return - } - - try - { - # Download Microsoft Edge Stable x64 - # https://edgeupdates.microsoft.com/api/products?view=enterprise - $Parameters = @{ - Uri = "https://edgeupdates.microsoft.com/api/products?view=enterprise" - UseBasicParsing = $true - Verbose = $true - } - $EdgeLinks = Invoke-RestMethod @Parameters - $EdgeURL = (($EdgeLinks | Where-Object -FilterScript {$_.Product -eq "Stable"}).Releases | Where-Object -FilterScript {($_.Platform -eq "Windows") -and ($_.Architecture -eq "x64")} | Select-Object -Index 1).Artifacts.Location - - $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" - $Parameters = @{ - Uri = $EdgeURL - OutFile = "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" - UseBasicParsing = $true - Verbose = $true - } - Invoke-Webrequest @Parameters - - # Install Microsoft Edge Stable x64 - Start-Process -FilePath "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -ArgumentList "/passive /norestart DONOTCREATEDESKTOPSHORTCUT=TRUE" -Wait - - Remove-Item -Path "$env:Public\Desktop\Microsoft Edge.lnk" -Force -ErrorAction Ignore - - Start-Sleep -Seconds 5 - - try - { - & "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe" --no-first-run --noerrdialogs --no-default-browser-check --start-maximized - } - catch - { - Write-Warning -Message ($Localization.WindowsComponentBroken -f "Microsoft Edge") - - Start-Process -FilePath "https://t.me/sophia_chat" - Start-Process -FilePath "https://discord.gg/sSryhaEv79" - - exit - } - - Stop-Process -Name msedge -Force -ErrorAction Ignore - - Remove-Item -Path "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -Force - } - catch [System.Net.WebException] - { - Write-Warning -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") - Write-Error -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") -ErrorAction SilentlyContinue - } - } - catch [System.ComponentModel.Win32Exception] - { - Write-Warning -Message $Localization.NoInternetConnection - Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue - } - } - # Check the language mode if ($ExecutionContext.SessionState.LanguageMode -ne "FullLanguage") { @@ -607,9 +524,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -686,31 +600,68 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } "22631" { - if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt 3235) + # Check whether the current module version is the latest one + try { - # Check whether Windows minor build version is 3235 minimum - # https://learn.microsoft.com/en-us/windows/release-health/windows11-release-information#windows-11-current-versions - $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild - $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR - Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR) + # 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 + } - Start-Process -FilePath "https://t.me/sophia_chat" - Start-Process -FilePath "https://discord.gg/sSryhaEv79" - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows#system-requirements" + 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 - # Receive updates for other Microsoft products when you update Windows - (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "") + if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt $LatestSupportedBuild) + { + # Check Windows minor build version + # https://support.microsoft.com/en-us/topic/windows-11-version-23h2-update-history-59875222-b990-4bd9-932f-91a5954de434 + $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild + $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR + Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR, $LatestSupportedBuild) - # Check for UWP apps updates - Get-CimInstance -Namespace root/CIMV2/mdm/dmmap -ClassName MDM_EnterpriseModernAppManagement_AppManagement01 | Invoke-CimMethod -MethodName UpdateScanMethod + Start-Process -FilePath "https://t.me/sophia_chat" + Start-Process -FilePath "https://discord.gg/sSryhaEv79" + Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows#system-requirements" - # Check for updates - Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan + # Receive updates for other Microsoft products when you update Windows + (New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "") - # Open the "Windows Update" page - Start-Process -FilePath "ms-settings:windowsupdate" + # Check for UWP apps updates + Get-CimInstance -Namespace root/CIMV2/mdm/dmmap -ClassName MDM_EnterpriseModernAppManagement_AppManagement01 | Invoke-CimMethod -MethodName UpdateScanMethod - exit + # Check for updates + Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan + + # Open the "Windows Update" page + Start-Process -FilePath "ms-settings:windowsupdate" + + 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 + } + } + catch [System.ComponentModel.Win32Exception] + { + Write-Warning -Message $Localization.NoInternetConnection + Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue } } } @@ -752,9 +703,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -884,7 +832,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); { Write-Verbose -Message ($Localization.WindowsComponentBroken -f [WinAPI.GetStrings]::GetIndirectString("@%SystemRoot%\system32\schedsvc.dll,-100")) -Verbose - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -4244,9 +4191,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4370,9 +4314,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4883,9 +4824,6 @@ public static bool MarkFileDelete (string sourcefile) } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6358,9 +6296,6 @@ function WindowsCapabilities } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6910,9 +6845,6 @@ function IPv6Component } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -9902,9 +9834,6 @@ function InstallVCRedist } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -9963,10 +9892,10 @@ function InstallVCRedist <# .SYNOPSIS - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 .EXAMPLE - InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 + InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 .LINK https://dotnet.microsoft.com/en-us/download/dotnet @@ -9983,7 +9912,7 @@ function InstallDotNetRuntimes Mandatory = $true, ParameterSetName = "Runtimes" )] - [ValidateSet("NET6x86", "NET6x64", "NET7x86", "NET7x64", "NET8x86", "NET8x64")] + [ValidateSet("NET6x64", "NET7x64", "NET8x64")] [string[]] $Runtimes ) @@ -9999,9 +9928,6 @@ function InstallDotNetRuntimes } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } } @@ -10017,50 +9943,6 @@ function InstallDotNetRuntimes { switch ($Runtime) { - NET6x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6 - # .NET Desktop Runtime 6 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x86 --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 - { - # Install .NET Desktop Runtime 6 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/6.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 6 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET6x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10105,50 +9987,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } } - NET7x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/7 - # .NET Desktop Runtime 7 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.7 --architecture x86 --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 - Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - else - { - # .NET Desktop Runtime 7 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/7.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 7 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET7x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10193,51 +10031,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } - NET8x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/8 - # .NET Desktop Runtime 8 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x86 --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 - { - # .NET Desktop Runtime 8 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 8 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET8x64 { @@ -10281,7 +10074,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } } } @@ -10402,9 +10194,6 @@ function Install-WSA } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -10673,9 +10462,6 @@ function Install-WSL } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -15454,10 +15240,10 @@ function Errors } [PSCustomObject]@{ - $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber + $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber # Extract the localized "File" string from shell32.dll "$([WinAPI.GetStrings]::GetString(4130))" = $ErrorInFile - $Localization.ErrorsMessage = $_.Exception.Message + $Localization.ErrorsMessage = $_.Exception.Message } } | Sort-Object -Property $Localization.ErrorsLine | Format-Table -AutoSize -Wrap | Out-String).Trim() } diff --git a/src/Sophia_Script_for_Windows_11/Sophia.ps1 b/src/Sophia_Script_for_Windows_11/Sophia.ps1 index e57021b9..420f8416 100644 --- a/src/Sophia_Script_for_Windows_11/Sophia.ps1 +++ b/src/Sophia_Script_for_Windows_11/Sophia.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS Default preset file for "Sophia Script for Windows 11" - Version: v6.6.1 - Date: 03.03.2024 + Version: v6.6.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -69,7 +69,7 @@ param Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-LocalizedData -BindingVariable Global:Localization -BaseDirectory $PSScriptRoot\Localizations -FileName Sophia @@ -979,12 +979,12 @@ DefaultTerminalApp -WindowsTerminal InstallVCRedist <# - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) - Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 + Установить последнюю версию .NET Desktop Runtime 6, 7, 8 x64 https://dotnet.microsoft.com/en-us/download/dotnet #> -InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 +InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 # Enable proxying only blocked sites from the unified registry of Roskomnadzor. The function is applicable for Russia only # Включить проксирование только заблокированных сайтов из единого реестра Роскомнадзора. Функция применима только для России diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Functions.ps1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Functions.ps1 index 223792f7..60b62a1c 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Functions.ps1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Functions.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS The TAB completion for functions and their arguments - Version: v6.6.1 - Date: 03.03.2024 + Version: v6.6.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -50,7 +50,7 @@ function Sophia Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.1 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.2 | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore Import-Module -Name $PSScriptRoot\Manifest\Sophia.psd1 -PassThru -Force diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/de-DE/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/de-DE/Sophia.psd1 index 4306084e..8d94e82c 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/de-DE/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/de-DE/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Das Skript unterstützt Windows 11 23H2+. -UpdateWarning = Ihr Windows 11-Build: {0}.{1}. Unterstützter Builds: 22631.3235+. Führen Sie Windows Update aus und versuchen Sie es erneut. +UpdateWarning = Ihr Windows 11-Build: {0}.{1}. Unterstützter Builds: {2}+. Führen Sie Windows Update aus und versuchen Sie es erneut. UnsupportedLanguageMode = Die PowerShell-Sitzung wird in einem eingeschränkten Sprachmodus ausgeführt. LoggedInUserNotAdmin = Der angemeldete Benutzer hat keine Administratorrechte. UnsupportedPowerShell = Sie versuchen ein Skript über PowerShell {0}.{1} auszuführen. Das Skript in der entsprechenden PowerShell-Version ausführen. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/en-US/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/en-US/Sophia.psd1 index 8182af81..0823caca 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/en-US/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/en-US/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = The script supports Windows 11 23H2+. -UpdateWarning = Your Windows 11 build: {0}.{1}. Supported builds: 22631.3235+. Run Windows Update and try again. +UpdateWarning = Your Windows 11 build: {0}.{1}. Supported builds: {2}+. Run Windows Update and try again. UnsupportedLanguageMode = The PowerShell session in running in a limited language mode. LoggedInUserNotAdmin = The logged-on user doesn't have admin rights. UnsupportedPowerShell = You're trying to run script via PowerShell {0}.{1}. Run the script in the appropriate PowerShell version. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/es-ES/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/es-ES/Sophia.psd1 index d47b0736..d9cfaee4 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/es-ES/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/es-ES/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = El script es compatible con Windows 11 23H2+. -UpdateWarning = Su build de Windows 11: {0}.{1}. Compilaciones compatibles: 22631.3235+. Ejecute Windows Update y vuelva a intentarlo. +UpdateWarning = Su build de Windows 11: {0}.{1}. Compilaciones compatibles: {2}+. Ejecute Windows Update y vuelva a intentarlo. UnsupportedLanguageMode = Sesión de PowerShell ejecutada en modo de lenguaje limitado. LoggedInUserNotAdmin = El usuario que inició sesión no tiene derechos de administrador. UnsupportedPowerShell = Estás intentando ejecutar el script a través de PowerShell {0}.{1}. Ejecute el script en la versión apropiada de PowerShell. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/fr-FR/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/fr-FR/Sophia.psd1 index 0549367c..5dc0d7bb 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/fr-FR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/fr-FR/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Le script prend en charge Windows 11 23H2+. -UpdateWarning = Votre version de Windows 11 : {0}.{1}. Versions prises en charge: 22631.3235+. Exécutez Windows Update et réessayez. +UpdateWarning = Votre version de Windows 11 : {0}.{1}. Versions prises en charge: {2}+. Exécutez Windows Update et réessayez. UnsupportedLanguageMode = La session PowerShell s'exécute dans un mode de langue limité. LoggedInUserNotAdmin = L'utilisateur connecté n'a pas de droits d'administrateur. UnsupportedPowerShell = Vous essayez d'exécuter le script via PowerShell {0}.{1}. Exécutez le script dans la version appropriée de PowerShell. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/hu-HU/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/hu-HU/Sophia.psd1 index d99b7157..19330030 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/hu-HU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/hu-HU/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = A szkript támogatja a Windows 11 23H2+ rendszert. -UpdateWarning = Az Ön Windows 11 építése: {0}.{1}. Támogatott buildek: 22631.3235+. Futtassa a Windows Update programot, és próbálja meg újra. +UpdateWarning = Az Ön Windows 11 építése: {0}.{1}. Támogatott buildek: {2}+. Futtassa a Windows Update programot, és próbálja meg újra. UnsupportedLanguageMode = A PowerShell munkamenet korlátozott nyelvi üzemmódban fut. LoggedInUserNotAdmin = A bejelentkezett felhasználó nem rendelkezik admin jogokkal. UnsupportedPowerShell = A PowerShell {0}.{1} segítségével próbálja futtatni a szkriptet. Futtassa a szkriptet a megfelelő PowerShell-verzióban. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/it-IT/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/it-IT/Sophia.psd1 index 3d75e402..234e7f7c 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/it-IT/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/it-IT/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Lo script supporta Windows 11 23H2+. -UpdateWarning = La tua build di Windows 11 {0}.{1} non è supportata. Build supportate: 22631.3235+. Eseguire Windows Update e riprovare. +UpdateWarning = La tua build di Windows 11 {0}.{1} non è supportata. Build supportate: {2}+. Eseguire Windows Update e riprovare. UnsupportedLanguageMode = La sessione PowerShell è in esecuzione in modalità lingua limitata. LoggedInUserNotAdmin = L'utente in suo non ha i diritti di amministratore. UnsupportedPowerShell = Stai cercando di eseguire lo script tramite PowerShell {0}.{1}. Esegui lo script nella versione di PowerShell appropriata. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pl-PL/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pl-PL/Sophia.psd1 index 586b44dd..f70585f6 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pl-PL/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pl-PL/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Skrypt obsługuje system Windows 11 23H2+. -UpdateWarning = Twoja wersja systemu Windows 11: {0}.{1}. Obsługiwane kompilacje: 22631.3235+. Uruchom aktualizację systemu Windows i spróbuj ponownie. +UpdateWarning = Twoja wersja systemu Windows 11: {0}.{1}. Obsługiwane kompilacje: {2}+. Uruchom aktualizację systemu Windows i spróbuj ponownie. UnsupportedLanguageMode = Sesja PowerShell działa w trybie ograniczonego języka. LoggedInUserNotAdmin = Zalogowany użytkownik nie posiada uprawnień administratora. UnsupportedPowerShell = Próbujesz uruchomić skrypt przy użyciu PowerShell {0}.{1}. Uruchom skrypt używając odpowiedniej wersji PowerShell. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pt-BR/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pt-BR/Sophia.psd1 index 0885c8c2..00d9b0b9 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pt-BR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/pt-BR/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = O script suporta Windows 11 23H2+. -UpdateWarning = La tua build di Windows 11: {0}.{1}. Build suportadas: 22631.3235+. Execute o Windows Update e tente novamente. +UpdateWarning = La tua build di Windows 11: {0}.{1}. Build suportadas: {2}+. Execute o Windows Update e tente novamente. UnsupportedLanguageMode = A sessão PowerShell em funcionamento em um modo de linguagem limitada. LoggedInUserNotAdmin = O usuário logado não tem direitos de administrador. UnsupportedPowerShell = Você está tentando executar o script via PowerShell {0}.{1}. Execute o script na versão apropriada do PowerShell. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/ru-RU/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/ru-RU/Sophia.psd1 index 53d2457f..5c212fee 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/ru-RU/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/ru-RU/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Скрипт поддерживает Windows 11 23H2+. -UpdateWarning = Ваш билд Windows 11: {0}.{1}. Поддерживаемые сборки: 22631.3235+. Запустите обновление Windows и попробуйте заново. +UpdateWarning = Ваш билд Windows 11: {0}.{1}. Поддерживаемые сборки: {2}+. Запустите обновление Windows и попробуйте заново. UnsupportedLanguageMode = Сессия PowerShell работает в ограниченном режиме. LoggedInUserNotAdmin = Текущий вошедший пользователь не обладает правами администратора. UnsupportedPowerShell = Вы пытаетесь запустить скрипт в PowerShell {0}.{1}. Запустите скрипт в соответствующей версии PowerShell. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/tr-TR/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/tr-TR/Sophia.psd1 index bd16ec29..9c340970 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/tr-TR/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/tr-TR/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Komut dosyası Windows 11 23H2+'yı destekler. -UpdateWarning = Windows 11 yapınız: {0}.{1}. Desteklenen yapılar: 22631.3235+. Windows Update'i çalıştırın ve tekrar deneyin. +UpdateWarning = Windows 11 yapınız: {0}.{1}. Desteklenen yapılar: {2}+. Windows Update'i çalıştırın ve tekrar deneyin. UnsupportedLanguageMode = Sınırlı bir dil modunda çalışan PowerShell oturumu. LoggedInUserNotAdmin = Oturum açan kullanıcının yönetici hakları yok. UnsupportedPowerShell = Komut dosyasını PowerShell {0}.{1} aracılığıyla çalıştırmaya çalışıyorsunuz. Komut dosyasını uygun PowerShell sürümünde çalıştırın. 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 94a181ac..cebb4bae 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 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = Скрипт підтримує Windows 11 23H2+. -UpdateWarning = Ваш білд Windows 11: {0}.{1}. Підтримувані збірки: 22631.3235+. Запустіть Windows Update і повторіть спробу. +UpdateWarning = Ваш білд Windows 11: {0}.{1}. Підтримувані збірки: {2}+. Запустіть Windows Update і повторіть спробу. UnsupportedLanguageMode = Сесія PowerShell працює в обмеженому режимі. LoggedInUserNotAdmin = Поточний користувач, що увійшов, не має прав адміністратора. UnsupportedPowerShell = Ви намагаєтеся запустити скрипт в PowerShell {0}.{1}. Запустіть скрипт у відповідній версії PowerShell. diff --git a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/zh-CN/Sophia.psd1 b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/zh-CN/Sophia.psd1 index 00ee749a..e524d7ae 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/zh-CN/Sophia.psd1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Localizations/zh-CN/Sophia.psd1 @@ -1,6 +1,6 @@ ConvertFrom-StringData -StringData @' UnsupportedOSBuild = 脚本支持Windows 11 23H2+。 -UpdateWarning = 您的Windows 11构建: {0}.{1}。支持的构建: 22631.3235+。运行Windows Update并再次尝试。 +UpdateWarning = 您的Windows 11构建: {0}.{1}。支持的构建: {2}+。运行Windows Update并再次尝试。 UnsupportedLanguageMode = PowerShell会话在有限的语言模式下运行。 LoggedInUserNotAdmin = 登录的用户没有管理员的权利。 UnsupportedPowerShell = 你想通过PowerShell {0}.{1}运行脚本。在适当的PowerShell版本中运行该脚本。 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 639bd795..cd0f4eb7 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 @@ -2,8 +2,8 @@ .SYNOPSIS Sophia Script is a PowerShell module for Windows 10 & Windows 11 fine-tuning and automating the routine tasks - Version: v6.6.1 - Date: 03.03.2024 + Version: v6.6.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -150,89 +150,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } } - # Check whether Microsoft Edge as being a system component was removed by harmful tweakers - if (-not (Test-Path -Path "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe")) - { - Write-Information -MessageData "" -InformationAction Continue - # Extract the localized "Please wait..." string from shell32.dll - Write-Verbose -Message ([WinAPI.GetStrings]::GetString(12612)) -Verbose - - 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") - { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - - return - } - - try - { - # Download Microsoft Edge Stable x64 - # https://edgeupdates.microsoft.com/api/products?view=enterprise - $Parameters = @{ - Uri = "https://edgeupdates.microsoft.com/api/products?view=enterprise" - UseBasicParsing = $true - Verbose = $true - } - $EdgeLinks = Invoke-RestMethod @Parameters - $EdgeURL = (($EdgeLinks | Where-Object -FilterScript {$_.Product -eq "Stable"}).Releases | Where-Object -FilterScript {($_.Platform -eq "Windows") -and ($_.Architecture -eq "x64")} | Select-Object -Index 1).Artifacts.Location - - $DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" - $Parameters = @{ - Uri = $EdgeURL - OutFile = "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" - UseBasicParsing = $true - Verbose = $true - } - Invoke-Webrequest @Parameters - - # Install Microsoft Edge Stable x64 - Start-Process -FilePath "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -ArgumentList "/passive /norestart DONOTCREATEDESKTOPSHORTCUT=TRUE" -Wait - - Remove-Item -Path "$env:Public\Desktop\Microsoft Edge.lnk" -Force -ErrorAction Ignore - - Start-Sleep -Seconds 5 - - try - { - & "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe" --no-first-run --noerrdialogs --no-default-browser-check --start-maximized - } - catch - { - Write-Warning -Message ($Localization.WindowsComponentBroken -f "Microsoft Edge") - - Start-Process -FilePath "https://t.me/sophia_chat" - Start-Process -FilePath "https://discord.gg/sSryhaEv79" - - exit - } - - Stop-Process -Name msedge -Force -ErrorAction Ignore - - Remove-Item -Path "$DownloadsFolder\MicrosoftEdgeEnterpriseX64.msi" -Force - } - catch [System.Net.WebException] - { - Write-Warning -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") - Write-Error -Message ($Localization.NoResponse -f "https://edgeupdates.microsoft.com") -ErrorAction SilentlyContinue - } - } - catch [System.ComponentModel.Win32Exception] - { - Write-Warning -Message $Localization.NoInternetConnection - Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue - } - } - # Check the language mode if ($ExecutionContext.SessionState.LanguageMode -ne "FullLanguage") { @@ -588,9 +505,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -672,13 +586,53 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } "22631" { - if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt 3235) + # Check whether the current module version is the latest one + 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 + { + # 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 + } + } + catch [System.ComponentModel.Win32Exception] + { + $LatestSupportedBuild = 0 + + Write-Warning -Message $Localization.NoInternetConnection + Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue + } + + # We may use Test-Path -Path variable:LatestSupportedBuild + if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR) -lt $LatestSupportedBuild) { - # Check whether Windows minor build version is 3235 minimum - # https://learn.microsoft.com/en-us/windows/release-health/windows11-release-information#windows-11-current-versions + # Check Windows minor build version + # https://support.microsoft.com/en-us/topic/windows-11-version-23h2-update-history-59875222-b990-4bd9-932f-91a5954de434 $CurrentBuild = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name CurrentBuild $UBR = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows nt\CurrentVersion" -Name UBR - Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR) + Write-Warning -Message ($Localization.UpdateWarning -f $CurrentBuild.CurrentBuild, $UBR.UBR, $LatestSupportedBuild) Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -738,9 +692,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -870,7 +821,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd); { Write-Verbose -Message ($Localization.WindowsComponentBroken -f [WinAPI.GetStrings]::GetIndirectString("@%SystemRoot%\system32\schedsvc.dll,-100")) -Verbose - Start-Process -FilePath "https://github.com/farag2/Sophia-Script-for-Windows/releases/latest" Start-Process -FilePath "https://t.me/sophia_chat" Start-Process -FilePath "https://discord.gg/sSryhaEv79" @@ -4230,9 +4180,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4356,9 +4303,6 @@ function Cursors } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -4869,9 +4813,6 @@ public static bool MarkFileDelete (string sourcefile) } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6344,9 +6285,6 @@ function WindowsCapabilities } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -6896,9 +6834,6 @@ function IPv6Component } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -9888,9 +9823,6 @@ function InstallVCRedist } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -9949,10 +9881,10 @@ function InstallVCRedist <# .SYNOPSIS - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 .EXAMPLE - InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 + InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 .LINK https://dotnet.microsoft.com/en-us/download/dotnet @@ -9969,7 +9901,7 @@ function InstallDotNetRuntimes Mandatory = $true, ParameterSetName = "Runtimes" )] - [ValidateSet("NET6x86", "NET6x64", "NET7x86", "NET7x64", "NET8x86", "NET8x64")] + [ValidateSet("NET6x64", "NET7x64", "NET8x64")] [string[]] $Runtimes ) @@ -9985,9 +9917,6 @@ function InstallDotNetRuntimes } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } } @@ -10003,50 +9932,6 @@ function InstallDotNetRuntimes { switch ($Runtime) { - NET6x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/6 - # .NET Desktop Runtime 6 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.6 --architecture x86 --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 - { - # Install .NET Desktop Runtime 6 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/6.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 6 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET6x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10091,50 +9976,6 @@ function InstallDotNetRuntimes Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } } - NET7x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/7 - # .NET Desktop Runtime 7 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.7 --architecture x86 --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 - Get-ChildItem -Path "$env:TEMP\WinGet" -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - else - { - # .NET Desktop Runtime 7 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/7.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 7 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET7x64 { if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") @@ -10178,52 +10019,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - - } - NET8x86 - { - if ([System.Version](Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Ignore).Version -ge [System.Version]"1.17") - { - # https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/DotNet/DesktopRuntime/8 - # .NET Desktop Runtime 8 x86 - winget install --id=Microsoft.DotNet.DesktopRuntime.8 --architecture x86 --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 - { - # .NET Desktop Runtime 8 - # https://github.com/dotnet/core/blob/main/release-notes/releases-index.json - $Parameters = @{ - Uri = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json" - Verbose = $true - UseBasicParsing = $true - } - $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}" - - # .NET Desktop Runtime 8 x86 - $Parameters = @{ - Uri = "https://dotnetcli.azureedge.net/dotnet/Runtime/$LatestRelease/dotnet-runtime-$LatestRelease-win-x86.exe" - OutFile = "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-x86.exe" - UseBasicParsing = $true - Verbose = $true - } - Invoke-WebRequest @Parameters - - Start-Process -FilePath "$DownloadsFolder\dotnet-runtime-$LatestRelease-win-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\dotnet-runtime-$LatestRelease-win-x86.exe", - "$env:TEMP\Microsoft_.NET_Runtime*.log" - ) - Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore - } - } NET8x64 { @@ -10267,7 +10062,6 @@ function InstallDotNetRuntimes ) Get-ChildItem -Path $Paths -Force -ErrorAction Ignore | Remove-Item -Recurse -Force -ErrorAction Ignore } - } } } @@ -10388,9 +10182,6 @@ function Install-WSA } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -10659,9 +10450,6 @@ function Install-WSL } if ((Resolve-DnsName @Parameters).IPAddress -notcontains "131.107.255.255") { - Write-Information -MessageData "" -InformationAction Continue - Write-Verbose -Message $Localization.Skipped -Verbose - return } @@ -15458,10 +15246,10 @@ function Errors } [PSCustomObject]@{ - $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber + $Localization.ErrorsLine = $_.InvocationInfo.ScriptLineNumber # Extract the localized "File" string from shell32.dll "$([WinAPI.GetStrings]::GetString(4130))" = $ErrorInFile - $Localization.ErrorsMessage = $_.Exception.Message + $Localization.ErrorsMessage = $_.Exception.Message } } | Sort-Object -Property $Localization.ErrorsLine | Format-Table -AutoSize -Wrap | Out-String).Trim() } 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 8d01ffab..263230fe 100644 --- a/src/Sophia_Script_for_Windows_11_PowerShell_7/Sophia.ps1 +++ b/src/Sophia_Script_for_Windows_11_PowerShell_7/Sophia.ps1 @@ -2,8 +2,8 @@ .SYNOPSIS Default preset file for "Sophia Script for Windows 11 (PowerShell 7)" - Version: v6.6.1 - Date: 03.03.2024 + Version: v6.6.2 + Date: 06.03.2024 Copyright (c) 2014—2024 farag Copyright (c) 2019—2024 farag & Inestic @@ -69,7 +69,7 @@ param Clear-Host -$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.1 (PowerShell 7) | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" +$Host.UI.RawUI.WindowTitle = "Sophia Script for Windows 11 v6.6.2 (PowerShell 7) | Made with $([System.Char]::ConvertFromUtf32(0x1F497)) of Windows | $([System.Char]0x00A9) farag & Inestic, 2014$([System.Char]0x2013)2024" Remove-Module -Name Sophia -Force -ErrorAction Ignore @@ -990,12 +990,12 @@ DefaultTerminalApp -WindowsTerminal InstallVCRedist <# - Install the latest .NET Desktop Runtime 6, 7, 8 (x86/x64) - Установить последнюю версию .NET Desktop Runtime 6, 7, 8 (x86/x64) + Install the latest .NET Desktop Runtime 6, 7, 8 x64 + Установить последнюю версию .NET Desktop Runtime 6, 7, 8 x64 https://dotnet.microsoft.com/en-us/download/dotnet #> -InstallDotNetRuntimes -Runtimes NET6x86, NET6x64, NET7x86, NET7x64, NET8x86, NET8x64 +InstallDotNetRuntimes -Runtimes NET6x64, NET7x64, NET8x64 # Enable proxying only blocked sites from the unified registry of Roskomnadzor. The function is applicable for Russia only # Включить проксирование только заблокированных сайтов из единого реестра Роскомнадзора. Функция применима только для России