Compare commits

...
Author SHA1 Message Date
RMBGAME e61c240db7 🐛 Misc 2023-11-30 16:51:29 +08:00
john.jiang b1a0f178e5 🎨 fixs 2023-11-30 16:39:18 +08:00
RMBGAME 5d7d00c623 🐛 Misc 2023-11-30 16:18:31 +08:00
john.jiang c9b3191f2b 🎨 遗漏提交 2023-11-30 16:01:47 +08:00
john.jiang e8ac8a52d6 🎨 DefaultSwitchTime fixs 2023-11-30 15:53:41 +08:00
john.jiang 34b4dc9ef7 🎨 Idle Add FastMode 2023-11-30 15:42:34 +08:00
Mossimo 47e16e3fc4 🐛 Linux 排除 游戏工具插件 2023-11-30 15:18:35 +08:00
RMBGAME bbd9623311 🐛 Misc 2023-11-30 14:13:10 +08:00
RMBGAME 30d5a7d14f 🐛 Misc 2023-11-30 14:05:28 +08:00
RMBGAME f8d02c64b0 🐛 修复部分文本显示错误 2023-11-30 13:40:58 +08:00
RMBGAME 80c28caed9 fix #3052 2023-11-30 10:42:41 +08:00
RMBGAME 4d91ce0690 🐛💄 Misc 2023-11-30 10:15:12 +08:00
RMBGAME d92968caf4 🐛 Fix 2023-11-29 21:08:39 +08:00
RMBGAME 57459be38c 🐛 Fix Mac \ Linux GetSteamId Bug 2023-11-29 20:28:29 +08:00
RMBGAME 276f150866 💄 Fix 2023-11-29 19:04:04 +08:00
RMBGAME 209634c73e 🐛 改进挂卡登录账号检测行为 2023-11-29 18:46:30 +08:00
RMBGAME d22a83228f 💄 UI Misc 2023-11-29 14:41:57 +08:00
RMBGAME 8d1e8b2795 🚧 Misc 2023-11-29 12:49:56 +08:00
Mossimo ef728120e4 ↑ Submodule 2023-11-29 11:18:06 +08:00
RMBGAME df158c340e 🚧 Misc 2023-11-28 18:19:47 +08:00
Mossimo bf450815ae 🐛 快速登录官网 2023-11-28 16:17:30 +08:00
Mossimo ee1187482c ✨ 快速登录 Web 2023-11-28 13:55:02 +08:00
RMBGAME 755fda1cd3 🐛 Fix Idle Bugs 2023-11-28 13:40:34 +08:00
john.jiang 72fad6c877 🎨 Strings fixs 2023-11-27 14:34:02 +08:00
john.jiang c6873c255a 🎨 DefaultSwitchTime fixs 2023-11-24 19:15:15 +08:00
RMBGAME ffa89cef34 🐛 Fix 2023-11-24 19:00:44 +08:00
RMBGAME db058c79f6 🐛 Fix 2023-11-24 18:49:16 +08:00
RMBGAME 5be7f5984d 🚧 Misc 2023-11-24 18:35:59 +08:00
john.jiang 2dbe0df4aa 🎨 Idle fixs 2023-11-24 18:12:04 +08:00
Mossimo beef9611f7 🐛 修复 Linux 证书安装 dotnet8 修复 Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 获取路径错误 (程序以前依赖此BUG运行) 2023-11-24 18:11:11 +08:00
RMBGAME b340c365ea 🚧 binding 遗留问题改进 2023-11-24 17:26:01 +08:00
john.jiang 924779d29f 🎨 fixs 2023-11-24 15:54:26 +08:00
john.jiang 5bd73c86e8 🎨 fixs 2023-11-24 15:51:38 +08:00
john.jiang 95052a6af1 🎨 idle fixs 2023-11-24 15:43:32 +08:00
RMBGAME 0aedef2bb6 🐛 Misc 2023-11-24 14:58:13 +08:00
Mossimo 3038f72e49 ✨ 商城用户登录
↑ macos net8.0 build
2023-11-24 14:48:33 +08:00
RMBGAME 710ee5f350 🐛 Fix 2023-11-24 14:16:06 +08:00
RMBGAME 74eb79b7f5 🚧 Tips 2023-11-24 13:44:04 +08:00
RMBGAME f626cbe96c 🐛 Fix 2023-11-24 13:27:24 +08:00
john.jiang bfbb1e36d4 🎨 挂卡完的游戏列表中删除,挂卡顺序切换事件 2023-11-24 12:10:46 +08:00
RMBGAME dc2826af1c 💄 Misc 2023-11-24 00:24:17 +08:00
github-actions[bot] d3dcb913a8 fix Publish .NET 8.x 2023-11-23 23:18:16 +08:00
john.jiang 5a6f18109d 🎨 Idle fixs priorityIdle 2023-11-23 19:37:26 +08:00
john.jiang eb25310530 🎨 fixs 2023-11-23 19:24:53 +08:00
john.jiang db5ff210f9 🎨 idle fixs 2023-11-23 18:52:34 +08:00
RMBGAME b1d7faee8a 🚧 Misc 2023-11-23 17:52:48 +08:00
RMBGAME 0ff633ec8f 🚧 Misc 2023-11-23 17:03:14 +08:00
RMBGAME d0ae475c50 🚧 Fixed 2023-11-23 17:00:13 +08:00
RMBGAME 47cb686ed1 ✨ Idle Complete 2023-11-23 16:11:40 +08:00
john.jiang 053bd2097b 🎨 Idle fixs 2023-11-23 11:48:37 +08:00
RMBGAME c945161805 🚧 Misc 2023-11-22 23:15:57 +08:00
john.jiang 4c848ef373 🎨 Idle fixs 2023-11-22 18:13:51 +08:00
RMBGAME 12d49ef32a 🚧 Misc 2023-11-22 12:15:06 +08:00
john.jiang 3afb735fb9 🎨 ASF Idle settings fixs 2023-11-21 19:02:51 +08:00
RMBGAME f24a828cca 🚧 Misc 2023-11-21 16:06:22 +08:00
RMBGAME d56312246e 🚧 Misc 2023-11-21 15:51:02 +08:00
RMBGAME dc3dac0bdd 🚧 Misc 2023-11-21 14:05:19 +08:00
RMBGAME 16758c9295 🚧 Idle 2023-11-20 23:08:08 +08:00
RMBGAME cda93da954 🚧 Misc 2023-11-20 19:32:24 +08:00
Mossimo 93e35508f3 ↑ Submodules 2023-11-20 16:11:18 +08:00
Mossimo efc234e3fa ↑ dotnet 8.0 2023-11-20 15:18:58 +08:00
RMBGAME c31848929f 🚧 Misc 2023-11-20 15:05:00 +08:00
RMBGAME 0eff585092 🚧 Misc 2023-11-19 22:41:09 +08:00
RMBGAME eaeb90d853 💄 主页 UI 改进 2023-11-18 01:26:43 +08:00
RMBGAME 09dc6a5e81 🚧 Idle 2023-11-17 19:18:35 +08:00
Mossimo 8a56c52940 ↑ Update SteamClient 2023-11-17 13:55:36 +08:00
Mossimo 2f14d083ee 🐛 修复卸载脚本 rfq -> rf 2023-11-17 13:43:47 +08:00
Mossimo 07d5c3de27 🐛 Certutil 工具可移除 sql: 字符 减少兼容问题 2023-11-17 11:17:38 +08:00
RMBGAME 9e4c4836c0 🚧 Misc 2023-11-16 20:47:38 +08:00
RMBGAME d34a5d3347 🚧 改进主页数据加载逻辑 2023-11-16 20:47:38 +08:00
RMBGAME fd119ae0e1 ✨ 账号切换数据改为启动时加载避免等待 2023-11-16 20:47:37 +08:00
Mossimo 3d59c24dec 🐛 Misc 移除调试代码。添加注释。 2023-11-16 17:16:34 +08:00
Mossimo ea315a9b44 🐛 修复版本迁移导致的脚本失效。 2023-11-16 17:06:45 +08:00
RMBGAME d5592b4bc2 🐛 fix 2023-11-15 19:48:57 +08:00
RMBGAME 2df32c67d0 🐛 fix 2023-11-15 19:28:16 +08:00
RMBGAME fdaf795202 🐛 fix 2023-11-15 14:49:09 +08:00
john.jiang a7572ecd50 🎨 asf 路径修改启动问题修复 2023-11-15 14:43:05 +08:00
RMBGAME d433d60d29 ⬆️ Submodules 2023-11-15 14:42:54 +08:00
RMBGAME 3fe8f931a2 ✨ 令牌搜索功能 2023-11-15 14:42:21 +08:00
john.jiang a69d97fcdb 🎨 ASF fixs 2023-11-14 19:09:47 +08:00
RMBGAME aa63e3ab9f 🐛 fix UserIdleInfo 2023-11-13 19:15:20 +08:00
RMBGAME a56fc36380 fix Steam令牌某些情况下闪退问题 2023-11-13 16:08:43 +08:00
john.jiang 4c5428be5f 🎨 fixs 2023-11-11 19:54:59 +08:00
john.jiang e6953e50b8 🎨 idle fixs 2023-11-11 19:53:53 +08:00
ff m a961f68242 🐛 TrimStart(Constants.UrlSchemes.Login) -> Substring(Constants.UrlSchemes.Login.Length, loginUrl.Length - Constants.UrlSchemes.Login.Length) 2023-11-11 16:43:46 +08:00
ff m 72f301d526 🐛 MacOS Substring内存溢出 改用 TrimStart 已测试通过 2023-11-11 16:07:31 +08:00
john.jiang 2b18e03098 🎨 fixs 2023-11-10 18:36:35 +08:00
john.jiang 9fffe8458a 🎨 ASF Support 2023-11-10 18:32:20 +08:00
RMBGAME ea7282f290 🚧 Misc 2023-11-10 18:13:04 +08:00
RMBGAME 3714710dd8 fix 加速列表加载缓存数据时丢失选中状态问题 2023-11-04 21:27:25 +08:00
RMBGAME 00c228abd8 🐛 fix CI 2023-11-02 17:40:25 +08:00
Mossimo 54fc1e3593 ✨ Mac 支持 UrlSchemes 协议登录 2023-10-28 19:15:46 +08:00
RMBGAME d2d04a37cf ⬆️ Bump 2023-10-24 18:59:41 +08:00
RMBGAME 0600a5ca9f 🚧 Misc 2023-10-24 18:59:41 +08:00
Mossimo 01dc528e21 🐛 修改 install.sh -> online_install.sh 避免用户理解错误 添加 init_desktop.sh 添加桌面 desktop 文件 2023-10-19 17:48:27 +08:00
ff m 9014198aeb 🐛 修复 VDF Json 读取问题 2023-10-19 12:55:44 +08:00
RMBGAME bfd6b82a95 🚧 🐛 修复账号切换某些情况下切换后仍需要登录问题 2023-10-18 19:48:06 +08:00
RMBGAME a6a45e5324 🚧 Misc 2023-10-13 19:46:08 +08:00
RMBGAME 0ed0416f69 🐛 Fix 421 Misdirected Request 2023-10-06 21:12:10 +08:00
RMBGAME ce6fd9a4d6 ✨ 账号切换 Steam 离线模式启动 2023-10-06 18:33:40 +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
Aigio 7c16daafba 🐛 RequestCacheRepository 2023-08-31 03:48:21 +08:00
Aigio 2acc0a95e0 Merge branch 'develop' of https://github.com/BeyondDimension/SteamTools into develop 2023-08-31 03:26:30 +08:00
Aigio 8072b16d42 🐛 RequestCache 2023-08-31 03:26:11 +08:00
ff m 9766e9e71b 🐛修复 Mac Debug 无法启动加速进程 修复 Mac 启动加速退出卡死
🎨 Misc PlatformSetTextAsync
2023-08-31 02:34:52 +08:00
Aigio d39f63db65 🐛 UniqueKeyForRequest 2023-08-31 02:22:41 +08:00
Aigio fd6235f110 Merge branch 'develop' of https://github.com/BeyondDimension/SteamTools into develop 2023-08-31 02:01:07 +08:00
Aigio 4a9a53dda8 🐛 HttpCache 2023-08-31 02:00:52 +08:00
RMBGAME 4668e26b65 🐛 Misc 2023-08-31 01:05:55 +08:00
RMBGAME c5f24ae32c ⬆️ Update BD.Common 2023-08-31 00:10:14 +08:00
ff m 1acf872e80 🐛 PlatformSetTextAsync 不能用 await 等待 Linux 上不知原因不执行后续 2023-08-30 23:26:24 +08:00
ff m 82ea1a62e9 🐛 LinuxDeviceInfoPlatformServiceImpl 2023-08-30 21:35:02 +08:00
Aigio Liu 04b0c0e433 🐛 LinuxDeviceInfoPlatformServiceImpl 2023-08-30 21:29:52 +08:00
Aigio Liu 8dfb37bf8b ✨ LinuxDeviceInfoPlatformServiceImpl 2023-08-30 21:08:36 +08:00
ff m a19b3128db 🐛 127.* 与 localhost 不能添加不然会导致 不走代理 2023-08-30 21:03:23 +08:00
Aigio Liu f70b349229 🚧 3.0.0-preview.5 2023-08-30 20:58:25 +08:00
ff m ed104071c2 🐛 取消平台限制 打开换成文件夹 2023-08-30 20:44:31 +08:00
Aigio Liu 21ae674895 ⬆️ Update Common 2023-08-30 19:47:52 +08:00
Aigio Liu 500a87d62f ✨ AvaloniaFilePickerFileTypeFilter 2023-08-30 15:35:53 +08:00
john.jiang d1ae1787b7 🎨 fixs 2023-08-30 13:43:42 +08:00
RMBGAME 5742158c83 🚧 Misc 2023-08-30 09:31:13 +08:00
RMBGAME 235525a9f3 🐛 库存游戏加载图片逻辑优化 2023-08-30 05:52:05 +08:00
RMBGAME 329340ae2d 🐛 Fixed Bugs 2023-08-30 04:29:52 +08:00
RMBGAME e8e6808930 💄 文本过长宽度过小 显示优化 2023-08-30 02:54:56 +08:00
RMBGAME a77fb08a04 🐛 Fixed Bugs 2023-08-30 02:27:05 +08:00
RMBGAME c05fe78d2d 🐛 修复交易确认首次登录失败 2023-08-30 02:27:04 +08:00
ff m 7b6b8a9b2d 🐛脚本匹配域名等优先读取本地文件的内容 2023-08-30 02:11:06 +08:00
Aigio Liu 3886a96f61 🚧 3.0.0-preview.4 2023-08-29 18:13:38 +08:00
385 changed files with 20262 additions and 3236 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)
+893 -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 $HOME/.pki/nssdb -L
ret=$?
if [ $ret -ne 0 ]; then
echo "即将初始化 certutil \$HOME/.pki/nssdb"
mkdir -p $HOME/.pki
mkdir -p $HOME/.pki/nssdb
chmod 700 $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N --empty-password
else
echo "certutil nssdb 正常"
fi
}
Install_certutil
certutil_Init
exit 0
fi
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
#添加桌面文件
run_path=$(dirname "$0")
base_path="$(dirname "$run_path")"
exec_name="Steam++"
rm -rf "$HOME/Desktop/Watt Toolkit.desktop" 2>/dev/null
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Watt Toolkit
Exec=$base_path/$exec_name.sh
Icon=$base_path/Icons/Watt-Toolkit.png
Terminal=false
Type=Application
StartupNotify=false" >"$HOME/Desktop/Watt Toolkit.desktop"
chmod +x "$HOME/Desktop/Watt Toolkit.desktop"
exit 0
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=°²×° Watt Toolkit
Exec=curl https://steampp.net/pkg/latest/steamdeck/install.sh | bash -s --
Icon=steamdeck-gaming-return
Terminal=true
Type=Application
StartupNotify=false
@@ -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 $HOME/.pki/nssdb -L
ret=$?
if [ $ret -ne 0 ]; then
echo "即将初始化 certutil \$HOME/.pki/nssdb"
mkdir -p $HOME/.pki
mkdir -p $HOME/.pki/nssdb
chmod 700 $HOME/.pki/nssdb
certutil -d $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
+69
View File
@@ -0,0 +1,69 @@
#!/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
# 获取上一个命令的退出码
delCer=$?
if [ $delCer -eq 0 ]; then
certutil -D -d $HOME/.pki/nssdb -n "SteamTools"
fi
zenity --question --text="是否删除用户数据?" --width=400
# 获取上一个命令的退出码
delUserData=$?
if [ $delUserData -eq 0 ]; then
rm -rf $AppData 2>/dev/null
rm -rf $AppData_t 2>/dev/null
certutil -D -d $HOME/.pki/nssdb -n "SteamTools"
else
echo "保留用户数据方便下次安装。"
echo "如需删除可手动删除该目录:$AppData 或者 $AppData_t"
fi
rm -rf $Cache 2>/dev/null
rm -rf $Cache_t 2>/dev/null
rm -rf $base_path 2>/dev/null
rm -rf "$HOME/Desktop/Watt Toolkit.desktop" 2>/dev/null
zenity --info --text="卸载完成!" --width=300
+35 -20
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 net8.0-macos -p:CreatePackage=false -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
rm -r "$App_Modules_Path"
mkdir -p "$App_Modules_Path"
echo "编译插件"
@@ -27,55 +30,67 @@ Copy_Plugins() {
echo "编译加速插件"
Plugins_Accelerator_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Accelerator"
cd "$Plugins_Accelerator_Path"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net7.0-macos
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "Accelerator" "BD.WTTS.Client.Plugins.Accelerator.dll"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net8.0-macos
Copy_Plugins "$Plugins_Release_Path/net8.0-macos" "Accelerator" "BD.WTTS.Client.Plugins.Accelerator.dll"
Plugins_Accelerator_ReverseProxy_Path="$Base_Path/src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy"
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 net8.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 net8.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 net8.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 net8.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
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "Authenticator" "BD.WTTS.Client.Plugins.Authenticator.dll"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net8.0-macos -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Plugins_Release_Path/net8.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
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "GameAccount" "BD.WTTS.Client.Plugins.GameAccount.dll"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net8.0-macos -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Plugins_Release_Path/net8.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
Copy_Plugins "$Plugins_Release_Path/net7.0-macos" "GameList" "BD.WTTS.Client.Plugins.GameList.dll"
dotnet publish -c Release -p:PublishDir="$Publish_Path" -f net8.0-macos -p:EnableCodeSigning=true -p:CodesignKey="$CodesignKey_Name"
Copy_Plugins "$Plugins_Release_Path/net8.0-macos" "GameList" "BD.WTTS.Client.Plugins.GameList.dll"
echo "复制插件到程序目录"
cd "$App_Path"
# 根据 Build_Mode 执行不同逻辑
if [ "$Build_Mode" = "any" ]; then
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net7.0-macos/Steam++.app/Contents/MonoBundle"
cp -r "$App_Modules_Path" "$Plugins_Release_Path/net8.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 "$App_Modules_Path" "$Plugins_Release_Path/net8.0-macos/osx-arm64/Steam++.app/Contents/MonoBundle"
cp -r "$Plugins_Release_Path/net8.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net8.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 "$App_Modules_Path" "$Plugins_Release_Path/net8.0-macos/osx-x64/Steam++.app/Contents/MonoBundle"
cp -r "$Plugins_Release_Path/net8.0-macos/Steam++.app/Contents/Resources" "$Plugins_Release_Path/net8.0-macos/Steam++.app/Contents"
fi
echo "代码签名重新手动签名"
App_Publish_Path="$App_Path/bin/Release/net8.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"
+222 -1
View File
@@ -498,7 +498,7 @@
{
"TypeName": "bool",
"PropertyName": "GameInstalledFilter",
"DefaultValue": "true",
"DefaultValue": "false",
"DefaultValueIsConst": true,
"Summary": "已安装游戏筛选",
"IsRegionOrEndregion": null,
@@ -943,6 +943,227 @@
},
{
"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": ""
},
"SteamIdleSettings": {
"ClassFilePath": "..\\src\\BD.WTTS.Client.Plugins.SteamIdleCard\\Settings",
"InterfaceFilePath": "..\\src\\BD.WTTS.Client.Plugins.SteamIdleCard\\Settings\\Abstractions",
"Properties": [
{
"TypeName": "TimeSpan",
"PropertyName": "IdleTime",
"DefaultValue": "TimeSpan.FromMinutes(6)",
"DefaultValueIsConst": false,
"Summary": "挂卡状态更新时间",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "IdleRule",
"PropertyName": "IdleRule",
"DefaultValue": "IdleRule.OnlyOneGame",
"DefaultValueIsConst": false,
"Summary": "运行规则",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "IdleSequentital",
"PropertyName": "IdleSequentital",
"DefaultValue": "IdleSequentital.Default",
"DefaultValueIsConst": false,
"Summary": "运行顺序",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "MaxIdleCount",
"DefaultValue": "30",
"DefaultValueIsConst": false,
"Summary": "最大并行运行游戏数量",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "double",
"PropertyName": "MinRunTime",
"DefaultValue": "2",
"DefaultValueIsConst": false,
"Summary": "最少游戏时间 hours",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "double",
"PropertyName": "SwitchTime",
"DefaultValue": "5000",
"DefaultValueIsConst": false,
"Summary": "自动切换游戏时间间隔 ms",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "double",
"PropertyName": "RefreshBadgesTime",
"DefaultValue": "6",
"DefaultValueIsConst": false,
"Summary": "自动刷新徽章数据时间间隔 min",
"IsRegionOrEndregion": null,
"IsValueType": true
}
],
"Usings": ""
},
"ASFSettings": {
"ClassFilePath": "..\\src\\BD.WTTS.Client.Plugins.ArchiSteamFarmPlus\\Settings",
"InterfaceFilePath": "..\\src\\BD.WTTS.Client.Plugins.ArchiSteamFarmPlus\\Settings\\Abstractions",
"Properties": [
{
"TypeName": "string",
"PropertyName": "ArchiSteamFarmExePath",
"DefaultValue": "string.Empty",
"DefaultValueIsConst": false,
"Summary": "ASF 路径",
"IsRegionOrEndregion": null,
"IsValueType": false
},
{
"TypeName": "bool",
"PropertyName": "AutoRunArchiSteamFarm",
"DefaultValue": "false",
"DefaultValueIsConst": false,
"Summary": "程序启动时自动运行 ASF",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "bool",
"PropertyName": "CheckArchiSteamFarmExe",
"DefaultValue": "false",
"DefaultValueIsConst": false,
"Summary": "检查文件安全性",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "ConsoleMaxLineDefault",
"DefaultValue": "200",
"DefaultValueIsConst": true,
"Summary": "控制台默认最大行数",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "MinRangeConsoleMaxLine",
"DefaultValue": "DefaultConsoleMaxLineDefault",
"DefaultValueIsConst": true,
"Summary": "控制台默认最大行数范围最小值",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "MaxRangeConsoleMaxLine",
"DefaultValue": "5000",
"DefaultValueIsConst": true,
"Summary": "控制台默认最大行数范围最大值",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "ConsoleMaxLine",
"DefaultValue": "DefaultConsoleMaxLineDefault",
"DefaultValueIsConst": false,
"Summary": "控制台最大行数",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "ConsoleFontSizeDefault",
"DefaultValue": "14",
"DefaultValueIsConst": true,
"Summary": "",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "MinRangeConsoleFontSize",
"DefaultValue": "8",
"DefaultValueIsConst": true,
"Summary": "",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "MaxRangeConsoleFontSize",
"DefaultValue": "24",
"DefaultValueIsConst": true,
"Summary": "",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "ConsoleFontSize",
"DefaultValue": "DefaultConsoleFontSizeDefault",
"DefaultValueIsConst": false,
"Summary": "控制台字体大小",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "int",
"PropertyName": "IPCPortIdValue",
"DefaultValue": "6242",
"DefaultValueIsConst": true,
"Summary": "",
"IsRegionOrEndregion": null,
"IsValueType": null
},
{
"TypeName": "int",
"PropertyName": "IPCPortId",
"DefaultValue": "DefaultIPCPortIdValue",
"DefaultValueIsConst": false,
"Summary": "IPC 端口号,默认值为 <see cref=\"DefaultIPCPortIdValue\" />",
"IsRegionOrEndregion": null,
"IsValueType": true
},
{
"TypeName": "bool",
"PropertyName": "IPCPortOccupiedRandom",
"DefaultValue": "true",
"DefaultValueIsConst": false,
"Summary": "IPC 端口号被占用时是否随机一个未使用的端口号,默认值 <see langword=\"true\" />",
"IsRegionOrEndregion": null,
"IsValueType": true
}
],
"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

+10 -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 = "3";
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>
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="8.0.0"/>
</appSettings>
</configuration>
+5 -3
View File
@@ -16,9 +16,9 @@ static unsafe partial class Program
{
static Program()
{
dotnet_version_major = "7";
dotnet_version_major = "8";
dotnet_version_minor = "0";
dotnet_version_build = "10";
dotnet_version_build = "0";
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)以降にのみ対応しています",
@@ -98,14 +98,14 @@
<ProjectReference Include="..\BD.WTTS.Client\BD.WTTS.Client.csproj" />
</ItemGroup>
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' AND Exists('$(NugetPackageRoot)\system.drawing.common\$(Version_System_Drawing_Common)\runtimes\win\lib\net7.0\System.Drawing.Common.dll')">
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' AND Exists('$(NugetPackageRoot)\system.drawing.common\$(Version_System_Drawing_Common)\lib\net8.0\System.Drawing.Common.dll')">
<!-- Windows Only -->
<!-- 修复:存在 Microsoft.WindowsDesktop.App 依赖时不会将 System.Drawing.Common.dll 复制到输出目录-->
<None Include="$(NugetPackageRoot)\system.drawing.common\$(Version_System_Drawing_Common)\runtimes\win\lib\net7.0\System.Drawing.Common.dll">
<None Include="$(NugetPackageRoot)\system.drawing.common\$(Version_System_Drawing_Common)\lib\net8.0\System.Drawing.Common.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Reference Include="System.Drawing.Common">
<HintPath>$(NugetPackageRoot)\system.drawing.common\$(Version_System_Drawing_Common)\runtimes\win\lib\net7.0\System.Drawing.Common.dll</HintPath>
<HintPath>$(NugetPackageRoot)\system.drawing.common\$(Version_System_Drawing_Common)\lib\net8.0\System.Drawing.Common.dll</HintPath>
</Reference>
</ItemGroup>
@@ -1,8 +1,7 @@
{
"profiles": {
"BD.WTTS.Client.Avalonia.App": {
"commandName": "Project",
"commandLineArgs": "-clt devtools"
"commandName": "Project"
}
}
}
+27 -2
View File
@@ -58,6 +58,7 @@ sealed partial class Program : Startup
// Essentials
#if LINUX
services.TryAddSingleton<IApplicationVersionService, Essentials_AppVerS>();
services.AddSingleton<IDeviceInfoPlatformService, LinuxDeviceInfoPlatformServiceImpl>();
#else
#if WINDOWS
#if AVALONIA
@@ -199,7 +200,7 @@ sealed partial class Program : Startup
WatchTrace.Record("ConfigureDemandServices.Notification");
#endif
if (HasHosts)
if (HasHosts || HasIPCRoot)
{
// hosts 文件助手服务
services.AddHostsFileService();
@@ -247,11 +248,35 @@ sealed partial class Program : Startup
sealed class Essentials_AppVerS : IApplicationVersionService
{
string IApplicationVersionService.ApplicationVersion => AssemblyInfo.Version;
string IApplicationVersionService.ApplicationVersion => AssemblyInfo.FileVersion;
string IApplicationVersionService.AssemblyTrademark => AssemblyInfo.Trademark;
}
#if LINUX
sealed class LinuxDeviceInfoPlatformServiceImpl : IDeviceInfoPlatformService
{
public string Model => "";
public string Manufacturer => "";
public string Name => "";
public string VersionString => Environment.OSVersion.VersionString;
public DeviceType DeviceType => DeviceType.Physical;
public bool IsChromeOS => false;
public bool IsWinUI => false;
public bool IsUWP => false;
public DeviceIdiom Idiom => DeviceIdiom.Desktop;
}
#endif
#if AVALONIA && WINDOWS
sealed class AvaWinDeviceInfoPlatformServiceImpl :
Common.Services.Implementation.Essentials.DeviceInfoPlatformServiceImpl
@@ -18,6 +18,8 @@ public sealed class EnumLocalizationNameConverter : IValueConverter
else
{
text = Strings.ResourceManager.GetString(desc, Strings.Culture);
if (string.IsNullOrEmpty(text))
return desc;
}
if (!string.IsNullOrEmpty(text))
@@ -0,0 +1,25 @@
namespace BD.WTTS.Converters;
public sealed class VisibleStringConverter : IMultiValueConverter
{
public object? Convert(IList<object?> values, Type targetType, object? parameter, CultureInfo culture)
{
if (values.Count >= 2 && values.FirstOrDefault() is bool isVisble)
{
if (isVisble)
{
return values[1];
}
else if (values.Count >= 3)
{
return values[2];
}
else
{
return null;
}
}
return values;
}
}
@@ -5,44 +5,19 @@ namespace BD.WTTS.Services.Implementation;
/// <inheritdoc cref="IAppUpdateService"/>
sealed class AvaloniaApplicationUpdateServiceImpl : AppUpdateServiceBaseImpl
{
readonly IWindowManager windowManager;
public AvaloniaApplicationUpdateServiceImpl(
IApplication application,
INotificationService notificationService,
IWindowManager windowManager,
IToast toast,
IMicroServiceClient client,
IOptions<AppSettings> options) : base(application, notificationService, toast, client, options)
{
this.windowManager = windowManager;
}
protected override async Task ShowNewVersionWindowAsync()
{
await windowManager.ShowAsync(typeof(object), AppEndPoint.NewVersion, isParent: false);
}
public override async void OnMainOpenTryShowNewVersionWindow()
{
if (ShowNewVersionWindowOnMainOpen)
{
ShowNewVersionWindowOnMainOpen = false;
await ShowNewVersionWindowAsync();
}
}
protected override async void OnExistNewVersion()
protected override bool HasActiveWindow()
{
var hasActiveWindow = App.Instance.HasActiveWindow();
if (hasActiveWindow)
{
await ShowNewVersionWindowAsync();
}
else
{
ShowNewVersionWindowOnMainOpen = true;
notification.Notify(AppResources.NewVersionUpdateNotifyText_.Format(NewVersionInfo?.Version), NotificationType.NewVersion);
}
return hasActiveWindow;
}
}
@@ -1,4 +1,6 @@
#if LINUX
using static System.Net.Mime.MediaTypeNames;
namespace BD.WTTS.Services.Implementation;
public sealed class AvaloniaClipboardPlatformService : IClipboardPlatformService
@@ -28,7 +30,9 @@ public sealed class AvaloniaClipboardPlatformService : IClipboardPlatformService
var clipboard = topLevel.Clipboard;
if (clipboard != null)
{
await clipboard.SetTextAsync(text);
//不能用 await 等待 Linux 上不知啥原因导致卡死
clipboard.SetTextAsync(text).GetAwaiter();
await Task.CompletedTask;
}
}
}
@@ -197,11 +197,27 @@ sealed class AvaloniaFilePickerPlatformService : BaseService, IServiceBase, IOpe
[MethodImpl(MethodImplOptions.AggressiveInlining)]
static IReadOnlyList<APS_FilePickerFileType>? Convert(IFilePickerFileType? fileTypes)
{
if (fileTypes is FilePickerFileTypeWrapper impl)
if (fileTypes is AvaloniaFilePickerFileTypeFilter ava)
{
var items = ava.Values;
if (items != null)
{
var query = from m in items
select new APS_FilePickerFileType(m.Name)
{
Patterns = m.Patterns,
AppleUniformTypeIdentifiers = m.AppleUniformTypeIdentifiers,
MimeTypes = m.MimeTypes,
};
return query.ToArray();
}
return null;
}
else if (fileTypes is FilePickerFileTypeWrapper impl)
{
return impl.Values;
}
if (fileTypes is FilePickerFileType.IFilePickerFileTypeWithName @interface)
else if (fileTypes is FilePickerFileType.IFilePickerFileTypeWithName @interface)
{
var values = @interface.GetFileTypes();
if (values.Any())
@@ -1,6 +1,8 @@
using Avalonia.Controls;
using FluentAvalonia.UI.Controls;
using FluentAvalonia.UI.Media.Animation;
using FluentAvalonia.UI.Navigation;
using System.Xml.Linq;
namespace BD.WTTS.Services.Implementation;
@@ -8,7 +10,9 @@ public sealed class NavigationService : INavigationService
{
public static NavigationService Instance { get; } = (NavigationService)Ioc.Get<INavigationService>();
public Control? PreviousPage { get; set; }
//public Type? PreviousPage { get; set; }
public Type? CurrnetPage => _frame?.CurrentSourcePageType;
public object? GetViewModelToPageContent(object viewModel, bool isCreateInstance = true)
{
@@ -50,11 +54,21 @@ public sealed class NavigationService : INavigationService
_overlayHost = p;
}
public void Navigate(Type? t, NavigationTransitionEffect effect = NavigationTransitionEffect.None)
public void Navigate(Type? t, NavigationTransitionEffect effect = NavigationTransitionEffect.None, bool useCache = true)
{
if (_frame == null)
return;
var navOptions = new FrameNavigationOptions
{
IsNavigationStackEnabled = useCache,
TransitionInfoOverride = GetNavigationTransitionInfo(effect)
};
if (t == null)
{
_frame?.Navigate(typeof(ErrorPage), null, GetNavigationTransitionInfo(effect));
navOptions.IsNavigationStackEnabled = false;
_frame.NavigateToType(typeof(ErrorPage), null, navOptions);
return;
}
@@ -66,19 +80,45 @@ public sealed class NavigationService : INavigationService
if (t == null)
{
_frame?.Navigate(typeof(ErrorPage), null, GetNavigationTransitionInfo(effect));
navOptions.IsNavigationStackEnabled = false;
_frame.NavigateToType(typeof(ErrorPage), null, navOptions);
return;
}
if (_frame?.Content?.GetType() != t)
if (_frame.Content?.GetType() != t)
{
_frame?.Navigate(t, null, GetNavigationTransitionInfo(effect));
_frame.NavigateToType(t, null, navOptions);
//if (!useCache && navOptions.IsNavigationStackEnabled)
//{
// _frame.BackStack.Remove(_frame.BackStack.Last());
//}
}
}
public void GoBack()
public void GoBack(Type? t = null)
{
_frame?.GoBack();
if (t == null)
{
_frame?.GoBack();
return;
}
if (t.IsSubclassOf(typeof(ViewModelBase)))
{
var pageType = GetViewModelToPageContent(t, false);
t = pageType as Type;
}
if (t == null)
{
_frame?.GoBack();
return;
}
if (_frame?.CurrentSourcePageType == t)
{
_frame?.GoBack();
}
}
public void NavigateFromContext(object dataContext, NavigationTransitionEffect effect = NavigationTransitionEffect.None)
@@ -105,7 +145,6 @@ public sealed class NavigationService : INavigationService
public void ClearOverlay()
{
_overlayHost?.Children.Clear();
}
private static NavigationTransitionInfo GetNavigationTransitionInfo(NavigationTransitionEffect effect)
@@ -142,11 +142,56 @@ partial class App : IApplication
object IApplication.CurrentPlatformUIHost => MainWindow!;
DeploymentMode IApplication.DeploymentMode => DeploymentMode.
#if FRAMEWORK_DEPENDENT || !PUBLISH
FDE
#else
SCD
#endif
;
public System.Drawing.Size? GetScreenSize()
{
try
{
var window = GetFirstOrDefaultWindow();
var screen = window?.Screens?.Primary;
if (screen != default)
{
return new(screen.Bounds.Width, screen.Bounds.Height);
}
}
catch
{
}
return null;
}
public bool? IsAnyWindowNotMinimized()
{
try
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime l)
{
foreach (var window in l.Windows)
{
static bool WindowIntersectsWithAnyScreen(Window window)
{
static bool IntersectsWith(Rect rect, PixelRect @this)
{
if (rect.X < @this.X + @this.Width && @this.X < rect.X + rect.Width && rect.Y < @this.Y + @this.Height)
{
return @this.Y < rect.Y + rect.Height;
}
return false;
}
return window.Screens.All.Any(screen => IntersectsWith(window.Bounds, screen.Bounds));
}
if (window.WindowState != WindowState.Minimized && WindowIntersectsWithAnyScreen(window))
{
return true;
}
}
}
}
catch
{
}
return default;
}
}

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