From b92c57ef44193c700ae7be9b0cabde5a7cab12e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E5=BF=97=E5=A8=81?= Date: Fri, 14 Aug 2026 17:07:27 +0800 Subject: [PATCH] replace JavaScript and C# packaging tools with Rust --- Cargo.lock | 43 ++- Cargo.toml | 1 + README.md | 12 +- agent/windows-agent/Cargo.toml | 2 +- agent/windows-agent/src/main.rs | 68 +++- .../helpers/windows-agent-viewer/Cargo.toml | 2 +- docs/all-rust-migration.md | 2 +- docs/ci-drone.md | 2 +- docs/development.md | 28 +- docs/implementation-status.md | 6 +- docs/online-updates.md | 2 +- docs/user-guide.md | 27 +- packaging/build-all.ps1 | 8 +- packaging/windows-host/README.md | 2 +- packaging/windows-host/RemoteDesk-Host.cmd | 11 - packaging/windows-host/RemoteDesk-Host.cs | 83 ---- .../windows-host/RemoteDesk-Host.manifest | 10 - .../windows-host/package-portable-host.ps1 | 13 +- packaging/windows/RemoteDesk-Portable.cs | 31 -- packaging/windows/create-update-manifest.mjs | 133 ------- packaging/windows/package-installer.ps1 | 20 - packaging/windows/package-preview.ps1 | 4 +- packaging/windows/test-update-manifest.mjs | 77 ---- tools/update-manifest/Cargo.toml | 28 ++ tools/update-manifest/src/main.rs | 356 ++++++++++++++++++ vendor/ironrdp-client/Cargo.toml | 1 + 26 files changed, 530 insertions(+), 442 deletions(-) delete mode 100644 packaging/windows-host/RemoteDesk-Host.cmd delete mode 100644 packaging/windows-host/RemoteDesk-Host.cs delete mode 100644 packaging/windows-host/RemoteDesk-Host.manifest delete mode 100644 packaging/windows/RemoteDesk-Portable.cs delete mode 100644 packaging/windows/create-update-manifest.mjs delete mode 100644 packaging/windows/test-update-manifest.mjs create mode 100644 tools/update-manifest/Cargo.toml create mode 100644 tools/update-manifest/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 8bf34ca..4306686 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3323,11 +3323,9 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3d2d36d9bb45863f9bc5225bf3bccda125fafb1b225c1f99dbeaeebb258e7dc" dependencies = [ - "bytemuck", "cpal", "ironrdp-error", "ironrdp-rdpsnd", - "opus2", "tracing", ] @@ -3625,15 +3623,10 @@ dependencies = [ ] [[package]] -name = "libopus_sys" -version = "0.3.3" +name = "libm" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b81c32f233fb2507347a93f97b9919493be9db7ec2249ce2c3ed0c89ad8edf60" -dependencies = [ - "cmake", - "log", - "pkg-config", -] +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" @@ -3852,6 +3845,18 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "mousiki" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025feef2fc01604ee1fac4ae254b33480574b16210945d0096d665009ba9c666" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "libm", + "log", +] + [[package]] name = "moxcms" version = "0.8.1" @@ -4514,7 +4519,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49521e33fbf825d2abc8d696506c278cb8469d0c6cc05d3785bef5c5f7ee957b" dependencies = [ - "libopus_sys", + "mousiki", ] [[package]] @@ -5561,6 +5566,22 @@ dependencies = [ "winit", ] +[[package]] +name = "remotedesk-update-manifest" +version = "0.2.19" +dependencies = [ + "base64", + "clap", + "ed25519-dalek 2.2.0", + "pkcs8 0.10.2", + "serde", + "serde_json", + "sha2 0.10.9", + "tempfile", + "time", + "url", +] + [[package]] name = "remotedesk-webrtc-core" version = "0.2.19" diff --git a/Cargo.toml b/Cargo.toml index d7e0f4a..b9aa0b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ members = [ "client/helpers/rdp-session", "client/helpers/rdp-viewer", "protocol", + "tools/update-manifest", ] [workspace.package] diff --git a/README.md b/README.md index 7986e0c..70955df 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ RemoteDesk 采用双通道设计: ```text +----------------------+ | RemoteDesk Client | - | Tauri + Rust helpers | + | winit + wgpu + egui | +----------+-----------+ | +--------------+--------------+ @@ -51,7 +51,7 @@ RemoteDesk 采用双通道设计: - 不从零实现 RDP 协议,也不引入 C++/FreeRDP 客户端。 - 不承诺 Windows 系统 RDP 服务端内部零拷贝;只能验证并报告 IronRDP 客户端实际得到 GPU surface 还是 CPU bitmap。 -- 不使用 JavaScript、Tauri IPC 或 CPU buffer 传递 Linux 桌面原始视频帧;WebView2 `