feat: 按安装目录隔离存储应用数据,实现多实例独立运行
新增 StoragePaths 模块,将数据库、设置、frp 版本等业务数据统一保存在应用实际安装位置,避免不同实例或版本间数据混淆。新增 Preferences 模块管理安装目录内的持久化设置,重构数据库初始化逻辑,修改 Frpc 运行目录、frp 版本存储路径,新增数据目录锁机制防止多进程冲突,同时更新文档说明数据目录规则与平台差异。
This commit is contained in:
@@ -357,3 +357,5 @@ const toggleCollapsed = () => {
|
||||
- 我想到的方案是脚本,如果你有更好的方案的话,那就采用你的方案,如果没有,就按照我的要求来做,同时你需要考虑到我遗漏的地方
|
||||
- 数据迁移之后,可能还需要处理数据库中保存的frp软件目录所在位置
|
||||
- 迁移脚本需要考虑不同操作系统之间的差别
|
||||
- 或许可以考虑直接把之前的数据目录直接剪切到安装所在目录里面
|
||||
- 数据迁移之后需要保证功能和已配置的服务器、隧道可以正常启动
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# 数据目录说明
|
||||
|
||||
FrpcPilot 以实际安装位置保存业务数据。安装目录中没有数据库或设置文件时,直接创建空数据库并使用默认设置。旧版系统应用数据目录中的文件不会被读取、复制或删除,需要使用的服务器与隧道请在新版中重新配置。
|
||||
|
||||
## Windows 目录示例
|
||||
|
||||
安装在 `D:\software\FrpcPilot` 时:
|
||||
|
||||
```text
|
||||
D:\software\FrpcPilot\
|
||||
├── frpcpilot.exe
|
||||
├── data\
|
||||
│ ├── frpcpilot.db # 服务器、隧道、frp 记录
|
||||
│ ├── preferences.json # 语言、外观、关闭行为等设置
|
||||
│ └── storage.lock # 防止多个进程同时使用数据目录
|
||||
├── frp\versions\ # 各版本压缩包、解压文件和导入的程序
|
||||
├── run\frpc.toml # 启动穿透时根据数据库重新生成
|
||||
├── webview\ # Windows / Linux 浏览器数据与缓存
|
||||
├── cache\ # 应用缓存
|
||||
├── logs\ # 应用日志目录
|
||||
└── tmp\ # 应用与更新器使用的临时目录
|
||||
```
|
||||
|
||||
SQLite 的 journal / WAL / SHM 文件随数据库保存在 `data` 中。frpc 的工作目录是 `run`,相对路径的运行产物留在这里;实时日志仍输出到界面,不额外保存日志文件。导入的 frpc / frps 会复制到安装目录,原文件不修改。
|
||||
|
||||
## 各平台位置
|
||||
|
||||
| 平台 | 数据根目录 |
|
||||
| --- | --- |
|
||||
| Windows | `frpcpilot.exe` 所在目录 |
|
||||
| macOS `.app` | `.app` 同级的 `FrpcPilot-data` |
|
||||
| Linux AppImage | `APPIMAGE` 指向的实际文件所在目录 |
|
||||
| Linux 普通二进制 / deb | 实际可执行文件所在目录 |
|
||||
|
||||
macOS 使用应用包同级目录,避免破坏签名或在更新器替换应用包时丢失数据。AppImage 的临时只读挂载目录不会用于存储业务数据。开发构建使用可执行文件旁的 `FrpcPilot-dev`,与正式版配置隔离。
|
||||
|
||||
安装目录必须允许当前用户写入。Windows `Program Files`、macOS `/Applications`、Linux deb 默认的 `/usr/bin` 等位置可能不可写,此时应用会显示错误并停止,不回退到系统默认的应用数据目录。建议使用当前用户可写的专用安装文件夹;Linux 推荐将 AppImage 放在自己的应用目录。
|
||||
|
||||
macOS WKWebView 不支持任意指定持久化目录,其系统管理的浏览器缓存仍可能写入用户 Library;应用设置保存在 `data/preferences.json`。操作系统、WebView 运行时安装、崩溃报告以及系统安装器自身生成的文件,也不能保证完全避开系统盘。
|
||||
|
||||
## 备份与安装位置变更
|
||||
|
||||
备份当前数据时,先退出软件,再备份整个安装目录;macOS 需要备份同级的 `FrpcPilot-data`。数据库和 `run/frpc.toml` 含认证信息,请按私密文件保存。
|
||||
|
||||
程序不自动修正安装位置变更前保存的 frp 绝对路径。移动安装目录后,如原路径失效,请重新下载或导入 frpc。不同操作系统的二进制不兼容,需要使用目标平台的 frpc。
|
||||
Reference in New Issue
Block a user