From b48a7dae610ce73cea932837de5ed0343899894b Mon Sep 17 00:00:00 2001 From: Aigio Liu Date: Sat, 24 Jun 2023 20:57:00 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Update=20Doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WattToolkit.sln | 6 +- doc/download-guide.en.md | 69 ---------- doc/download-guide.md | 77 ----------- doc/file-system.md | 21 +++ doc/publish.md | 172 ++++++++++++++++++++++++ src/BD.WTTS.Client.AppHost/Program.cs | 2 +- src/README.md | 181 +------------------------- 7 files changed, 198 insertions(+), 330 deletions(-) delete mode 100644 doc/download-guide.en.md delete mode 100644 doc/download-guide.md create mode 100644 doc/file-system.md create mode 100644 doc/publish.md diff --git a/WattToolkit.sln b/WattToolkit.sln index 6bb713403..88a75fd44 100644 --- a/WattToolkit.sln +++ b/WattToolkit.sln @@ -28,9 +28,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "5.Plugins", "5.Plugins", "{ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Document", "Document", "{1E1DFB1C-55FC-4D74-9791-6A692E647034}" ProjectSection(SolutionItems) = preProject - doc\download-guide.en.md = doc\download-guide.en.md - doc\download-guide.md = doc\download-guide.md + doc\file-system.md = doc\file-system.md doc\openwrt.md = doc\openwrt.md + doc\publish.md = doc\publish.md doc\release-keylol.md = doc\release-keylol.md EndProjectSection EndProject @@ -176,7 +176,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ValveKeyValue", "ref\SteamC EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BD.SteamClient.Models.Protobuf", "ref\SteamClient\src\BD.SteamClient.Models.Protobuf\BD.SteamClient.Models.Protobuf.csproj", "{4D34BE4D-2233-46ED-939C-EAAEF608F5B7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BD.WTTS.Client.Tools.Publish", "src\BD.WTTS.Client.Tools.Publish\BD.WTTS.Client.Tools.Publish.csproj", "{BC309EC9-D7A2-4A28-BE60-2E5532DE073D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BD.WTTS.Client.Tools.Publish", "src\BD.WTTS.Client.Tools.Publish\BD.WTTS.Client.Tools.Publish.csproj", "{BC309EC9-D7A2-4A28-BE60-2E5532DE073D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/doc/download-guide.en.md b/doc/download-guide.en.md deleted file mode 100644 index 334c9ee54..000000000 --- a/doc/download-guide.en.md +++ /dev/null @@ -1,69 +0,0 @@ -

⬇️ Download Guide

-
- -English | [Simplified Chinese](./download-guide.md) - -
- -## Windows -- Store version - - Install in Microsoft Store - - User data will be stored in ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalState``` -- Portable version - - The compressed package can be decompressed to any folder and cannot be run in the compressed software - - User data will be stored in the program root directory ```\AppData``` - - With a file extension of 7z, for example ```Steam++_win_x64_v3.0.0.7z```. -- Installation version - - The installation package currently only supports Simplified Chinese - - The installer will write software information in the registry - - User data will be stored in ```%LocalAppData%\Steam++``` - - With a file extension of exe, for example ```Steam++_win_x64_v3.0.0.exe```. -- 64-bit applications (recommended) - - For 64-bit operating systems only, [Determine whether your computer is running a 32-bit ersionor 64-bit version of the Windows operating system](https://support.microsoft.com/n-us/topic/etermine-whether-your-computer-is-running-a-32-bit-version-or-64-bit-version-f-the-windows-perating-system-1b03ca69-ac5e-4b04-827b-c0c47145944b). - - The file name **contains** x64, such as ```Steam++_win_x64_v3.0.0.7z```. -- 32-bit application - - For 32-bit or 64-bit operating systems. - - The file name **contains** x86, such as ```Steam++_win_x86_v3.0.0.7z```. -- ~~ARM64 application~~(Adapting…) - - It is applicable to devices that use Arm64 CPU, such as **Microsoft Surface Pro X/Surface ro 95G** and other devices that use Qualcomm Snapdragon and MediaTek mobile processors. - - The file name **contains** arm64, such as ```Steam++_win_arm64_v3.0.0.7z```. -- Independent application ([SCD](https://learn.microsoft.com/en-us/dotnet/core/deploying/publish-elf-contained)) will include. NET runtime in the application. Users of this pplication do not eed to install. NET before running the application. (Recommended) - - The file name **does not contains** fde, such as ```Steam++_win_x64_v3.0.0.7z```. -- Framework-dependent application ([FDE](https://learn.microsoft.com/en-us/dotnet/core/eploying/publish-framework-dependent)), the application does not contain the. NET runtime nd library, but nly the application and third-party dependencies. - - The file name **contains** fde, such as ```Steam++_win_x64_fde_v3.0.0.7z```. - - Compared with independent applications, framework-dependent applications can reduce the disk space occupied by this application because of sharing the runtime, and the runtime can be repaired by Windows Update with security patches. - - The following runtime needs to be installed - - ASP.NET Runtime 7.x - - ASP.NET Core Runtime 7.x - - This application does not require IIS support. You can only install the relevant ntime instead of the Hosting Bundle. -## macOS -- ARM64 application - - Applicable to Mac using ARM64 (Apple Silicon) chip, such as **Apple M1/M2**. - - The file name **contains** arm64, such as ```Steam++_macos_arm64_v3.0.0.dmg```. -- 64-bit applications - - For Mac using Intel's x64 (x86-64) chip. - - The file name **contains** x64, such as ```Steam++_macos_x64_v3.0.0.dmg```. -- ~~General package~~(Adapting…) - - All versions of binaries are included in this package and are applicable to all supported evices, but the file size is large. -## Linux -- 64-bit applications - - Applicable to devices using Intel and AMD's x64 (x86-64) chips. - - The file name **contains** x64, such as ```Steam++_linux_x64_v3.0.0.tar.zst```. -- ARM64 application - - Applicable to devices using ARM64 chips, such as **Raspberry Pi Model 3+**. - - The file name **contains** x64, such as ```Steam++_linux_arm64_v3.0.0.tar.zst```. -## Android -- General package (recommended) - - All versions of binaries are included in this package and are applicable to all supported vices, but the file size is large. - - The file name **only contains** android, such as ```Steam++_android_v3.0.0.apk```. -- ~~arm64-v8a~~(Deprecated…) - - Applicable to the use of current mainstream mobile phones or tablet devices - - The file name **contains** arm64-v8a, such as ```Steam++_arm64-v8a_v3.0.0.apk```. -- ~~armeabi-v7a~~(Deprecated…) - - It is applicable to the use of old mobile phones or tablet devices, usually those roducedbefore the second half of **2014**. - - The file name **contains** armeabi_v7a, such as ```Steam++_armeabi_v7a_v3.0.0.apk```. -- ~~x86_64~~(Deprecated…) - - Applicable to devices using Intel and AMD's x64 (x86-64) chips, such as simulators on PC. - - The file name **contains** x64, such as ```Steam++_x64_v3.0.0.apk```. -## ~~iOS/iPadOS~~(In development…) -- Download in App Store diff --git a/doc/download-guide.md b/doc/download-guide.md deleted file mode 100644 index 746905396..000000000 --- a/doc/download-guide.md +++ /dev/null @@ -1,77 +0,0 @@ -

⬇️ 下载指南

-
- -[English](./download-guide.en.md) | 简体中文 - -
- -## Windows -- 应用商店版 - - 在 Microsoft 应用商店中安装 - - 用户数据将存放于 ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalState``` -- 便携版 - - 压缩包解压到任意文件夹即可,不可在压缩软件中运行 - - 用户数据将存放于程序根目录下 ```\AppData``` - - 文件扩展名为 7z 的,例如 ```Steam++_win_x64_v3.0.0.7z```。 -- 安装版 - - 安装包当前仅支持简体中文 - - 安装程序将会在注册表中写入软件信息 - - 用户数据将存放于 ```%LocalAppData%\Steam++``` - - 文件扩展名为 exe 的,例如 ```Steam++_win_x64_v3.0.0.exe```。 -- 64 位应用程序(推荐) - - 仅适用于 64 位操作系统,[确定您的计算机运行的是 32 位版本还是 64 位版本的 Windows 操作系统](https://pport.microsoft.com/zh-cn/topic/%E7%A1%AE%E5%AE%9A%E6%82%A8%E7%9A%84%E8%AE%1%E7%AE%97%6%9C%BAE8%BF%90%E8%A1%8C%E7%9A%84%E6%98%AF-32-%E4%BD%8D%E7%89%88%E6%9C%C%E8%BF%98%E6%98%F-64-%E4%BD%D%E7%89%88%E6%9C%AC%E7%9A%84-windows-%E6%93%8D%E4%BD%C%E7%B3%BB%E7%BB%F-1b03ca69-c5e-4b04-827b-c0c47145944b)。 - - 文件名中**包含** x64 的,例如 ```Steam++_win_x64_v3.0.0.exe```。 -- 32 位应用程序 - - 适用于 32 位或 64 位操作系统。 - - 文件名中**包含** x86 的,例如 ```Steam++_win_x86_v3.0.0.exe```。 -- ~~ARM64 应用程序~~(适配中…) - - 适用于使用 Arm64 CPU 的设备,例如 **微软 Surface Pro X/Surface Pro 9 5G** 等使用高通骁龙、联发科动处理的设备。 - - 文件名中**包含** arm64 的,例如 ```Steam++_win_arm64_v3.0.0.exe```。 -- 独立应用([SCD](https://learn.microsoft.com/zh-cn/dotnet/core/deploying/#publish-self-ontained)),会应用中包含 .NET 运行时,该应用的用户无需在运行应用前安装 .NET。 (推荐) - - 文件名中**不包含** fde 的,例如 ```Steam++_win_x64_v3.0.0.exe```。 -- 依赖于框架的应用([FDE](https://learn.microsoft.com/zh-cn/dotnet/core/deploying/#publish-ramework-ependent)),则该应用不包含 .NET 运行时和库,而仅包含该应用和第三方依赖项。 - - 文件名中**包含** fde 的,例如 ```Steam++_win_x64_fde_v3.0.0.exe```。 - - 依赖于框架的应用相比独立应用因共享运行时,可减少本应用占用的磁盘空间,且运行时可由 Windows 更新进行安全补丁修复。 - - 需要安装以下运行时 - - ASP.NET 运行时 7.x - - ASP.NET Core 运行时 7.x - - 此应用不需要 IIS 支持,可仅安装相关运行时而不是托管捆绑包。 -## macOS -- ARM64 应用程序 - - 适用于使用 ARM64(Apple Silicon) 芯片的 Mac,例如 **Apple M1/M2**。 - - 文件名中**包含** x64 的,例如 ```Steam++_macos_arm64_v3.0.0.dmg```。 -- 64 位应用程序 - - 适用于使用 Intel 的 x64(x86-64) 芯片的 Mac。 - - 文件名中**包含** x64 的,例如 ```Steam++_macos_x64_v3.0.0.dmg```。 -- ~~通用包~~(适配中…) - - 所有版本的二进制文件都包含在此包中,适用于所有支持的设备,但文件体积较大。 -## Linux -- 64 位应用程序 - - 适用于使用 Intel、AMD 的 x64(x86-64) 芯片的设备。 - - 文件名中**包含** x64 的,例如 ```Steam++_linux_x64_v3.0.0.tar.zst```。 -- ARM64 应用程序 - - 适用于使用 ARM64 芯片的设备,例如 **Raspberry Pi Model 3+**。 - - 文件名中**包含** x64 的,例如 ```Steam++_linux_arm64_v3.0.0.tar.zst```。 -## Android -- 通用包(推荐) - - 所有版本的二进制文件都包含在此包中,适用于所有支持的设备,但文件体积较大。 - - 文件名中**仅包含** android 的,例如 ```Steam++_android_v3.0.0.apk```。 -- ~~arm64-v8a~~(已弃用…) - - 适用于使用目前主流的手机或平板设备 - - 文件名中**包含** arm64_v8a 的,例如 ```Steam++_android_arm64_v8a_v3.0.0.apk```。 -- ~~armeabi-v7a~~(已弃用…) - - 适用于使用老旧的手机或平板设备,通常为 **2014** 年下半年之前生产的设备。 - - 文件名中**包含** armeabi_v7a 的,例如 ```Steam++_android_armeabi_v7a_v3.0.0.apk```。 -- ~~x86_64~~(已弃用…) - - 适用于使用 Intel、AMD 的 x64(x86-64) 芯片的设备,例如 PC 上的模拟器。 - - 文件名中**包含** x64 的,例如 ```Steam++_android_x64_v3.0.0.apk```。 -## ~~iOS/iPadOS~~(开发中…) -- 在 App Store 中下载 - - \ No newline at end of file diff --git a/doc/file-system.md b/doc/file-system.md new file mode 100644 index 000000000..f57693188 --- /dev/null +++ b/doc/file-system.md @@ -0,0 +1,21 @@ +# Steam++ v3.X FileSystem Document + +### 📁 Storage +- AppData + - Microsoft Store ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalState``` + - Windows ```\AppData``` or ```%LocalAppData%\Steam++``` + - macOS ```~/Library/Steam++``` + - Linux ```$XDG_DATA_HOME/Steam++``` or ```$HOME/.local/share/Steam++``` + - Android ```/data/data/net.steampp.app/files``` +- Cache + - Microsoft Store ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalCache``` + - Windows ```\Cache``` or ```%Tmp%\Steam++``` + - macOS ```~/Library/Caches/Steam++``` + - Linux ```$XDG_CACHE_HOME/Steam++``` or ```$HOME/.cache/Steam++``` + - Android ```/data/data/net.steampp.app/cache``` +- Logs + - Microsoft Store ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalCache\Logs``` + - Windows ```\Logs``` or ```%Tmp%\Steam++\Logs``` + - macOS ```~/Library/Caches/Steam++/Logs``` + - Linux ```$XDG_CACHE_HOME/Steam++/Logs``` or ```$HOME/.cache/Steam++/Logs``` + - Android ```/data/data/net.steampp.app/cache/Logs``` \ No newline at end of file diff --git a/doc/publish.md b/doc/publish.md new file mode 100644 index 000000000..bef8f13ac --- /dev/null +++ b/doc/publish.md @@ -0,0 +1,172 @@ +# Steam++ v3.X Publish Document + +### Assets +- Windows + - x64 + - ```Steam++_vx.y.z_win_x64.msix``` + - ```Steam++_vx.y.z_win_x64.7z``` + - x86 + - ```Steam++_vx.y.z_win_x86.msix``` + - ```Steam++_vx.y.z_win_x86.7z``` + - Arm64 + - ```Steam++_vx.y.z_win_arm64.msix``` + - ```Steam++_vx.y.z_win_arm64.7z``` +- Linux + - x64 + - ```Steam++_vx.y.z_linux_x64.tar.zst``` + - ```Steam++_vx.y.z_linux_x64.deb``` + - ```Steam++_vx.y.z_linux_x64.rpm``` + - Arm64 + - ```Steam++_vx.y.z_linux_arm64.tar.zst``` + - ```Steam++_vx.y.z_linux_arm64.deb``` + - ```Steam++_vx.y.z_linux_arm64.rpm``` +- macOS + - x64 + - ```Steam++_vx.y.z_macos_x64.pkg``` + - Arm64 + - ```Steam++_vx.y.z_macos_arm64.pkg``` +- Android + - Arm64 + - ```Steam++_vx.y.z_android_arm64.apk``` + +### Program File Structure +- Windows + - dotnet 共享运行时,删除后将使用已安装的运行时,此目录参考 ```C:\Program Files\dotnet```,可自行升级运行库小版本号,二进制兼容 + - host + - fxr + - x.y.z + - hostfxr.dll + - shared + - Microsoft.AspNetCore.App + - x.y.z + - Microsoft.NETCore.App + - x.y.z + - native + - win-x64 + - 7z.dll + - av_libglesv2.dll + - e_sqlite3.dll + - libHarfBuzzSharp.dll + - libSkiaSharp.dll + - WebView2Loader.dll + - WinDivert.dll + - WinDivert64.sys + - assemblies 主模块程序集 + - modules 可选模块 + - ~~Update 自更新模块,删除该文件夹后禁用更新~~ + - Steam++.Update.exe 更新程序,CDN 分发更新包,下载与解压在主程序中,此进程仅退出主程序执行覆盖操作 + - Accelerator 网络加速 + - Steam++.Accelerator.exe 控制台子服务进程,使用匿名管道与主进程通信,无参数或指定某个参数(待定)启动时可读取配置文件启动加速,可完全独立运行,ASP.NET Core Web API 项目,可支持 Docker + - Steam++.Plugins.Accelerator.dll 插件程序集 + - AccountSwitch 账号切换 + - Steam++.Plugins.AccountSwitch.dll + - ~~ArchiSteamFarm~~ + - Steam++.ArchiSteamFarm.exe + - Steam++.Plugins.ArchiSteamFarm.dll + - GameList 库存游戏 + - Steam++.Plugins.GameList.dll + - LocalAuth 本地令牌 + - Steam++.Plugins.LocalAuth.dll + - GameTools 游戏工具 + - Steam++.Plugins.GameTools.dll + - Steam++.exe (主启动程序).NET Framework 二进制主程序 + - Steam++.exe.config 使用该配置文件以允许在 .NET Framework 3.5 ~ 4.8.1 中任意版本中兼容运行(从 Windows 7 ~ 11 中所有系统自带运行时) + - ~~Steam++.Uninstall.exe 卸载程序(WinForms?AOT?)~~ +- Linux + - dotnet 共享运行时,删除后将使用已安装的运行时,此目录参考 [aspnetcore-runtime-7.0.7-linux-x64.tar.gz](https://download.visualstudio.microsoft.com/download/pr/c1e2729e-ab96-4929-911d-bf0f24f06f47/1b2f39cbc4eb530e39cfe6f54ce78e45/aspnetcore-runtime-7.0.7-linux-x64.tar.gz),可自行升级运行库小版本号,二进制兼容 + - host + - fxr + - x.y.z + - hostfxr.dll + - shared + - Microsoft.AspNetCore.App + - x.y.z + - Microsoft.NETCore.App + - x.y.z + - native + - linux-x64 + - libe_sqlite3.so + - libHarfBuzzSharp.so + - libSkiaSharp.so + - Steam++ (主启动程序) AppHost + - assemblies 主模块程序集 + - modules 可选模块 + - Accelerator 网络加速 + - Steam++.Accelerator 控制台子服务进程,使用匿名管道与主进程通信,无参数或指定某个参数(待定)启动时可读取配置文件启动加速,可完全独立运行,ASP.NET Core Web API 项目,可支持 Docker + - Steam++.Plugins.Accelerator 插件程序集 + - AccountSwitch 账号切换 + - Steam++.Plugins.AccountSwitch.dll + - ~~ArchiSteamFarm~~ + - Steam++.ArchiSteamFarm.exe + - Steam++.Plugins.ArchiSteamFarm.dll + - GameList 库存游戏 + - Steam++.Plugins.GameList.dll + - LocalAuth 本地令牌 + - Steam++.Plugins.LocalAuth.dll +- macOS + - Steam++.app (包含 arm64 与 x64 以及 .NET Runtime x2 与 ASP.NET Core Runtime 文件大小应该较大) + - Contents + - Info.plist + - MacOS + - Steam++ (主启动程序) + - MonoBundle + - dotnet 运行时,其中 Microsoft.NETCore.App 与 tfm macos 中将存在两份重复的,此目录参考 [aspnetcore-runtime-7.0.7-osx-arm64.tar.gz](https://ownload.visualstudio.microsoft.com/download/pr/97bb1f46-3b87-4475-bc06-e5cb7f4e6d0a/3e36e0c804c5805d2fe856505d7b1b3c/aspnetcore-runtime-7.0.7-osx-arm64.tar.gz) + - host + - fxr + - x.y.z + - hostfxr.dll + - shared + - Microsoft.AspNetCore.App + - x.y.z + - Microsoft.NETCore.App + - x.y.z + - modules 可选模块 + - Accelerator 网络加速 + - Steam++.Accelerator 控制台子服务进程,使用匿名管道与主进程通信,无参数或指定某个参数(待定)启动时可读取配置文件启动加速,可完全独立运行,ASP.NET Core Web API 项目,可支持 ocker + - Steam++.Plugins.Accelerator.dll 插件程序集 + - AccountSwitch 账号切换 + - Steam++.Plugins.AccountSwitch.dll + - ~~ArchiSteamFarm~~ + - Steam++.ArchiSteamFarm.dll + - Steam++.Plugins.ArchiSteamFarm.dll + - GameList 库存游戏 + - Steam++.Plugins.GameList.dll + - LocalAuth 本地令牌 + - Steam++.Plugins.LocalAuth.dll + - PkgInfo + - Resources + + + + + +### 安装 ASP.NET Core 运行时 & .NET 运行时 +- Windows + - [使用 Windows 包管理器 (winget) 进行安装](https://learn.microsoft.com/zh-cn/dotnet/core/install/windows?tabs=net70#install-with-windows-installer) + ```winget install Microsoft.DotNet.AspNetCore.7``` +- Linux + - [使用安装脚本或通过提取二进制文件在 Linux 上安装 .NET](https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-scripted-manual) + ```wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh``` + ```sudo chmod +x ./dotnet-install.sh``` + ```./dotnet-install.sh --version latest --runtime aspnetcore``` + - [排查与 Linux 上缺少文件相关的 .NET 错误](https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-package-mixup?pivots=os-linux-redhat) +- macOS + - [使用 Bash 自动化安装](https://learn.microsoft.com/zh-cn/dotnet/core/install/macos#install-with-bash-automation) + ```./dotnet-install.sh --channel 7.0 --runtime aspnetcore``` + + +### 自定义 .NET Host 文档 +- [编写自定义 .NET 主机以从本机代码控制 .NET 运行时](https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/netcore-hosting) +- [.NET 分发打包](https://learn.microsoft.com/zh-cn/dotnet/core/distribution-packaging) +- [环境变量 - 指定 .NET 运行时的位置](https://learn.microsoft.com/zh-cn/dotnet/core/tools/dotnet-environment-variables#dotnet_root-dotnet_rootx86) \ No newline at end of file diff --git a/src/BD.WTTS.Client.AppHost/Program.cs b/src/BD.WTTS.Client.AppHost/Program.cs index a2ac0483e..2f8bbf7e4 100644 --- a/src/BD.WTTS.Client.AppHost/Program.cs +++ b/src/BD.WTTS.Client.AppHost/Program.cs @@ -13,7 +13,7 @@ static unsafe partial class Program { public const string dotnet_version_major = "7"; public const string dotnet_version_minor = "0"; - public const string dotnet_version_build = "5"; + public const string dotnet_version_build = "8"; public const string dotnet_version = $"{dotnet_version_major}.{dotnet_version_minor}.{dotnet_version_build}"; const string dotnet_runtime = "Microsoft.NETCore.App"; diff --git a/src/README.md b/src/README.md index 1db93748a..02446ec22 100644 --- a/src/README.md +++ b/src/README.md @@ -107,183 +107,4 @@ TODO // ReSharper disable once CheckNamespace namespace Microsoft.Extensions.DependencyInjection ---> - -### 自定义 .NET Host 文档 -- [编写自定义 .NET 主机以从本机代码控制 .NET 运行时](https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/netcore-hosting) -- [.NET 分发打包](https://learn.microsoft.com/zh-cn/dotnet/core/distribution-packaging) -- [环境变量 - 指定 .NET 运行时的位置](https://learn.microsoft.com/zh-cn/dotnet/core/tools/dotnet-environment-variables#dotnet_root-dotnet_rootx86) - -### 程序目录结构(Windows) -- dotnet 共享运行时,删除后将使用已安装的运行时,此目录参考 ```C:\Program Files\dotnet```,可自行升级运行库小版本号,二进制兼容 - - host - - fxr - - x.y.z - - hostfxr.dll - - shared - - Microsoft.AspNetCore.App - - x.y.z - - Microsoft.NETCore.App - - x.y.z -- native - - win-x64 - - 7z.dll - - av_libglesv2.dll - - e_sqlite3.dll - - libHarfBuzzSharp.dll - - libSkiaSharp.dll - - WebView2Loader.dll - - WinDivert.dll - - WinDivert64.sys -- assemblies 主模块程序集 -- modules 可选模块 - - ~~Update 自更新模块,删除该文件夹后禁用更新~~ - - Steam++.Update.exe 更新程序,CDN 分发更新包,下载与解压在主程序中,此进程仅退出主程序执行覆盖操作 - - Accelerator 网络加速 - - Steam++.Accelerator.exe 控制台子服务进程,使用匿名管道与主进程通信,无参数或指定某个参数(待定)启动时可读取配置文件启动加速,可完全独立运行,ASP.NET Core Web API 项目,可支持 Docker - - Steam++.Plugins.Accelerator.dll 插件程序集 - - AccountSwitch 账号切换 - - Steam++.Plugins.AccountSwitch.dll - - ~~ArchiSteamFarm~~ - - Steam++.ArchiSteamFarm.exe - - Steam++.Plugins.ArchiSteamFarm.dll - - GameList 库存游戏 - - Steam++.Plugins.GameList.dll - - LocalAuth 本地令牌 - - Steam++.Plugins.LocalAuth.dll - - GameTools 游戏工具 - - Steam++.Plugins.GameTools.dll -- Steam++.exe (主启动程序).NET Framework 二进制主程序 -- Steam++.exe.config 使用该配置文件以允许在 .NET Framework 3.5 ~ 4.8.1 中任意版本中兼容运行(从 Windows 7 ~ 11 中所有系统自带运行时) -- ~~Steam++.Uninstall.exe 卸载程序(WinForms?AOT?)~~ - -### 程序目录结构(Linux) -- dotnet 共享运行时,删除后将使用已安装的运行时,此目录参考 [aspnetcore-runtime-7.0.7-linux-x64.tar.gz](https://download.visualstudio.microsoft.com/download/pr/c1e2729e-ab96-4929-911d-bf0f24f06f47/1b2f39cbc4eb530e39cfe6f54ce78e45/aspnetcore-runtime-7.0.7-linux-x64.tar.gz),可自行升级运行库小版本号,二进制兼容 - - dotnet - - host - - fxr - - x.y.z - - hostfxr.dll - - shared - - Microsoft.AspNetCore.App - - x.y.z - - Microsoft.NETCore.App - - x.y.z -- native - - linux-x64 - - libe_sqlite3.so - - libHarfBuzzSharp.so - - libSkiaSharp.so -- Steam++.sh (主启动程序) -- assemblies 主模块程序集 -- modules 可选模块 - - Accelerator 网络加速 - - Steam++.Accelerator.dll 控制台子服务进程,使用匿名管道与主进程通信,无参数或指定某个参数(待定)启动时可读取配置文件启动加速,可完全独立运行,ASP.NET Core Web API 项目,可支持 Docker - - Steam++.Plugins.Accelerator.dll 插件程序集 - - AccountSwitch 账号切换 - - Steam++.Plugins.AccountSwitch.dll - - ~~ArchiSteamFarm~~ - - Steam++.ArchiSteamFarm.exe - - Steam++.Plugins.ArchiSteamFarm.dll - - GameList 库存游戏 - - Steam++.Plugins.GameList.dll - - LocalAuth 本地令牌 - - Steam++.Plugins.LocalAuth.dll - - - -### 程序目录结构(macOS) -- Steam++.app (包含 arm64 与 x64 以及 .NET Runtime x2 与 ASP.NET Core Runtime 文件大小应该较大) - - Contents - - Info.plist - - MacOS - - Steam++ (主启动程序) - - MonoBundle - - dotnet 运行时,其中 Microsoft.NETCore.App 与 tfm macos 中将存在两份重复的,此目录参考 [aspnetcore-runtime-7.0.7-osx-arm64.tar.gz](https://download.visualstudio.microsoft.com/download/pr/97bb1f46-3b87-4475-bc06-e5cb7f4e6d0a/3e36e0c804c5805d2fe856505d7b1b3c/aspnetcore-runtime-7.0.7-osx-arm64.tar.gz) - - dotnet - - host - - fxr - - x.y.z - - hostfxr.dll - - shared - - Microsoft.AspNetCore.App - - x.y.z - - Microsoft.NETCore.App - - x.y.z - - modules 可选模块 - - Accelerator 网络加速 - - Steam++.Accelerator.dll 控制台子服务进程,使用匿名管道与主进程通信,无参数或指定某个参数(待定)启动时可读取配置文件启动加速,可完全独立运行,ASP.NET Core Web API 项目,可支持 Docker - - Steam++.Plugins.Accelerator.dll 插件程序集 - - AccountSwitch 账号切换 - - Steam++.Plugins.AccountSwitch.dll - - ~~ArchiSteamFarm~~ - - Steam++.ArchiSteamFarm.dll - - Steam++.Plugins.ArchiSteamFarm.dll - - GameList 库存游戏 - - Steam++.Plugins.GameList.dll - - LocalAuth 本地令牌 - - Steam++.Plugins.LocalAuth.dll - - PkgInfo - - Resources - -对子服务进程二进制程序的 RID 使用 ```RuntimeInformation.ProcessArchitecture.ToString()``` -通过 ```PublishFolderType="Assembly"``` 指定 Copy 到 MonoBundle 中,没有其他选项能够将其放在 MacOS 文件夹中 - -### 应用分发(安装包程序方案) -- Steam 软件商店 - - 待上架 - - 对接 API 加入 CI/CD 自动化 -- Windows - - 应用商店分发受限于网络情况,一些用户连不上 Microsoft Store,比如应用商店显示错误 ```我们这边出了错 0x80240438```😅 - - msix 格式不够简单方便 - - msi 格式在小部分用户设备上会因权限问题导致 2502/2503 错误 - - NSIS 现使用的自定义方面不够好 - - exe 单文件 Setup.exe 最合适,使用 net4.0 WinForms Or net8 WinForms AOT? UI 可参考 .NET Runtime 安装界面 - - UI 多语言支持 - - 注册表写入软件信息 - - 7z 解压程序文件(进度条) -- Linux - - tar.zst 压缩包 - - deb Debian 软件包 - - rpm RPM 包 -- macOS - - dmg 磁盘镜像安装包 -- iOS - - AppStore - - 待上架 - - 对接 API 加入 CI/CD 自动化 -- Android - - Google Play - - 待上架 - - 酷安 - - 待上架 - - 手机厂商应用商店 - - TODO - -### 📁 存储空间 -- AppData - - Microsoft Store ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalState``` - - Windows ```\AppData``` or ```%LocalAppData%\Steam++``` - - macOS ```~/Library/Steam++``` - - Linux ```$XDG_DATA_HOME/Steam++``` or ```$HOME/.local/share/Steam++``` - - Android ```/data/data/net.steampp.app/files``` -- Cache - - Microsoft Store ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalCache``` - - Windows ```\Cache``` or ```%Tmp%\Steam++``` - - macOS ```~/Library/Caches/Steam++``` - - Linux ```$XDG_CACHE_HOME/Steam++``` or ```$HOME/.cache/Steam++``` - - Android ```/data/data/net.steampp.app/cache``` -- Logs - - Microsoft Store ```%USERPROFILE%\AppData\Local\Packages\4651ED44255E.47979655102CE_k6txddmbb6c52\LocalCache\Logs``` - - Windows ```\Logs``` or ```%Tmp%\Steam++\Logs``` - - macOS ```~/Library/Caches/Steam++/Logs``` - - Linux ```$XDG_CACHE_HOME/Steam++/Logs``` or ```$HOME/.cache/Steam++/Logs``` - - Android ```/data/data/net.steampp.app/cache/Logs``` \ No newline at end of file +--> \ No newline at end of file