From c004a1c72fd955b4cf7eabf0a1481ddf392c9e32 Mon Sep 17 00:00:00 2001 From: nilaoda <nilaoda@live.com> Date: Fri, 22 Nov 2024 19:46:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8DWindowsVista=E7=BC=96?= =?UTF-8?q?=E8=AF=91=20(#499)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build_latest.yml | 10 +++++---- .../N_m3u8DL-RE.Common.csproj | 2 +- src/N_m3u8DL-RE.Common/Resource/ResString.cs | 7 +++--- .../N_m3u8DL-RE.Parser.csproj | 4 ++-- src/N_m3u8DL-RE/Directory.Build.props | 22 +++++++++---------- src/N_m3u8DL-RE/N_m3u8DL-RE.csproj | 8 +++---- src/N_m3u8DL-RE/Program.cs | 20 +++++++++++------ 7 files changed, 41 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build_latest.yml b/.github/workflows/build_latest.yml index 68a4773..fd0e5a2 100644 --- a/.github/workflows/build_latest.yml +++ b/.github/workflows/build_latest.yml @@ -23,7 +23,7 @@ env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true jobs: - build-win7-x86: + build-win-nt6_0-x86: runs-on: windows-latest steps: @@ -34,13 +34,15 @@ jobs: with: dotnet-version: ${{ env.DOTNET_SDK_VERSION }} + - run: powershell -Command "(Get-Content src/N_m3u8DL-RE/N_m3u8DL-RE.csproj) -replace '<TargetFramework>.*</TargetFramework>', '<TargetFramework>net9.0-windows</TargetFramework>' | Set-Content src/N_m3u8DL-RE/N_m3u8DL-RE.csproj" + - run: dotnet add src/N_m3u8DL-RE/N_m3u8DL-RE.csproj package YY-Thunks --version 1.1.4 - run: dotnet add src/N_m3u8DL-RE/N_m3u8DL-RE.csproj package VC-LTL --version 5.1.1 - - run: dotnet publish src/N_m3u8DL-RE -r win-x86 -c Release -o artifact-x86 + - run: dotnet publish src/N_m3u8DL-RE -p:TargetPlatformMinVersion=6.0 -r win-x86 -c Release -o artifact-x86 - name: Upload Artifact[win-x86] uses: actions/upload-artifact@v3.1.3 with: - name: N_m3u8DL-RE_Beta_win7-x86 + name: N_m3u8DL-RE_Beta_win_NT6.0-x86 path: artifact-x86\N_m3u8DL-RE.exe build-win-x64-arm64: @@ -135,7 +137,7 @@ jobs: create_draft_release: name: Create Github draft release if: ${{ github.event.inputs.doRelease == 'true' }} - needs: [build-win7-x86,build-win-x64-arm64,build-linux-x64,build-linux-arm64,build-mac-x64-arm64] + needs: [build-win-nt6_0-x86,build-win-x64-arm64,build-linux-x64,build-linux-arm64,build-mac-x64-arm64] runs-on: ubuntu-latest steps: - name: Audit gh version diff --git a/src/N_m3u8DL-RE.Common/N_m3u8DL-RE.Common.csproj b/src/N_m3u8DL-RE.Common/N_m3u8DL-RE.Common.csproj index e631f94..2214b05 100644 --- a/src/N_m3u8DL-RE.Common/N_m3u8DL-RE.Common.csproj +++ b/src/N_m3u8DL-RE.Common/N_m3u8DL-RE.Common.csproj @@ -5,7 +5,7 @@ <TargetFramework>net9.0</TargetFramework> <RootNamespace>N_m3u8DL_RE.Common</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> - <LangVersion>preview</LangVersion> + <LangVersion>preview</LangVersion> <Nullable>enable</Nullable> </PropertyGroup> diff --git a/src/N_m3u8DL-RE.Common/Resource/ResString.cs b/src/N_m3u8DL-RE.Common/Resource/ResString.cs index 8c97681..9cae7d1 100644 --- a/src/N_m3u8DL-RE.Common/Resource/ResString.cs +++ b/src/N_m3u8DL-RE.Common/Resource/ResString.cs @@ -2,6 +2,8 @@ public class ResString { + public static string CurrentLoc = "en-US"; + public static readonly string ReLiveTs = "<RE_LIVE_TS>"; public static string singleFileRealtimeDecryptWarn => GetText("singleFileRealtimeDecryptWarn"); public static string singleFileSplitWarn => GetText("singleFileSplitWarn"); @@ -132,10 +134,9 @@ public class ResString if (!StaticText.LANG_DIC.ContainsKey(key)) return "<...LANG TEXT MISSING...>"; - var current = Thread.CurrentThread.CurrentUICulture.Name; - if (current == "zh-CN" || current == "zh-SG" || current == "zh-Hans") + if (CurrentLoc == "zh-CN" || CurrentLoc == "zh-SG" || CurrentLoc == "zh-Hans") return StaticText.LANG_DIC[key].ZH_CN; - if (current.StartsWith("zh-")) + if (CurrentLoc.StartsWith("zh-")) return StaticText.LANG_DIC[key].ZH_TW; return StaticText.LANG_DIC[key].EN_US; } diff --git a/src/N_m3u8DL-RE.Parser/N_m3u8DL-RE.Parser.csproj b/src/N_m3u8DL-RE.Parser/N_m3u8DL-RE.Parser.csproj index 34d56a1..f8dfdaf 100644 --- a/src/N_m3u8DL-RE.Parser/N_m3u8DL-RE.Parser.csproj +++ b/src/N_m3u8DL-RE.Parser/N_m3u8DL-RE.Parser.csproj @@ -1,11 +1,11 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <OutputType>library</OutputType> + <OutputType>library</OutputType> <TargetFramework>net9.0</TargetFramework> <RootNamespace>N_m3u8DL_RE.Parser</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> - <LangVersion>preview</LangVersion> + <LangVersion>preview</LangVersion> <Nullable>enable</Nullable> </PropertyGroup> diff --git a/src/N_m3u8DL-RE/Directory.Build.props b/src/N_m3u8DL-RE/Directory.Build.props index 496105d..311188e 100644 --- a/src/N_m3u8DL-RE/Directory.Build.props +++ b/src/N_m3u8DL-RE/Directory.Build.props @@ -5,19 +5,19 @@ <IlcFoldIdenticalMethodBodies>true</IlcFoldIdenticalMethodBodies> <StaticallyLinked Condition="$(RuntimeIdentifier.StartsWith('win'))">true</StaticallyLinked> <TrimMode>full</TrimMode> - <TrimmerDefaultAction>link</TrimmerDefaultAction> - <IlcTrimMetadata>true</IlcTrimMetadata> - <IlcGenerateStackTraceData>true</IlcGenerateStackTraceData> - <SatelliteResourceLanguages>zh-CN;zh-TW;en-US</SatelliteResourceLanguages> - <PublishAot>true</PublishAot> - <StripSymbols>true</StripSymbols> - <ObjCopyName Condition="'$(RuntimeIdentifier)' == 'linux-arm64'">aarch64-linux-gnu-objcopy</ObjCopyName> + <TrimmerDefaultAction>link</TrimmerDefaultAction> + <IlcTrimMetadata>true</IlcTrimMetadata> + <IlcGenerateStackTraceData>true</IlcGenerateStackTraceData> + <SatelliteResourceLanguages>zh-CN;zh-TW;en-US</SatelliteResourceLanguages> + <PublishAot>true</PublishAot> + <StripSymbols>true</StripSymbols> + <ObjCopyName Condition="'$(RuntimeIdentifier)' == 'linux-arm64'">aarch64-linux-gnu-objcopy</ObjCopyName> </PropertyGroup> - <!-- <ItemGroup Condition="'$(PublishAot)' == 'true' and '$(RuntimeIdentifier)' != 'win-arm64' and '$(RuntimeIdentifier)' != 'linux-arm64' and '$(RuntimeIdentifier)' != 'osx-arm64' and '$(RuntimeIdentifier)' != 'osx-x64'"> - <PackageReference Include="PublishAotCompressed" Version="1.0.3" /> - </ItemGroup> --> - + <!--<ItemGroup Condition="'$(PublishAot)' == 'true' and '$(RuntimeIdentifier)' != 'win-arm64' and '$(RuntimeIdentifier)' != 'linux-arm64' and '$(RuntimeIdentifier)' != 'osx-arm64' and '$(RuntimeIdentifier)' != 'osx-x64'"> + <PackageReference Include="PublishAotCompressed" Version="1.0.3" /> + </ItemGroup>--> + <ItemGroup> <RdXmlFile Include="rd.xml" /> </ItemGroup> diff --git a/src/N_m3u8DL-RE/N_m3u8DL-RE.csproj b/src/N_m3u8DL-RE/N_m3u8DL-RE.csproj index 44da4ec..4f471e8 100644 --- a/src/N_m3u8DL-RE/N_m3u8DL-RE.csproj +++ b/src/N_m3u8DL-RE/N_m3u8DL-RE.csproj @@ -2,13 +2,13 @@ <PropertyGroup> <OutputType>Exe</OutputType> - <TargetFramework>net9.0</TargetFramework> + <TargetFramework>net9.0</TargetFramework> <RootNamespace>N_m3u8DL_RE</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> - <LangVersion>preview</LangVersion> + <LangVersion>preview</LangVersion> <Nullable>enable</Nullable> - <Version>0.2.1</Version> - <Platforms>AnyCPU;x64</Platforms> + <Version>0.2.1</Version> + <Platforms>AnyCPU;x64</Platforms> </PropertyGroup> <ItemGroup> diff --git a/src/N_m3u8DL-RE/Program.cs b/src/N_m3u8DL-RE/Program.cs index 0d350fd..c683787 100644 --- a/src/N_m3u8DL-RE/Program.cs +++ b/src/N_m3u8DL-RE/Program.cs @@ -5,7 +5,6 @@ using N_m3u8DL_RE.Parser; using Spectre.Console; using N_m3u8DL_RE.Common.Resource; using N_m3u8DL_RE.Common.Log; -using System.Globalization; using System.Text; using N_m3u8DL_RE.Common.Util; using N_m3u8DL_RE.Processor; @@ -22,11 +21,21 @@ internal class Program { static async Task Main(string[] args) { + // 处理NT6.0及以下System.CommandLine报错CultureNotFound问题 + if (OperatingSystem.IsWindows()) + { + var osVersion = Environment.OSVersion.Version; + if (osVersion.Major < 6 || (osVersion.Major == 6 && osVersion.Minor == 0)) + { + Environment.SetEnvironmentVariable("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "1"); + } + } + Console.CancelKeyPress += Console_CancelKeyPress; ServicePointManager.DefaultConnectionLimit = 1024; try { Console.CursorVisible = true; } catch { } - string loc = "en-US"; + string loc = ResString.CurrentLoc; string currLoc = Thread.CurrentThread.CurrentUICulture.Name; if (currLoc == "zh-CN" || currLoc == "zh-SG") loc = "zh-CN"; else if (currLoc.StartsWith("zh-")) loc = "zh-TW"; @@ -38,11 +47,8 @@ internal class Program { loc = list[index + 1]; } - - CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(loc); - Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(loc); - Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(loc); - + + ResString.CurrentLoc = loc; await CommandInvoker.InvokeArgs(args, DoWorkAsync); }