Skip to content

feat(fork): 本地测试版更新通道(dev 分支) - #6

Draft
GOXF wants to merge 3 commits into
customfrom
feat/dev-update-channel
Draft

GOXF wants to merge 3 commits into
customfrom
feat/dev-update-channel

Conversation

@GOXF

@GOXF GOXF commented Nov 8, 2026

Copy link
Copy Markdown
Owner

做了什么

本地开发构建(DeskBox.exe 位于含 .git 与 scripts/fork-dev-update.ps1 的克隆内)启用「本地测试版更新通道」;正式安装版完全不受影响(探测不到仓库根即全部关闭)。

  • 构建时嵌入提交:Directory.Build.targets 在 Debug 构建时执行 git rev-parse,写入 AssemblyMetadata(ForkGitSha / ForkGitBranch)。git 不可用时不报错,运行时改读 .git(HEAD → loose ref / packed-refs / worktree)。Release / CI / 安装包构建不执行(可用 /p:ForkEmbedGitInfo=true 强开)。
  • 检查:启动后(15 s,开机自启 60 s)及每 30 分钟匿名请求 GET https://api.github.com/repos/GOXF/DeskBox/commits/dev,失败静默。有新提交时发更新通知(沿用现有更新 toast,托盘气泡兜底;遵循「显示更新通知」开关;同一提交只提示一次),点击打开 设置→关于。
  • 设置「关于→更新详情」:显示「本地测试版:当前 <短sha>,有新提交 <短sha> <提交标题>」与「更新并重启」按钮;点「检查更新」也会检查该通道。用 x:Bind,未改 AotBindableProperties(仍 39)。
  • 更新并重启:以独立可见窗口运行 powershell -ExecutionPolicy Bypass -File <repo>\scripts\fork-dev-update.ps1 -Branch dev -GraceSeconds 15,再走现有 ShutdownForUpdateAsync 退出 DeskBox。
  • 脚本:新增 -GraceSeconds(先等 DeskBox 自行退出再强制结束);git fetch/checkout 检查退出码;任何失败时窗口暂停(Read-Host)。

文件

新增:Services/ForkDevBuildInfo.cs、Services/ForkDevUpdateService.cs、ViewModels/SettingsViewModel.ForkDevUpdate.cs、Views/SettingsWindow.ForkDevUpdate.cs、App.ForkDevUpdate.cs、tests/.../ForkDevUpdateTests.cs
改动(最小):App.xaml.cs +1 行、SettingsViewModel.AboutAndUpdates.cs +1 行、SettingsWindow.xaml +17 行、Directory.Build.targets、scripts/fork-dev-update.ps1

测试

ForkDevUpdateTests:仓库根探测(嵌套 bin、worktree .git 文件、缺 .git / 缺脚本)、正式安装目录不启用、.git 读 sha(loose / packed / detached)、sha 比较、commits API 解析、网络失败静默、脚本启动参数。

GOXF added 3 commits November 8, 2026 06:04
仅当 DeskBox.exe 位于本地 git 克隆内(向上找到同时含 .git 与
scripts/fork-dev-update.ps1 的仓库根)时启用,正式安装版完全不受影响。

- Directory.Build.targets:Debug 构建时 git rev-parse,把提交 sha/分支写入
  AssemblyMetadata(ForkGitSha/ForkGitBranch);取不到时运行时读 .git。
- 启动后及每 30 分钟匿名请求 GitHub commits/dev,比较远端最新 sha,
  有新提交时发更新通知(沿用现有更新提示样式,点击打开 关于)。
- 设置「关于→更新详情」显示「本地测试版:当前 <短sha>,有新提交 …」与
  「更新并重启」按钮;点「检查更新」时同时检查该通道。
- 「更新并重启」以独立可见窗口运行 fork-dev-update.ps1 后退出 DeskBox;
  脚本新增 -GraceSeconds(先等 DeskBox 自行退出),失败时 Read-Host 暂停。
- 新增 ForkDevUpdateTests:仓库根探测、sha 比较、正式安装版不启用等。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant