Compare commits

...
Author SHA1 Message Date
Aigio Liu d8f36eb207 🚧 Android 2023-09-27 16:19:11 +08:00
Aigio Liu 8cb63f0f94 🚧 Android 2023-09-26 19:38:58 +08:00
Aigio Liu 0cb0981105 🚧 Android 2023-09-26 16:30:51 +08:00
Aigio Liu 7f06198bb6 ⬆️ DirectoryPackages 2023-09-25 14:15:25 +08:00
Aigio Liu 8202df3a65 🚧 Misc 2023-09-25 13:40:19 +08:00
Aigio Liu 5033261a64 ⬆️ DirectoryPackages 2023-09-25 13:27:41 +08:00
Aigio Liu 191c957a23 🚧 3.0.0-rc.3 2023-09-25 13:21:55 +08:00
Aigio Liu 9eb5def6f0 🚧 Misc 2023-09-23 16:40:51 +08:00
Mossimo 2467ce9bb4 🐛 Fix macOS 加速错误 等待输入密码 过长导致 IPC 异常闪退 2023-09-23 15:41:33 +08:00
Aigio Liu f968f3f66a 🐛 SetBootAutoStart PrivilegedProcess 2023-09-23 13:50:08 +08:00
Aigio Liu 511a2fa366 🚧 Migrations.MoveAccelerator 2023-09-23 13:24:30 +08:00
RMBGAME 5ed54bd72e 🚧 托盘 2023-09-22 17:19:32 +08:00
Aigio Liu 91ecfa342a 🚧 ReverseProxy 2023-09-22 15:38:42 +08:00
RMBGAME be1481d063 ✨ 托盘改进 2023-09-22 15:18:59 +08:00
Aigio Liu fce80b18ee 🐛 GameAccount 2023-09-22 10:30:28 +08:00
Aigio Liu 211daa428a 🎨 Authenticator 2023-09-21 19:19:06 +08:00
Aigio Liu 781fd9489f 🐛 Authenticator 2023-09-21 18:52:45 +08:00
Aigio Liu 680586b6e9 🐛 InitializeScriptAsync 2023-09-21 18:14:59 +08:00
Aigio Liu 35ee526efc 🐛 -clt steam -account 2023-09-21 15:08:35 +08:00
Aigio Liu 2f0090d571 ⬆️ DirectoryPackages 2023-09-21 14:52:26 +08:00
Aigio Liu 2f6ad43382 🐛 Misc 2023-09-21 14:31:57 +08:00
Aigio Liu 20056583a3 🚧 ASF 2023-09-20 16:50:11 +08:00
Aigio Liu 77dc0abd2a 🐛 Accelerator 2023-09-20 14:25:31 +08:00
Aigio Liu ddf6486af6 🚧 ASF 2023-09-20 14:25:31 +08:00
Aigio Liu 0229003e19 🐛 Cert 2023-09-19 16:37:43 +08:00
Aigio Liu 8486edf6b8 🎨 Cert 2023-09-19 16:01:03 +08:00
RMBGAME fe941e1271 ✨ 托盘改进 2023-09-19 15:44:40 +08:00
RMBGAME 81129afc8f 🚧 托盘菜单 2023-09-18 18:51:08 +08:00
Aigio Liu 566cc4c017 🚧 Misc 2023-09-18 17:56:06 +08:00
Aigio Liu 0925ec9104 🐛 DoH 2023-09-16 18:03:02 +08:00
Aigio Liu cac4a9370a 🧪 DoH 2023-09-16 17:42:27 +08:00
Aigio Liu e32fade0ea 🚧 DNS over HTTPS 2023-09-16 15:52:42 +08:00
Aigio Liu f6554a3b21 🎨 IDnsAnalysisService 2023-09-16 12:20:45 +08:00
Aigio Liu d00572d97d 💄 DNS over HTTPS 2023-09-16 11:44:05 +08:00
Aigio Liu 56e3563634 ✨ DNS over HTTPS 2023-09-15 19:42:06 +08:00
Aigio Liu 9355c317ac 🔥 StartAsAdministratorByBypassUAC 2023-09-15 14:22:03 +08:00
Aigio Liu 35b5edd09a 🚧 Misc 2023-09-14 16:31:05 +08:00
Aigio Liu ab22ea1113 🐛 GameAccount 2023-09-14 16:07:45 +08:00
Aigio Liu 62c015ad0b 🚧 Misc 2023-09-14 15:38:57 +08:00
Aigio Liu 195f5269be ⬆️ .NET 7.0.11 & SDK 7.0.401 & VS 17.7.4 2023-09-14 14:32:43 +08:00
Aigio Liu b1fa5b4a4d 🐛 AppUpdate 2023-09-14 12:06:58 +08:00
Mossimo 7778854007 🐛修复迁移后脚本缓存路径问题 2023-09-13 18:00:25 +08:00
Aigio Liu 68bbd8b3e3 🐛 macOS AppCenter 2023-09-13 17:33:15 +08:00
Aigio Liu 137a2dcde9 🚧 Misc 2023-09-12 19:08:44 +08:00
Aigio Liu ef239c5dc2 🐛 SetBootAutoStart 2023-09-12 19:03:23 +08:00
ff m 1fd4d4e35a 🐛 修复 macOS 代码签名 2023-09-12 16:41:12 +08:00
Aigio Liu a71ff13d49 🐛 Misc 2023-09-12 14:46:24 +08:00
Aigio Liu 56f9be173a 🐛 dotnetfx 2023-09-12 14:36:44 +08:00
Aigio Liu 6e3e84c9c3 🐛 2023-09-12 14:27:04 +08:00
RMBGAME a55e28600f 🐛 SDA某些情况下导入错误修复 2023-09-12 13:56:34 +08:00
RMBGAME 31dd805a6d 修改启动时加速UI 2023-09-11 21:49:50 +08:00
Aigio Liu aeac99fc1c 🎨 IPCMainProcessServiceImpl / IpcLogger 2023-09-09 10:36:07 +08:00
RMBGAME 5b9bc9e00b 🚑 Misc 2023-09-09 03:17:27 +08:00
RMBGAME 5c3ab25271 🐛 修复因 HTTP/2 导致 discord websocket 验证失败问题 2023-09-09 03:14:37 +08:00
RMBGAME 1e8d373df5 🐛 修复最小化启动无效 2023-09-08 17:55:10 +08:00
Aigio Liu f226aeb8a9 🐛 fix #2830 2023-09-08 17:41:20 +08:00
Aigio Liu 3f0422cfbb ✨ pub hash command 2023-09-08 17:05:05 +08:00
john.jiang af89dddc4c 🎨 doh 2023-09-08 16:19:25 +08:00
Aigio Liu 55f2c519b2 🚧 3.0.207.0 2023-09-08 10:32:22 +08:00
Aigio Liu 527f5fb8a4 🐛 AvaloniaApplicationUpdateServiceImpl 2023-09-08 10:27:04 +08:00
Aigio Liu 8139a7414d 🚧 3.0.0-rc.2 2023-09-08 10:10:16 +08:00
Aigio Liu 0367fc027e 🚧 net35 2023-09-07 21:14:53 +08:00
RMBGAME c80f4de55b 🐛 Misc 2023-09-07 21:13:27 +08:00
Aigio Liu 9c01b74a4b 🐛 OrderBy(KeyValuePair<int, MenuTabItemViewModel> m) 2023-09-07 20:31:16 +08:00
RMBGAME 894f8d4239 🐛 Fix Bugs 2023-09-07 20:26:15 +08:00
ff m 6dcda63be6 🐛迁移 Script 文件夹错误
🐛更换 API 地址
2023-09-07 19:44:55 +08:00
Aigio Liu 7f9840c3ee ✨ TryDeleteRootPathObsoleteFiles 2023-09-07 19:21:06 +08:00
Aigio Liu 8a1b60dcbb 🐛 2023-09-07 18:19:28 +08:00
Aigio Liu 23e62c2fac 🐛 WindowsFileSystem 2023-09-07 16:29:53 +08:00
Aigio Liu ce56e4e1dd 🐛 WindowsFileSystem.InitFileSystemByInstallVersion 2023-09-07 15:58:56 +08:00
Aigio Liu 798efb5873 🐛 WindowsFileSystem 2023-09-07 15:00:40 +08:00
RMBGAME 0261fa4460 📃 2023-09-07 00:56:54 +08:00
RMBGAME fb9faf53af 📃 ReadMe 2023-09-07 00:34:14 +08:00
Aigio Liu ef3006861e 💚 fix Restore Workload 2023-09-06 19:02:55 +08:00
Aigio Liu c3a92d31d2 🐛 OnExit 2023-09-06 18:15:54 +08:00
Aigio Liu f37afe1aa0 🐛 IsConnected 2023-09-06 17:56:11 +08:00
Aigio Liu 7df6b0d007 🚧 IDotNetPublishCommand 2023-09-06 17:33:50 +08:00
RMBGAME 632ddd44e3 sign 2023-09-06 16:52:12 +08:00
RMBGAME 17f03a523c Readme 2023-09-06 16:50:48 +08:00
Aigio Liu f2c1df5b35 🚧 NSIS 2023-09-06 16:49:38 +08:00
Aigio Liu 166e258b38 🎨 NSIS 2023-09-06 15:45:54 +08:00
Aigio Liu f95d1c3515 🚧 windows dekstop bridge 2023-09-05 21:44:12 +08:00
Aigio Liu bf5dbf9435 🚧 windows dekstop bridge 2023-09-05 20:39:20 +08:00
Aigio Liu 66a92f8363 🐛 EntryPointExe 2023-09-05 19:40:39 +08:00
Aigio Liu 5dec270ff5 🐛 NativeLibrary.SetDllImportResolver 2023-09-05 19:11:16 +08:00
Mossimo ae5b881b30 🐛 Mac 原生库环境变量路径 Git Crlf lf 换行符问题手动复制 build 中 Linux 到发布 ShellScript/Linux 2023-09-05 18:48:51 +08:00
RMBGAME ac84585630 🚧 Misc 2023-09-05 18:09:55 +08:00
Aigio Liu 16e766f54a ✨ BD.WTTS.Client.AppHost.Bridge.Package 2023-09-05 17:44:27 +08:00
Aigio Liu eec99d64c6 🚑 restore RequestCacheRepository 2023-09-05 17:26:19 +08:00
Aigio Liu 2b5892348c 🐛 AppCenter 2023-09-05 17:12:42 +08:00
Aigio Liu 751875b05a 🚑 2023-09-05 16:27:42 +08:00
Aigio Liu a35f612d3d 🐛 AppCenter 2023-09-05 16:21:11 +08:00
john.jiang b45c989062 🎨 fixs 2023-09-05 11:39:57 +08:00
ff m 1c386dd87c 🐛优化环境检测脚本启动加速 检测依赖环境 2023-09-04 19:29:56 +08:00
RMBGAME 8669667118 🐛 脚本为空时提示优化 2023-09-04 18:12:32 +08:00
Aigio 9887b9e125 🐛 AvaloniaApplicationUpdateServiceImpl.OnExistNewVersion 2023-09-04 18:09:36 +08:00
Aigio afb0dc7319 🐛 IApplication.DeploymentMode 2023-09-04 17:35:05 +08:00
RMBGAME e61ebea90e 🐛 Misc 2023-09-04 14:18:06 +08:00
RMBGAME 3578311463 🐛 Fix Delete Account Toast Error 2023-09-04 14:05:03 +08:00
RMBGAME c383c900f8 ✨ Steam Rich Presence 2023-09-04 13:45:13 +08:00
RMBGAME 4b05d368d6 🐛 Fix PublishTool Pri Bug 2023-09-04 07:42:08 +08:00
RMBGAME 989ed16b00 ⬆️ LiveCharts 2023-09-04 03:10:20 +08:00
RMBGAME 0d2d6d6438 ✨ 托盘 退出 Steam 2023-09-04 02:27:03 +08:00
Aigio Liu 62909aa651 🚧 PublishTool 2023-09-03 17:18:31 +08:00
Aigio Liu c0d735d9cf ➕ Facepunch.Steamworks 2023-09-03 17:18:31 +08:00
RMBGAME 93531ea3d9 🐛 Misc 2023-09-03 12:58:47 +08:00
RMBGAME e937ab1b35 🐛 Misc 2023-09-03 10:59:02 +08:00
RMBGAME a730339153 🐛 一个奇怪的 CancellationToken 问题修复 2023-09-02 18:40:17 +08:00
Aigio Liu c4a7dd7994 🚧 3.0.0-rc.1 2023-09-02 17:34:56 +08:00
Aigio Liu 7366e2c904 🚧 Misc 2023-09-02 17:28:32 +08:00
ff m 5215e3d613 🐛打包卸载 启动 脚本 2023-09-02 14:27:58 +08:00
ff m 1c454123b8 ✨检查环境脚本 卸载安装脚本 2023-09-02 14:04:40 +08:00
RMBGAME 18080285bf 💄 Misc 2023-09-02 12:23:22 +08:00
Aigio Liu 1049355476 ✨ Application Crash(WPFMessageBox) 2023-09-02 02:22:09 +08:00
Aigio Liu dc74c2ae10 🚧 Misc 2023-09-02 02:02:14 +08:00
ff m b32cb40949 🐛 修复 系统版本获取字段 2023-09-01 20:49:47 +08:00
Aigio Liu 98324d95a8 🐛 WriteDefaultHostsContent & DisablePluginsAssemblyLoadContext 2023-09-01 19:56:20 +08:00
Aigio Liu bed2fbb98d 🐛 System.InvalidOperationException: No service for type 'BD.WTTS.Settings.Abstractions.IPartialGameLibrarySettings' has been registered. 2023-09-01 17:32:45 +08:00
Aigio Liu dd09e37048 🐛 HostsFileServiceImpl Ipc 2023-09-01 17:09:33 +08:00
Aigio Liu d359392fc0 ✨ stmupload 2023-09-01 15:24:44 +08:00
ff m 4601987cb4 🐛脚本安装默认启用 2023-09-01 15:17:25 +08:00
RMBGAME 7c21e8454e 🐛 Fixed Bugs 2023-09-01 13:40:46 +08:00
RMBGAME 6f60f10fc8 🐛 Fixed Bugs 2023-09-01 13:24:43 +08:00
RMBGAME 41b51f4e0a 🐛 Steam 令牌 闪退问题 2023-09-01 11:22:47 +08:00
Aigio 83952d6d76 🚧 3.0.0-preview.7 2023-09-01 06:43:18 +08:00
Aigio 44b4a3b05e 🐛 RunSingleInstancePipeServer 2023-09-01 06:29:54 +08:00
Aigio ac91872815 ✨ HostsTest 2023-09-01 05:09:48 +08:00
RMBGAME 2795dbac5f 🐛 Misc 2023-08-31 18:43:36 +08:00
ff m 4e2fe256ed 🐛 检测且初始化 nssdb 2023-08-31 18:33:54 +08:00
Aigio 83c515542c 🔥 StartAsAdministratorByBypassUAC 2023-08-31 18:06:35 +08:00
Aigio 0c9f25a304 🐛 CSR 2023-08-31 17:29:11 +08:00
Aigio 63be2ba037 ✨ CSR 2023-08-31 17:21:46 +08:00
Aigio 4c464623b8 🚧 3.0.0-preview.6 2023-08-31 04:30:17 +08:00
376 changed files with 15715 additions and 2407 deletions
+1 -1
View File
@@ -62,7 +62,7 @@ jobs:
# run: dotnet workload install wasm-tools
- name: Restore Workload
run: dotnet workload restore
run: dotnet workload restore src\BD.WTTS.Client.Avalonia.App\BD.WTTS.Client.Avalonia.App.csproj
- name: Verify dotnet info
run: dotnet --info
+3
View File
@@ -34,3 +34,6 @@
[submodule "ref/WinAuth"]
path = ref/WinAuth
url = https://github.com/BeyondDimension/WinAuth.git
[submodule "ref/Facepunch.Steamworks"]
path = ref/Facepunch.Steamworks
url = https://github.com/BeyondDimension/Facepunch.Steamworks.git
+18 -12
View File
@@ -5,7 +5,7 @@
[English](./README.en.md) | 简体中文
「Watt Toolkit」是一个开源跨平台的多功能游戏工具箱,此工具的大部分功能都是需要您下载安装 Steam 才能使用。
![Release Download](https://img.shields.io/github/downloads/BeyondDimension/SteamTools/total?style=flat-square)
[![Release Version](https://img.shields.io/github/v/release/BeyondDimension/SteamTools?style=flat-square)](https://github.com/BeyondDimension/SteamTools/releases/latest)
[![GitHub license](https://img.shields.io/github/license/BeyondDimension/SteamTools?style=flat-square)](LICENSE)
@@ -30,6 +30,7 @@
</div>
## 🚀 下载渠道
- [![Steam 商店](./res/brands/steam.jpg)](https://store.steampowered.com/app/2425030)
- [![Microsoft 应用商店](./res/brands/msstore.en.png)](https://apps.microsoft.com/store/detail/watt-toolkit/9MTCFHS560NG?hl=zh-cn&gl=cn)
- [软件官网](https://steampp.net)
- [GitHub 发行版](https://github.com/BeyondDimension/SteamTools/releases)
@@ -41,22 +42,23 @@
详见 [./doc/download-guide.md](./doc/download-guide.md)
## ✨ 功能
全新的 3.0 版本,支持自定义插件功能,以下功能为下载时自带的默认插件,可以自行删除或禁用。
1. 网络加速 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" /> <img src="./res/brands/android.svg" width="16" height="16" />
- ~~使用 [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy) 开源项目进行本地反代来支持更快的访问游戏网站。~~
- 使用 [YARP.ReverseProxy](https://github.com/microsoft/reverse-proxy) 开源项目进行本地反代来支持更快的访问游戏网站。
2. 脚本配置 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" />
- 通过加速服务拦截网络请求将一些 JS 脚本注入在网页中,提供类似网页插件的功能。
3. 账号切换 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" />
- 一键切换已在当前 PC 上登录过的 Steam 账号,与管理家庭共享库排序及禁用等功能。
4. 库存管理 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" />
- 让您直接管理 Steam 游戏库存,可以编辑游戏名称和[自定义封面](https://www.steamgriddb.com),也能解锁以及反解锁 Steam 游戏成就。
- 快速切换已在当前 PC 上登录过的 Steam、Epic、Uplay 等等多平台账号,与管理 Steam 家庭共享库排序及禁用等功能。
4. 库存游戏 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" />
- 直接管理你的 Steam 游戏库存,可以编辑游戏名称和[自定义封面](https://www.steamgriddb.com)。
- 监控 Steam 游戏下载进度实现 Steam 游戏下载完成定时关机功能。
- 模拟运行 Steam 游戏,让您不用安装和下载对应的游戏也能挂游玩时间和 Steam 卡片
- 自助管理 Steam 游戏云存档,随时删除和上传自定义的存档文件至 Steam 云
- 模拟运行 Steam 游戏,让您不用安装和下载对应的游戏也能挂游玩时间和掉落 Steam 卡片
- 自助管理 Steam 游戏云存档,随时删除和上传自定义的存档文件至 Steam 云。
- 解锁以及反解锁 Steam 游戏成就。
5. 本地令牌 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" /> <img src="./res/brands/android.svg" width="16" height="16" />
- 让您的手机令牌统一保存在电脑中,目前仅支持 Steam 令牌,后续会开发支持更多的令牌种类与云同步令牌。
6. 自动挂卡 <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" /> <img src="./res/brands/android.svg" width="16" height="16" />
- 集成 [ArchiSteamFarm](https://github.com/JustArchiNET/ArchiSteamFarm) 在应用内提供 挂机掉落 Steam 集换式卡牌 等功能。
- 让您的手机令牌统一保存在电脑中、支持通用HOTP、TOTP、Steam、Google 等令牌导入。
- 支持 Steam 登录账号自定绑定生成令牌、支持 Steam 批量确认交易功能。
6. ~~自动挂卡(新版本开发中)~~ <img src="./res/brands/windows.svg" width="16" height="16" /> <img src="./res/brands/linux.svg" width="16" height="16" /> <img src="./res/brands/apple.svg" width="16" height="16" /> <img src="./res/brands/android.svg" width="16" height="16" />
- ~~集成 [ArchiSteamFarm](https://github.com/JustArchiNET/ArchiSteamFarm) 在应用内提供 挂机掉落 Steam 集换式卡牌 等功能。~~
7. 游戏工具 <img src="./res/brands/windows.svg" width="16" height="16" />
- 强制游戏窗口使用无边框窗口化、更多功能待开发。
@@ -74,8 +76,12 @@
## 🧩 截图
<img src="./res/screenshots/screenshot-windows-accelerator.webp" width="800" />
<br/>
<img src="./res/screenshots/screenshot-windows-gameaccount.webp" width="800" />
<br/>
<img src="./res/screenshots/screenshot-android-authenticator.png" width="800" />
<img src="./res/screenshots/screenshot-windows-gamelist.webp" width="800" />
<br/>
<br/>
<!--<img src="./res/screenshots/screenshot-android-authenticator.png" width="800" />-->
## 从移动端 Steam App 导入令牌指南
- [Android 添加本地令牌(Xposed)](https://github.com/BeyondDimension/SteamTools/issues/2276)
+902 -21
View File
File diff suppressed because it is too large Load Diff
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
run_path=$(dirname "$0")
dotnet_path="$run_path/dotnet"
dotnet_exec="$dotnet_path/dotnet"
export DOTNET_ROOT="$dotnet_path"
link_exec="$run_path/Steam++"
# 判断符号链接是否存在
if [ -L "$link_exec" ]; then
echo "符号链接 $link_exec 已存在"
else
rm -rf "$link_exec" 2>/dev/null
echo "创建符号链接 $dotnet_exec 到 $link_exec"
ln -s "$dotnet_exec" "$link_exec"
chmod +x "$link_exec"
fi
"$link_exec" "$run_path/assemblies/Steam++.dll" "$@"
exit
+58
View File
@@ -0,0 +1,58 @@
#!/bin/bash
base_path="$HOME/WattToolkit"
export LC_ALL=en_US.UTF-8
if [ "$1" = "-c" ]; then
# 只验证 certutil 是否可用
if command -v certutil &>/dev/null; then
exit 200
else
echo "请手动安装 certutil 工具。"
exit 1
fi
else
Install_certutil() {
# 判断发行版类型
if command -v certutil &>/dev/null; then
echo "certutil 工具已安装。"
else
echo "证书导入以及验证需要使用 certutil 工具。"
# 判断包管理器
if command -v apt &>/dev/null; then
# 使用 apt (Debian/Ubuntu)
sudo apt update
sudo apt install -y libnss3-tools
elif command -v dnf &>/dev/null; then
# 使用 dnf (Fedora)
sudo dnf install -y nss-tools
elif command -v yum &>/dev/null; then
# 使用 yum (CentOS/Red Hat)
sudo yum install -y nss-tools
elif command -v pacman &>/dev/null; then
# 使用 pacman (Arch Linux)
# sudo pacman -S nss
echo "请手动安装 certutil 工具。"
exit 1
else
echo "请手动安装 certutil 工具。"
exit 1
fi
echo "certutil 工具已安装。"
fi
}
certutil_Init() {
certutil -d sql:$HOME/.pki/nssdb -L
ret=$?
if [ $ret -ne 0 ]; then
echo "即将初始化 certutil sql:\$HOME/.pki/nssdb"
mkdir -p sql:$HOME/.pki
mkdir -p sql:$HOME/.pki/nssdb
chmod 700 sql:$HOME/.pki/nssdb
certutil -d sql:$HOME/.pki/nssdb -N --empty-password
else
echo "certutil nssdb 正常"
fi
}
Install_certutil
certutil_Init
exit 0
fi
+16 -19
View File
@@ -6,7 +6,7 @@ appVer_path="$base_path/WattToolkit.AppVer"
exec_name="Steam++"
tar_name="WattToolkit.tgz"
tar_path="$base_path/$tar_name"
base_url="https://steampp.mossimo.net:8800"
base_url="https://api.steampp.net"
architecture=1
app_name="Watt Toolkit"
PROCESS_NAMES=("$exec_name" "$app_name")
@@ -40,6 +40,19 @@ Install_certutil() {
echo "certutil 工具已安装。"
fi
}
certutil_Init() {
certutil -d sql:$HOME/.pki/nssdb -L
ret=$?
if [ $ret -ne 0 ]; then
echo "即将初始化 certutil sql:\$HOME/.pki/nssdb"
mkdir -p sql:$HOME/.pki
mkdir -p sql:$HOME/.pki/nssdb
chmod 700 sql:$HOME/.pki/nssdb
certutil -d sql:$HOME/.pki/nssdb -N --empty-password
else
echo "certutil nssdb 正常"
fi
}
Install_jq() {
# Check if jq is already installed
if command -v jq &>/dev/null; then
@@ -139,7 +152,7 @@ Get_NewVer() {
esac
# 获取发行版信息
read -r os_version <<<"$(cat /etc/os-release | grep -E 'VERSION=' | awk -F'=' '{ print $2 }' | tr -d '"')"
read -r os_version <<<"$(cat /etc/os-release | grep -E 'VERSION_ID=' | awk -F'=' '{ print $2 }' | tr -d '"')"
# 如果 VERSION 为空,则使用 BUILD_ID 填充
if [ -z "$os_version" ]; then
@@ -270,23 +283,6 @@ Decompression() {
else
chmod +x "$dotnet_exec"
fi
rm "$base_path/start.sh"
rm "$base_path/Steam++"
echo "#!/bin/bash
run_path=\$(dirname \"\$0\")
dotnet_path=\"\$run_path/dotnet\"
dotnet_exec=\"\$dotnet_path/dotnet\"
export DOTNET_ROOT=\"\$dotnet_path\"
link_exec=\"\$run_path/Steam++\"
# 判断符号链接是否存在
if [ ! -L \"\$link_exec\" ]; then
echo \"创建符号链接 \$dotnet_exec 到 \$link_exec\"
ln -s \"\$dotnet_exec\" \"\$link_exec\"
else
echo \"符号链接 \$link_exec 已存在\"
fi
\"\$link_exec\" \"\$run_path/assemblies/Steam++.dll\" \"\$@\"
exit" >"$base_path/$exec_name.sh"
chmod +x "$base_path/$exec_name.sh"
}
@@ -294,6 +290,7 @@ exit" >"$base_path/$exec_name.sh"
Install_certutil
Install_zenity
Install_jq
certutil_Init
#版本检查更新;
Get_NewVer
+60
View File
@@ -0,0 +1,60 @@
#!/bin/bash
base_path="$HOME/WattToolkit"
export LC_ALL=en_US.UTF-8
exec_name="Steam++"
app_name="Watt Toolkit"
AppData="$XDG_DATA_HOME/Steam++"
AppData_t="$HOME/.local/share/Steam++"
Cache="$XDG_CACHE_HOME/Steam++"
Cache_t="$HOME/.cache/Steam+"
PROCESS_NAMES=("$exec_name" "$app_name")
Kill_Process() {
# 尝试的次数
Kill_MAX_RETRIES=3
# 循环尝试终止进程
for process_name in "${PROCESS_NAMES[@]}"; do
kill_retry=1
while [ $kill_retry -le $Kill_MAX_RETRIES ]; do
pid=$(pgrep "$process_name")
if [ -n "$pid" ]; then
echo "尝试 $kill_retry: 进程 $process_name 正在运行中。正在终止..."
kill $pid
sleep 2
else
break
fi
kill_retry=$((kill_retry + 1))
done
done
for process_name in "${PROCESS_NAMES[@]}"; do
# 检查是否成功终止进程
if pgrep -x "$process_name" >/dev/null; then
echo "无法终止程序 $process_name。尝试次数已达上限。"
exit 1
else
echo "程序 $process_name 已成功终止。"
fi
done
}
Kill_Process
zenity --question --text="是否删除用户数据" --width=400
# 获取上一个命令的退出码
response=$?
if [ $response -eq 0 ]; then
rm -rfq "$AppData" 2>/dev/null
rm -rfq "$AppData_t" 2>/dev/null
else
echo "保留用户数据方便下次安装。"
echo "如需删除可手动删除该目录:$AppData 或者 $AppData_t"
fi
rm -rfq "$Cache" 2>/dev/null
rm -rfq "$Cache_t" 2>/dev/null
rm -rfq "$base_path" 2>/dev/null
rm -rfq "$HOME/Desktop/Watt Toolkit.desktop" 2>/dev/null
zenity --info --text="卸载完成!" --width=300
+27 -12
View File
@@ -1,3 +1,4 @@
#!/bin/bash
# 判断是否提供了 Build_Mode 参数
if [ -z "$1" ]; then
Build_Mode="any" # 如果没有提供参数,则设置默认值为 "any"
@@ -9,10 +10,12 @@ Base_Path="/Users/moxiansheng/Documents/GitHub/SteamTools"
App_Path="$Base_Path/src/BD.WTTS.Client.Avalonia.App"
Publish_Path="bin/Release/Publish/assemblies"
Plugins_Release_Path="bin/Release"
CodesignKey_Name="mossimo code"
App_Modules_Path="$App_Path/$Publish_Path/modules"
echo "编译主程序"
cd "$App_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos -p:CreatePackage=false
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos -p:CreatePackage=false -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
rm -r "$App_Modules_Path"
mkdir -p "$App_Modules_Path"
echo "编译插件"
@@ -34,34 +37,34 @@ Plugins_Accelerator_ReverseProxy_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Acc
cd "$Plugins_Accelerator_ReverseProxy_Path"
# 根据 Build_Mode 执行不同逻辑
if [ "$Build_Mode" = "any" ]; then
dotnet publish -c Release -p:PublishDir="$Publish_Path/arm64" -f net7.0 -r osx-arm64 -p:PublishSingleFile=true --self-contained
dotnet publish -c Release -p:PublishDir="$Publish_Path/x64" -f net7.0 -r osx-x64 -p:PublishSingleFile=true --self-contained
dotnet publish -c Release -p:PublishDir="$Publish_Path/arm64" -f net7.0 -r osx-arm64 -p:PublishSingleFile=true --self-contained -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
dotnet publish -c Release -p:PublishDir="$Publish_Path/x64" -f net7.0 -r osx-x64 -p:PublishSingleFile=true --self-contained -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
lipo -create "$Publish_Path/arm64/Steam++.Accelerator" "$Publish_Path/x64/Steam++.Accelerator" -output "$Publish_Path/Steam++.Accelerator"
Copy_Plugins "$Publish_Path" "Accelerator" "Steam++.Accelerator"
elif [ "$Build_Mode" = "arm64" ]; then
dotnet publish -c Release -p:PublishDir="$Publish_Path/arm64" -f net7.0 -r osx-arm64 -p:PublishSingleFile=true --self-contained
dotnet publish -c Release -p:PublishDir="$Publish_Path/arm64" -f net7.0 -r osx-arm64 -p:PublishSingleFile=true --self-contained -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Publish_Path/arm64" "Accelerator" "Steam++.Accelerator"
elif [ "$Build_Mode" = "x64" ]; then
dotnet publish -c Release -p:PublishDir="$Publish_Path/x64" -f net7.0 -r osx-x64 -p:PublishSingleFile=true --self-contained
dotnet publish -c Release -p:PublishDir="$Publish_Path/x64" -f net7.0 -r osx-x64 -p:PublishSingleFile=true --self-contained -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Publish_Path/x64" "Accelerator" "Steam++.Accelerator"
fi
echo "编译令牌插件"
Plugins_Authenticator_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Authenticator"
cd "$Plugins_Authenticator_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "Authenticator" "BD.WTTS.Client.Plugins.Authenticator.dll"
echo "编译账户插件"
Plugins_GameAccount_Path="$Base_Path/src/BD.WTTS.Client.Plugins.GameAccount"
cd "$Plugins_GameAccount_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "GameAccount" "BD.WTTS.Client.Plugins.GameAccount.dll"
echo "编译游戏库插件"
Plugins_GameList_Path="$Base_Path/src/BD.WTTS.Client.Plugins.GameList"
cd "$Plugins_GameList_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "GameList" "BD.WTTS.Client.Plugins.GameList.dll"
echo "复制插件到程序目录"
@@ -72,10 +75,22 @@ if [ "$Build_Mode" = "any" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/MonoBundle"
elif [ "$Build_Mode" = "arm64" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents/MonoBundle"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Info.plist" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents"
elif [ "$Build_Mode" = "x64" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/osx-x64/Steam++.app/Contents/MonoBundle"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net7.0-macos/osx-x64/Steam++.app/Contents"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Info.plist" "$Plugins_Release_Path/net7.0-macos/osx-arm64/Steam++.app/Contents"
cp -r "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents"
fi
echo "代码签名重新手动签名"
App_Publish_Path="$App_Path/bin/Release/net7.0-macos/Steam++.app"
# #代码签名重新手动签名
codesign --remove-signature "$App_Publish_Path"
codesign --remove-signature "$App_Publish_Path/Contents/MacOS/Steam++"
dylibs=$(find "$App_Publish_Path/Contents/MonoBundle" -type f -name "*.dylib")
for dylib in $dylibs; do
codesign --remove-signature "$dylib"
codesign -f -s "$CodesignKey_Name" "$dylib"
done
codesign -f -s "$CodesignKey_Name" "$App_Publish_Path/Contents/MacOS/Steam++"
codesign -f -s "$CodesignKey_Name" "$App_Publish_Path"
sudo xattr -rd com.apple.quarantine "$App_Publish_Path"
+19 -1
View File
@@ -498,7 +498,7 @@
{
"TypeName": "bool",
"PropertyName": "GameInstalledFilter",
"DefaultValue": "true",
"DefaultValue": "false",
"DefaultValueIsConst": true,
"Summary": "已安装游戏筛选",
"IsRegionOrEndregion": null,
@@ -943,6 +943,24 @@
},
{
"Sharp": "endif"
},
{
"TypeName": "bool",
"PropertyName": "UseDoh",
"DefaultValue": "true",
"DefaultValueIsConst": true,
"Summary": "启用 DNS over HTTPS",
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "string",
"PropertyName": "CustomDohAddres",
"DefaultValue": "null",
"DefaultValueIsConst": true,
"Summary": "自定义 DNS over HTTPS 地址",
"IsRegionOrEndregion": null,
"IsValueType": null
}
],
"Usings": ""
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+21 -8
View File
@@ -5,27 +5,29 @@ namespace BD.WTTS;
/// </summary>
public static partial class AssemblyInfo
{
const string Version2 = "3.0";
/// <summary>
/// 语义化应用程序版本
/// https://semver.org/lang/zh-CN/
/// </summary>
public const string Version = "3.0.0";
public const string Version = $"{Version2}.0";
/// <summary>
/// 预览版本号,范围 1~9
/// 预览版本号,范围 1~9,只增不减
/// </summary>
const string ver_for_preview = "5";
const string ver_for_preview = "7";
/// <summary>
/// RC 版本号,范围 0~9
/// RC 版本号,范围 0~9,只增不减
/// </summary>
const string ver_for_rc = "0";
const string ver_for_rc = "3";
public const string FileVersion = $"{Version}.{ver_for_rc}0{ver_for_preview}";
public const string FileVersion = $"{Version2}.{ver_for_rc}0{ver_for_preview}.0";
//public const string InformationalVersion = Version;
public const string InformationalVersion = $"{Version}-preview.{ver_for_preview}";
//public const string InformationalVersion = $"{Version}-rc.{ver_for_rc}";
//public const string InformationalVersion = $"{Version}-preview.{ver_for_preview}";
public const string InformationalVersion = $"{Version}-rc.{ver_for_rc}";
#if !APP_HOST
/// <summary>
@@ -144,4 +146,15 @@ false
#endif
#if ANDROID
internal static class JavaPkgNames
{
public const string APPLICATION_ID = "net.steampp.app";
public const string Root = APPLICATION_ID + ".";
public const string UI = Root + "ui.";
public const string Activities = UI + "activities.";
public const string Fragments = UI + "fragments.";
public const string Services = Root + "services.";
}
#endif
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
xmlns:desktop2="http://schemas.microsoft.com/appx/manifest/desktop/windows10/2"
IgnorableNamespaces="uap rescap desktop desktop2">
<Identity
Name="4651ED44255E.47979655102CE"
Publisher="CN=A90E406B-B2D3-4A23-B061-0FA1D65C4F66"
Version="3.0.207.0" />
<Properties>
<DisplayName>Watt Toolkit</DisplayName>
<PublisherDisplayName>软妹币玩家</PublisherDisplayName>
<Logo>Images\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="Watt Toolkit"
Description="「Watt Toolkit」是一个开源跨平台的多功能游戏工具箱,此工具的大部分功能都是需要您下载安装 Steam 才能使用。"
BackgroundColor="transparent"
Square150x150Logo="Images\Square150x150Logo.png"
Square44x44Logo="Images\Square44x44Logo.png">
<uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png" Square71x71Logo="Images\SmallTile.png" Square310x310Logo="Images\LargeTile.png" ShortName="Steam++">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo"/>
<uap:ShowOn Tile="wide310x150Logo"/>
<uap:ShowOn Tile="square310x310Logo"/>
</uap:ShowNameOnTiles>
</uap:DefaultTile >
<uap:SplashScreen Image="Images\SplashScreen.png" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="landscape"/>
</uap:InitialRotationPreference>
<uap:LockScreen BadgeLogo="Images\BadgeLogo.png" Notification="badgeAndTileText"/>
</uap:VisualElements>
<Extensions>
<desktop:Extension Category="windows.fullTrustProcess" Executable="Steam++\Steam++.exe" />
<desktop:Extension Category="windows.startupTask" Executable="Steam++\Steam++.exe" EntryPoint="Windows.FullTrustApplication">
<desktop:StartupTask TaskId="BootAutoStartTask" Enabled="true" DisplayName="Steam++ System Boot Run" />
</desktop:Extension>
</Extensions>
</Application>
</Applications>
<Extensions>
<desktop2:Extension Category="windows.firewallRules">
<desktop2:FirewallRules Executable="Steam++\modules\Accelerator\Steam++.Accelerator.exe">
<desktop2:Rule Direction="in" IPProtocol="TCP" Profile="all"/>
<desktop2:Rule Direction="in" IPProtocol="UDP" Profile="all"/>
</desktop2:FirewallRules>
</desktop2:Extension>
</Extensions>
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="allowElevation" />
</Capabilities>
</Package>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<gcServer enabled="false"/>
<GCConserveMemory enabled="9"/>
<legacyCorruptedStateExceptionsPolicy enabled="true"/>
</runtime>
<appSettings>
<add key="d" value="7.0.11"/>
</appSettings>
</configuration>
@@ -0,0 +1,60 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyName>Steam++</AssemblyName>
<TargetFramework>net472</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<IsTrimmable>false</IsTrimmable>
<OutputType Condition="'$(Configuration)'=='Debug'">Exe</OutputType>
<OutputType Condition="'$(Configuration)'=='Release'">WinExe</OutputType>
<Prefer32Bit>false</Prefer32Bit>
<ApplicationManifest>..\BD.WTTS.Client.AppHost\Properties\app.manifest</ApplicationManifest>
<DefineConstants>APP_HOST;WINDOWS_DEKSTOP_BRIDGE;$(DefineConstants)</DefineConstants>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<RootNamespace>BD.WTTS</RootNamespace>
<EnableMsixTooling>true</EnableMsixTooling>
<ServerGarbageCollection>false</ServerGarbageCollection>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon Condition="'$(Configuration)'=='Release'">..\..\res\icons\app\v3\Icon.ico</ApplicationIcon>
<ApplicationIcon Condition="'$(Configuration)'=='Debug'">..\..\res\icons\app\v3\Icon.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" $(TargetFramework.StartsWith('net4')) OR $(TargetFramework.StartsWith('net3')) ">
<SignAssembly>True</SignAssembly>
<AssemblyOriginatorKeyFile>..\..\WattToolkit.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('net4')) OR $(TargetFramework.StartsWith('net3')) ">
<Reference Include="System.Configuration" />
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<AllowedReferenceRelatedFileExtensions>
<!-- Prevent default XML and PDB files copied to output in RELEASE.
Only *.allowedextension files will be included, which doesn't exist in my case.
-->
.allowedextension
</AllowedReferenceRelatedFileExtensions>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Compile Remove="..\ImplicitUsings.Common.cs" />
<Compile Include="..\AssemblyInfo.Constants.cs">
<LinkBase>Properties</LinkBase>
</Compile>
<Compile Include="..\BD.WTTS.Client\Startup\Startup.CompatibilityCheck.cs" />
<Compile Condition="'$(Configuration)'=='Debug'" Include="..\Utils.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\BD.WTTS.Client.AppHost\**\*.cs" />
<Compile Remove="..\BD.WTTS.Client.AppHost\bin\**" />
<Compile Remove="..\BD.WTTS.Client.AppHost\obj\**" />
</ItemGroup>
</Project>
+1 -1
View File
@@ -10,6 +10,6 @@
<legacyCorruptedStateExceptionsPolicy enabled="true"/>
</runtime>
<appSettings>
<add key="d" value="7.0.10"/>
<add key="d" value="7.0.11"/>
</appSettings>
</configuration>
+4 -2
View File
@@ -18,7 +18,7 @@ static unsafe partial class Program
{
dotnet_version_major = "7";
dotnet_version_minor = "0";
dotnet_version_build = "10";
dotnet_version_build = "11";
dotnet_version = $"{dotnet_version_major}.{dotnet_version_minor}.{dotnet_version_build}";
}
@@ -27,7 +27,7 @@ static unsafe partial class Program
//#else
// public const string dotnet_version_major = "7";
// public const string dotnet_version_minor = "0";
// public const string dotnet_version_build = "10";
// public const string dotnet_version_build = "11";
// public const string dotnet_version = $"{dotnet_version_major}.{dotnet_version_minor}.{dotnet_version_build}";
//#endif
@@ -143,7 +143,9 @@ static unsafe partial class Program
Architecture.X64 => "x64",
Architecture.Arm => "Arm32",
Architecture.Arm64 => "Arm64",
#if !NETFRAMEWORK
Architecture.Armv6 => "Armv6",
#endif
_ => throw new ArgumentOutOfRangeException(nameof(architecture), architecture, null),
};
+1 -1
View File
@@ -153,7 +153,7 @@ static class Strings
public static string Error_IncompatibleOS => GetString(l => l switch
{
Language.ChineseSimplified => "此应用程序仅兼容 Windows 11 与 Windows 10 版本 1809(OS 内部版本 17763)或更高版本",
Language.ChineseTraditional => "此應用程序僅相容 Windows 11 與 Windows 10 版本 1809(OS 內部版本17763)或更高版本",
Language.ChineseTraditional => "此應用程序僅相容 Windows 11 與 Windows 10 版本 1809(OS 內部版本 17763)或更高版本",
Language.Spanish => "Esta aplicación solo es compatible con Windows 11 y Windows 10 versión 1809 (versión interna del sistema operativo 17763) o superior",
Language.Italian => "Questa applicazione è compatibile solo con Windows 11 e Windows 10 versione 1809 (versione interna del sistema operativo 17763) o superiore",
Language.Japanese => "このアプリケーションは、Windows 11およびWindows 10 バージョン1809(OS内部バージョン17763)以降にのみ対応しています",
@@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
@@ -0,0 +1 @@
/build
@@ -0,0 +1,69 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "net.steampp.app.design"
compileSdk = 33
defaultConfig {
applicationId = "net.steampp.app.design"
minSdk = 21
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
implementation("androidx.activity:activity-compose:1.7.0")
implementation(platform("androidx.compose:compose-bom:2023.03.00"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00"))
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")
}
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
@@ -0,0 +1,24 @@
package net.steampp.app.design
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("net.steampp.app.design", appContext.packageName)
}
}
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WattToolkit"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.WattToolkit">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,46 @@
package net.steampp.app.design
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import net.steampp.app.design.ui.theme.WattToolkitTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
WattToolkitTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting("Android")
}
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
WattToolkitTheme {
Greeting("Android")
}
}
@@ -0,0 +1,11 @@
package net.steampp.app.design.ui.theme
import androidx.compose.ui.graphics.Color
val Purple80 = Color(0xFFD0BCFF)
val PurpleGrey80 = Color(0xFFCCC2DC)
val Pink80 = Color(0xFFEFB8C8)
val Purple40 = Color(0xFF6650a4)
val PurpleGrey40 = Color(0xFF625b71)
val Pink40 = Color(0xFF7D5260)
@@ -0,0 +1,70 @@
package net.steampp.app.design.ui.theme
import android.app.Activity
import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat
private val DarkColorScheme = darkColorScheme(
primary = Purple80,
secondary = PurpleGrey80,
tertiary = Pink80
)
private val LightColorScheme = lightColorScheme(
primary = Purple40,
secondary = PurpleGrey40,
tertiary = Pink40
/* Other default colors to override
background = Color(0xFFFFFBFE),
surface = Color(0xFFFFFBFE),
onPrimary = Color.White,
onSecondary = Color.White,
onTertiary = Color.White,
onBackground = Color(0xFF1C1B1F),
onSurface = Color(0xFF1C1B1F),
*/
)
@Composable
fun WattToolkitTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
// Dynamic color is available on Android 12+
dynamicColor: Boolean = true,
content: @Composable () -> Unit
) {
val colorScheme = when {
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
val context = LocalContext.current
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
}
darkTheme -> DarkColorScheme
else -> LightColorScheme
}
val view = LocalView.current
if (!view.isInEditMode) {
SideEffect {
val window = (view.context as Activity).window
window.statusBarColor = colorScheme.primary.toArgb()
WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme
}
}
MaterialTheme(
colorScheme = colorScheme,
typography = Typography,
content = content
)
}
@@ -0,0 +1,34 @@
package net.steampp.app.design.ui.theme
import androidx.compose.material3.Typography
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp
// Set of Material typography styles to start with
val Typography = Typography(
bodyLarge = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 16.sp,
lineHeight = 24.sp,
letterSpacing = 0.5.sp
)
/* Other default text styles to override
titleLarge = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 22.sp,
lineHeight = 28.sp,
letterSpacing = 0.sp
),
labelSmall = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Medium,
fontSize = 11.sp,
lineHeight = 16.sp,
letterSpacing = 0.5.sp
)
*/
)
@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/cic_launcher_foreground"/>
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/cic_launcher_foreground"/>
</adaptive-icon>

Some files were not shown because too many files have changed in this diff Show More