02Engine 是基于 TurboWarp 的 Scratch 修改版本,具有禁用更新检查的隐私优先设计。此文档详细分析其更新功能的工作机制。
- 更新检查器 (
src-main/update-checker.js) - 更新窗口 (
src-main/windows/update.js) - 设置管理 (
src-main/settings.js) - 版本比较 (使用 semver 库)
const isUpdateCheckerAllowed = () => {
//if (process.env.TW_DISABLE_UPDATE_CHECKER) {
return false; // 硬编码返回 false
//}
return !!packageJSON.tw_update;
};- 版本检查: 从
https://desktop.turbowarp.org/version.json获取最新版本 - 版本比较: 使用
semver库进行语义版本比较 - 安全更新: 强制显示安全更新,不能被忽略
- 用户设置: 支持多种更新检查模式
- never: 从不检查更新
- security: 仅检查安全更新
- stable: 检查稳定版更新
- unstable: 检查包括不稳定版的所有更新
// 1. 权限检查 - 已禁用
// 2. 用户设置检查
// 3. 网络请求获取版本信息
// 4. 版本比较
// 5. 显示更新窗口(如果需要)- 尺寸: 600x500 像素
- 类型: 弹出窗口
- 协议:
tw-update://./update.html
- 下载更新: 跳转到外部下载页面
- 暂时忽略: 6小时内不再提醒
- 永久忽略: 直到3000年(实际上永久)
- 关闭窗口: 视为暂时忽略
- 无法忽略: 安全更新无法被用户忽略
- 强制提示: 即使设置为"never"也会显示
// 更新检查模式
updateChecker: 'stable' | 'security' | 'unstable' | 'never'
// 忽略的更新版本
ignoredUpdate: string | null
// 忽略截止时间(Unix时间戳)
ignoredUpdateUntil: number- 配置文件:
userData/tw_config.json - 格式: JSON v2 结构
- 原子写入: 使用
writeFileAtomic防止损坏
- 版本检查:
https://desktop.turbowarp.org/version.json - 更新下载:
https://desktop.turbowarp.org/update_available
- 用户代理:
02Engine/version - 方法: GET
- 响应: JSON 格式的版本信息
{
"latest": "1.2.0", // 最新稳定版
"latest_unstable": "1.3.0-beta", // 最新不稳定版
"oldest_safe": "1.1.8" // 最低安全版本
}- 默认禁用: 更新检查在代码中被硬编码禁用
- 用户控制: 完全由用户控制是否检查更新
- 最小数据: 仅传输必要的版本信息
- 无遥测: 不收集任何使用统计或用户数据
- HTTPS: 所有通信使用加密连接
- 强更新: 安全更新无法被忽略
- 验证机制: 使用 semver 进行严格的版本比较
- 时间戳: 忽略更新的时间戳防止永久忽略
1. 应用启动
2. 检查更新检查器是否允许 (→ false,因为已禁用)
3. 检查用户设置
4. 如果允许,进行网络请求
5. 版本比较
6. 根据结果显示更新窗口
用户看到更新窗口
├── 点击"下载更新" → 外部浏览器 → 关闭窗口
├── 点击"暂时忽略" → 记录时间戳 → 关闭窗口
├── 点击"永久忽略" → 设置未来时间 → 关闭窗口
└── 直接关闭 → 视为暂时忽略
TW_DISABLE_UPDATE_CHECKER: 在原版中用于禁用更新检查
tw_update: 在原版中用于启用更新功能
- 更新检查频率选择
- 忽略特定更新版本
- 自动更新检查: 在
isUpdateCheckerAllowed()中硬编码返回false - 后台更新: 无任何后台更新机制
- 自动下载: 所有更新都需要手动下载
- 更新界面: 完整的更新窗口代码仍然存在
- 版本比较: semver 比较逻辑完整
- 设置管理: 更新设置管理完整
- 网络请求: 如果启用,可以进行网络请求
const isUpdateCheckerAllowed = () => {
// 取消注释并添加环境变量
if (process.env.TW_DISABLE_UPDATE_CHECKER) {
return false;
}
return !!packageJSON.tw_update;
};{
"tw_update": true
}export TW_DISABLE_UPDATE_CHECKER=- 仅从官方 TurboWarp 服务器获取版本信息
- 使用 HTTPS 加密传输
- 不执行任何下载的文件
- 当前已完全禁用
- 即使启用,也只传输版本信息
- 无用户数据收集
- 网络请求失败不会影响应用正常运行
- 版本检查失败有完善的错误处理
- 隐私优先: 符合项目的隐私保护理念
- 用户控制: 用户完全控制更新时机
- 稳定性: 减少网络依赖和潜在问题
- 透明度: 所有更新操作都明确可见
- 仔细测试所有更新场景
- 考虑添加用户协议或确认机制
- 确保用户数据不会意外泄露
- 提供清晰的更新日志和说明
02Engine 的更新功能设计体现了隐私优先的理念,通过硬编码禁用更新检查器来确保用户的隐私和控制权。虽然保留了完整的更新功能代码,但默认状态下不会进行任何自动更新检查,这是一种在便利性和隐私性之间寻求平衡的设计选择。