Skip to content

Latest commit

 

History

History
244 lines (235 loc) · 12 KB

README.md

File metadata and controls

244 lines (235 loc) · 12 KB

Steam++ v3.X Source Code

🏗️ 项目结构

TODO

自定义 .NET Host 文档

程序目录结构(Windows)

  • dotnet 共享运行时,删除后将使用已安装的运行时,此目录参考 C:\Program Files\dotnet,可自行升级运行库小版本号,二进制兼容
    • host
      • fxr
        • 7.0.x
          • hostfxr.dll
    • shared
      • Microsoft.AspNetCore.App
        • 7.0.x
      • Microsoft.NETCore.App
        • 7.0.x
  • 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)

  • Steam++ 本机二进制主程序
  • libe_sqlite3.so
  • libHarfBuzzSharp.so
  • libSkiaSharp.so
  • native
    • linux-x64
      • TODO?
  • modules 可选模块
    • TODO
改成 Windows 的目录结构,但在 AOT 的 AppHost 中无法加载已使用框架依赖发布的程序集,错误 Initialization for self-contained components is not supported
参考  
https://github.com/dotnet/runtime/issues/35329  
https://github.com/dotnet/runtime/search?l=C%2B%2B&q=get_is_framework_dependent  
https://github.com/dotnet/runtime/blob/6702dc5c7814e624a42ab4615224920a5635beeb/src/native/corehost/runtime_config.cpp  
https://github.com/dotnet/runtime/blob/main/docs/design/features/host-error-codes.md  
https://github.com/dotnet/samples/blob/91355ef22a10ec614a2e8daefd68785066860d57/core/hosting/src/NativeHost/nativehost.cpp  

程序目录结构(macOS)

  • Steam++.app
    • Contents
      • Info.plist
      • MacOS
        • Steam++ 本机二进制主程序
      • MonoBundle
        • Steam++.Accelerator.X64 网络加速控制台子服务进程二进制程序
        • Steam++.Accelerator.Arm64
      • 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