# Paw GUi Paw 的系统服务及其安装/卸载器 此处 `install.rs` 和 `uninstall.rs` 中使用的 `Command` 都是同步版本,而其他属于服务部分的`Command`都是异步版本。 同理,`install.rs` 和 `uninstall.rs` 中使用的日志均为直接 `println!`,而服务部分依赖于 `tracing` 输出到标准输出流,从而被操作系统的服务日志系统记录(Windows下输出到文件)。因此,三个系统的服务日志查看方式如下: - Linux: `sudo journalctl -u paw-system-service` 其中具体名称由 `common` 中的 `SERVICE_NAME` 决定 - macOS: `/var/log/com.paw.service.log` 其中具体名称由 `common` 中的 `SERVICE_MACOS_NAME` 决定 - Windows: 文件在 `软件所在目录/logs/` 下 ## 项目结构 - src/ - main.rs 系统服务的入口文件 - api.rs 系统服务的API接口 - installer/ 系统服务安装/卸载器 - install.rs 系统服务安装器 - uninstall.rs 系统服务卸载器 - template/ 系统服务模板 - helper.plist macOS 的系统服务 - systemctl.txt Linux 的系统服务 ## 第三方库依赖 - [serde](https://serde.rs/) & serde_json: 序列化/反序列化框架 - [anyhow](https://github.com/dtolnay/anyhow) 简化错误处理 - [tokio](https://tokio.rs/tokio/tutorial) 异步运行时,也包含了很多异步实用工具 - [axum](https://crates.io/crates/axum) HTTP服务器 - [windows-service](https://crates.io/crates/windows-service) Windows 系统服务控制框架,用于安装、卸载、修改系统服务 - [tracing](https://crates.io/crates/tracing) [tracing-subscriber](https://crates.io/crates/tracing-subscriber) 记录系统服务的日志 - [tracing-appender](https://crates.io/crates/tracing-appender/) 将日志输出到文件,仅 Windows 使用