Skip to content

Commit

Permalink
修正 Unix 解压文件名中带有文件夹分隔符反斜杠的问题 & 减少发行渠道版本
Browse files Browse the repository at this point in the history
  • Loading branch information
AigioL committed Nov 25, 2021
1 parent 2c48edf commit bf2d7fe
Show file tree
Hide file tree
Showing 11 changed files with 40 additions and 4 deletions.
8 changes: 5 additions & 3 deletions download-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,12 @@
- Windows
- 如果你使用 Intel、AMD 的 x64 芯片的 Mac(较为**普遍**),则下载文件名中带有 **win_x64** 的文件
- 如果你使用 ARM64 芯片的 PC(极为**稀有**),例如 **Surface Pro X**,则下载文件名中带有 **win_x64** 的文件可通过 Win11 x86 模拟运行
- **[暂未支持]** ~~如果你使用 ARM64 芯片的 PC(极为**稀有**),例如 **Surface Pro X**,则下载文件名中带有 **win_arm64** 的文件~~
- macOS
- 如果你使用 Intel、AMD 的 x64 芯片的 Mac(较为**普遍**),则下载文件名中带有 **macos_x64** 的文件
- 如果你使用 ARM64 芯片的 Mac(较为**稀有**),例如 **M1**,则下载文件名中带有 **macos_x64** 的文件可通过 [Rosetta 2](https://support.apple.com/zh-cn/HT211861) 运行
- **[尚未测试]** ~~如果你使用 ARM64 芯片的 Mac(较为**稀有**),例如 **M1**,则下载文件名中带有 **macos_arm64** 的文件~~
- Linux
- 如果你使用 Intel、AMD 的 x64 芯片的 PC(较为**普遍**)则下载文件名中带有 **linux_x64** 的文件
- 如果你使用 ARM64 芯片的 PC(较为**稀有**)例如 **Raspberry Pi Model 3+**,则下载文件名中带有 **linux_arm64** 的文件
- 如果你使用 ARM32 芯片的 PC(较为**稀有**)例如 **Raspberry Pi Model 2+**,则下载文件名中带有 **linux_arm** 的文件
- Shared
- 如果你已安装了 [ASP.NET Core Runtime 6.0.0](https://dotnet.microsoft.com/download/dotnet/6.0) 则下载文件名中带有 **fde** 的文件,可减少磁盘占用空间
- [在 Windows 上安装 .NET](https://docs.microsoft.com/en-us/dotnet/core/install/windows)
Expand All @@ -26,3 +23,8 @@
- 如果你使用 ARM64 芯片的设备(较为**普遍**)则下载文件名中带有 **android_arm64_v8a** 的文件
- 如果你使用 ARM32 芯片的设备(较为**稀有**)通常为 **14** 年下半年之前生产的设备,则下载文件名中带有 **android_armeabi_v7a** 的文件
- 如果你使用 Intel、AMD 的 x86 芯片的设备(较为**稀有**)则下载文件名中带有 **android_x86** 的文件

<!--
- **[暂未支持]** ~~如果你使用 ARM64 芯片的 PC(极为**稀有**),例如 **Surface Pro X**,则下载文件名中带有 **win_arm64** 的文件~~
- **[暂未支持]** ~~如果你使用 ARM64 芯片的 Mac(较为**稀有**),例如 **M1**,则下载文件名中带有 **macos_arm64** 的文件~~
-->
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,22 @@
using System.IO.Compression;
using ICSharpCode.SharpZipLib.Tar;
using ArchiSteamFarm;
using System.Collections.Generic;

namespace System.Application.Services.Implementation
{
partial class ArchiSteamFarmServiceImpl
{
const string Version_ASFUI = "5.1.5.3";
const char WinDirectorySeparatorChar = '\\';
const string _Version_ASFUI = "5.1.5.3";
const string Version_FileName = "VERSION.txt";

static string Version_ASFUI => _Version_ASFUI == "5.1.5.3" ?
(Path.DirectorySeparatorChar != WinDirectorySeparatorChar ?
_Version_ASFUI + "-unix_unpack_fix" :
_Version_ASFUI) :
_Version_ASFUI;

/// <summary>
/// 尝试解压 ASF-UI 资源包
/// </summary>
Expand Down Expand Up @@ -44,6 +52,32 @@ void UnPackASFUI(bool dirPathExists)
using var archive = TarArchive.CreateInputTarArchive(decompress, Encoding.UTF8);
archive.ExtractContents(dirPath);

if (Path.DirectorySeparatorChar != WinDirectorySeparatorChar) // 修正解压文件名中带有文件夹分隔符反斜杠的问题
{
var files = Directory.GetFiles(dirPath);
List<string> existsDirPaths = new();
foreach (var item in files)
{
var fileName = Path.GetFileName(item);
var fileRelativePaths = fileName.Split(WinDirectorySeparatorChar, StringSplitOptions.RemoveEmptyEntries);
if (fileRelativePaths.Length < 2) continue;
var paths = new string[fileRelativePaths.Length];
paths[0] = dirPath;
for (int i = 1; i < paths.Length; i++)
{
paths[i] = fileRelativePaths[i - 1];
}
var destDirPath = Path.Combine(paths);
if (!existsDirPaths.Contains(destDirPath) && !Directory.Exists(destDirPath))
{
Directory.CreateDirectory(destDirPath);
existsDirPaths.Add(destDirPath);
}
var destFilePath = Path.Combine(destDirPath, fileRelativePaths[^1]);
File.Move(item, destFilePath);
}
}

File.WriteAllText(versionFilePath, Version_ASFUI);
}
}
Expand Down

0 comments on commit bf2d7fe

Please sign in to comment.