Files
Frpilot/src/api/updater.ts
T
Yuhang Wu ec644e5434 feat: 按安装目录隔离存储应用数据,实现多实例独立运行
新增 StoragePaths 模块,将数据库、设置、frp 版本等业务数据统一保存在应用实际安装位置,避免不同实例或版本间数据混淆。新增 Preferences 模块管理安装目录内的持久化设置,重构数据库初始化逻辑,修改 Frpc 运行目录、frp 版本存储路径,新增数据目录锁机制防止多进程冲突,同时更新文档说明数据目录规则与平台差异。
2026-10-26 14:16:18 +08:00

49 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { Update } from "@tauri-apps/plugin-updater"
import { isTauri } from "@/utils/window"
import { flushPreferences } from "@/utils/preferences"
/** 项目 GitHub 仓库地址(与 tauri.conf.json 中 updater 端点保持一致) */
export const PROJECT_GITHUB_URL = "https://github.com/SparksFly91/FrpcPilot"
/**
* 检查是否有可用更新。
*
* 非 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
await flushPreferences()
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()
}