feat: 新增应用更新功能和关于页面

- 集成 Tauri updater 实现应用版本检查与更新
- 添加关于页面,展示项目介绍、使用流程和版本信息
- 新增顶部栏检查更新和 GitHub 入口
- 完善国际化文案和更新弹窗组件
This commit is contained in:
Yuhang Wu
2026-10-14 10:13:31 +08:00
parent f6d8d783b4
commit 746a4be2bc
15 changed files with 663 additions and 7 deletions
+46
View File
@@ -0,0 +1,46 @@
import type { Update } from "@tauri-apps/plugin-updater"
import { isTauri } from "@/utils/window"
/** 项目 GitHub 仓库地址(与 tauri.conf.json 中 updater 端点保持一致) */
export const PROJECT_GITHUB_URL = "https://github.com/SparksFly91/Frpilot"
/**
* 检查是否有可用更新。
*
* 非 Tauri 环境(纯浏览器调试)下无法调用插件,直接返回 null。
*/
export async function checkForAppUpdate(): Promise<Update | null> {
if (!isTauri()) return null
const { check } = await import("@tauri-apps/plugin-updater")
return check()
}
/** 重启应用(macOS / Linux 安装更新后需要重启才能运行新版本) */
export async function relaunchApp() {
if (!isTauri()) return
const { relaunch } = await import("@tauri-apps/plugin-process")
await relaunch()
}
/** 用系统默认浏览器打开外部链接 */
export async function openExternal(url: string) {
if (!isTauri()) {
// 浏览器调试环境退化为新标签页打开
window.open(url, "_blank", "noopener,noreferrer")
return
}
const { openUrl } = await import("@tauri-apps/plugin-opener")
await openUrl(url)
}
/** 打开项目 GitHub 仓库首页 */
export function openProjectRepo() {
return openExternal(PROJECT_GITHUB_URL)
}
/** 读取当前应用版本(来自 tauri.conf.json / package.json) */
export async function getAppVersion(): Promise<string> {
if (!isTauri()) return "dev"
const { getVersion } = await import("@tauri-apps/api/app")
return getVersion()
}