diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 2351d20..7a2220c 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -12,7 +12,7 @@ { "name": "generalupdate-skill", "source": "./", - "description": "Complete GeneralUpdate (.NET auto-update) integration skill suite. Generates dual-project scaffolding, full-state update UI (6 frameworks), 6 update strategies decision tree (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), BM25-powered troubleshooting search (50+ known issues), v9.x→v10 migration guide, and 14-point security audit matrix. All templates target NuGet v10.5.0-beta.4.", + "description": "Complete GeneralUpdate (.NET auto-update) integration skill suite. Generates dual-project scaffolding, full-state update UI (6 frameworks), 6 update strategies decision tree (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), BM25-powered troubleshooting search (50+ known issues), v9.x→v10 migration guide, and 14-point security audit matrix. All templates target NuGet v10.5.0-beta.6.", "version": "0.0.2-beta.1", "author": { "name": "JusterZhu" diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 0676726..aad2e10 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "generalupdate-skill", - "description": "Complete .NET auto-update skill suite for GeneralUpdate. 7 skills covering: Bootstrap scaffolding, update UI (6 frameworks), 6 strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl, IPC, AOT), 50+ known issues diagnosis with BM25 search engine, version migration, and security audit. All templates target NuGet v10.5.0-beta.4.", + "description": "Complete .NET auto-update skill suite for GeneralUpdate. 7 skills covering: Bootstrap scaffolding, update UI (6 frameworks), 6 strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl, IPC, AOT), 50+ known issues diagnosis with BM25 search engine, version migration, and security audit. All templates target NuGet v10.5.0-beta.6.", "version": "0.0.2-beta.1", "author": { "name": "JusterZhu" diff --git a/.claude/scripts/generate.py b/.claude/scripts/generate.py index 4a346fc..9ed7677 100644 --- a/.claude/scripts/generate.py +++ b/.claude/scripts/generate.py @@ -45,7 +45,7 @@ "name": "Differential Update", "slug": "differential", "description": "Delta patch update to save bandwidth (BSDIFF/HDiffPatch)", - "warning": "差分包大小建议不超过 2GB,避免 BSDIFF 整数溢出(v10.5.0-beta.4 已修复 #514)。", + "warning": "差分包大小建议不超过 2GB,避免 BSDIFF 整数溢出(v10.5.0-beta.6 已修复 #514)。", }, "cvp": { "name": "Cross-Version CVP", @@ -183,7 +183,7 @@ def generate_issue_warnings(strategy, variables): - H4: OSS 不区分 Main/Upgrade 更新包,接受此行为 - H5: Upgrade.exe 必须放在 update/ 子目录 - L7: 示例代码中 OSS endpoint/bucket 写死,建议用环境变量 - - M13: OssClient.AppType 值 3-4 在 v10.5.0-beta.4 中可用""", + - M13: OssClient.AppType 值 3-4 在 v10.5.0-beta.6 中可用""", "silent": """⚠️ 静默更新特有已知问题: - H2: 无限升级循环 — 确保 manifest.json 版本号正确 - M19: 静默通知可能不尊重系统的免打扰设置 diff --git a/.claude/scripts/generate/templates/bowl_notice.cs.template b/.claude/scripts/generate/templates/bowl_notice.cs.template index b0cb2da..ef055bd 100644 --- a/.claude/scripts/generate/templates/bowl_notice.cs.template +++ b/.claude/scripts/generate/templates/bowl_notice.cs.template @@ -1,6 +1,6 @@ // ⚠️ Bowl 崩溃守护 // dotnet add package GeneralUpdate.Bowl -// NuGet v10.5.0-beta.4: Bowl 与 Core 无类型冲突,可按需同时引用 +// NuGet v10.5.0-beta.6: Bowl 与 Core 无类型冲突,可按需同时引用 // Refer to generalupdate-advanced/templates/BowlIntegration.cs for full example var context = new GeneralUpdate.Bowl.BowlContext { diff --git a/.claude/skills/generalupdate-advanced/SKILL.md b/.claude/skills/generalupdate-advanced/SKILL.md index f90f0ea..c4f95eb 100644 --- a/.claude/skills/generalupdate-advanced/SKILL.md +++ b/.claude/skills/generalupdate-advanced/SKILL.md @@ -3,7 +3,7 @@ name: generalupdate-advanced description: | Reference guide for GeneralUpdate internal architecture — Pipeline, middleware, Strategy, Differential engine, Bowl crash monitor, FileTree, blacklist, and AOT. - Covers all extension points available in v10.5.0-beta.4 including Pipeline, Hooks, Bowl, AOT, and DiffPipeline. + Covers all extension points available in v10.5.0-beta.6 including Pipeline, Hooks, Bowl, AOT, and DiffPipeline. Triggers on: "extension points", "custom hooks", "Bowl", "crash dump", "IPC", "named pipe", "shared memory", "custom strategy", "download pipeline", "SSL policy", "auth provider", "custom download", "extension management", @@ -24,8 +24,8 @@ allowed-tools: "Read, Write, Edit, Glob" 涵盖扩展点架构、Pipeline 管道、差分引擎、Bowl 崩溃守护、事件系统、文件系统工具等。 -> ⚠️ **API 版本说明**:本指南基于 **NuGet v10.5.0-beta.4**。 -> 以下功能在 v10.5.0-beta.4 中全部**可用**: +> ⚠️ **API 版本说明**:本指南基于 **NuGet v10.5.0-beta.6**。 +> 以下功能在 v10.5.0-beta.6 中全部**可用**: > - ✅ `IUpdateHooks` 生命周期钩子(`Hooks()`) > - ✅ `IStrategy` 自定义策略注入(`Strategy()`) > - ✅ `SilentPollOrchestrator` 静默轮询器(`Option.Silent`) @@ -65,7 +65,7 @@ allowed-tools: "Read, Write, Edit, Glob" --- -## 1. Pipeline 管道系统(v10.5.0-beta.4 可用) +## 1. Pipeline 管道系统(v10.5.0-beta.6 可用) GeneralUpdate 使用 Pipeline 管道模式处理更新包的校验、解压、补丁应用。 @@ -100,7 +100,7 @@ await new PipelineBuilder(context) --- -## 2. 策略系统(v10.5.0-beta.4 可用) +## 2. 策略系统(v10.5.0-beta.6 可用) GeneralUpdate 内置三种平台策略,通过 `IStrategy` 接口实现: @@ -115,7 +115,7 @@ GeneralUpdate 内置三种平台策略,通过 `IStrategy` 接口实现: --- -## 3. Bowl 崩溃守护(v10.5.0-beta.4) +## 3. Bowl 崩溃守护(v10.5.0-beta.6) Bowl 是一个崩溃监控组件,通过 `MonitorParameter` 配置。 @@ -157,11 +157,11 @@ Console.WriteLine($"Result: Success={result.Success}, Restored={result.Restored} | `DumpType` | DumpType | Mini / Full | Full | | `OnCrash` | delegate | 崩溃回调 | null | -> ⚠️ NuGet v10.5.0-beta.4 中 Bowl 和 Core **无类型冲突**,可以同时引用。 +> ⚠️ NuGet v10.5.0-beta.6 中 Bowl 和 Core **无类型冲突**,可以同时引用。 --- -## 4. EventManager 事件系统(v10.5.0-beta.4 可用) +## 4. EventManager 事件系统(v10.5.0-beta.6 可用) EventManager 是一个全局单例,提供事件的发布和订阅: @@ -188,7 +188,7 @@ EventManager.Instance.Dispose(); --- -## 5. 文件系统工具(v10.5.0-beta.4 可用) +## 5. 文件系统工具(v10.5.0-beta.6 可用) ### BlackList(黑名单) @@ -217,7 +217,7 @@ var snapshot = tree.CreateSnapshot(@"C:\Program Files\MyApp"); --- -## 6. 差分引擎(v10.5.0-beta.4 可用,无需额外安装包) +## 6. 差分引擎(v10.5.0-beta.6 可用,无需额外安装包) 差分类型已内嵌在 `GeneralUpdate.Core` 中,**无需额外**安装 `GeneralUpdate.Differential` 包。 @@ -270,7 +270,7 @@ var dirtyMatcher = new DefaultDirtyMatcher(); // 或实现 IDirtyMatcher ## 7. AOT / NativeAOT 兼容性 -GeneralUpdate.Core v10.5.0-beta.4 支持 .NET Native AOT(`net8.0` 和 `net10.0`): +GeneralUpdate.Core v10.5.0-beta.6 支持 .NET Native AOT(`net8.0` 和 `net10.0`): ```xml @@ -313,26 +313,26 @@ var result = GeneralDrivelution.InstallDriver(driverPath); | 主题 | 可用性 | 参考 | |------|--------|------| -| Pipeline 管道 | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Pipeline` | -| 策略系统 | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Strategy` | -| FileTree | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.FileSystem` | -| BlackList | ✅ v10.5.0-beta.4 | `UpdateRequest.Files/Formats/Directories` → `ToBlackPolicy()` | +| Pipeline 管道 | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Pipeline` | +| 策略系统 | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Strategy` | +| FileTree | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.FileSystem` | +| BlackList | ✅ v10.5.0-beta.6 | `UpdateRequest.Files/Formats/Directories` → `ToBlackPolicy()` | | 差分引擎 | ✅ 内嵌 Core | `DiffPipelineBuilder` / `DiffPipeline` | -| AOT | ✅ v10.5.0-beta.4 | `JsonSerializerContext` 子类 | -| EventManager | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Event` | +| AOT | ✅ v10.5.0-beta.6 | `JsonSerializerContext` 子类 | +| EventManager | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Event` | | Bowl 崩溃守护 | ⚠️ 基础类型 | `GeneralUpdate.Bowl.Bowl` | -| IUpdateHooks | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Hooks` — `Hooks()` | -| 自定义 Strategy 注入 | ✅ v10.5.0-beta.4 | `Strategy()` | +| IUpdateHooks | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Hooks` — `Hooks()` | +| 自定义 Strategy 注入 | ✅ v10.5.0-beta.6 | `Strategy()` | | IPC 替换接口 | ❌ 暂不支持 | 使用 NamedPipe 替代方案 | -| SilentPollOrchestrator | ✅ v10.5.0-beta.4 | `Option.Silent` + `SetOption()` | -| Option 系统 | ✅ v10.5.0-beta.4 | `SetOption(Option, T)` | +| SilentPollOrchestrator | ✅ v10.5.0-beta.6 | `Option.Silent` + `SetOption()` | +| Option 系统 | ✅ v10.5.0-beta.6 | `SetOption(Option, T)` | --- ## ✅ 高级定制验证清单 ### Bowl 崩溃守护 -- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.4 无冲突) +- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.6 无冲突) - [ ] `MonitorParameter` 的 `ProcessNameOrId` 与实际进程名匹配 - [ ] `TargetPath` 设置为应用安装根目录,非子目录 - [ ] `WorkModel` 根据场景选择 Correct(Normal/Upgrade) diff --git a/.claude/skills/generalupdate-advanced/reference.md b/.claude/skills/generalupdate-advanced/reference.md index 4ebb1c3..3a532c6 100644 --- a/.claude/skills/generalupdate-advanced/reference.md +++ b/.claude/skills/generalupdate-advanced/reference.md @@ -1,8 +1,8 @@ # GeneralUpdate 扩展参考 -> ⚠️ 基于 **NuGet v10.5.0-beta.4** API。 +> ⚠️ 基于 **NuGet v10.5.0-beta.6** API。 -## 注入方法调用链(v10.5.0-beta.4) +## 注入方法调用链(v10.5.0-beta.6) ```csharp new GeneralUpdateBootstrap() diff --git a/.claude/skills/generalupdate-advanced/templates/BowlIntegration.cs b/.claude/skills/generalupdate-advanced/templates/BowlIntegration.cs index 169c026..aa327e3 100644 --- a/.claude/skills/generalupdate-advanced/templates/BowlIntegration.cs +++ b/.claude/skills/generalupdate-advanced/templates/BowlIntegration.cs @@ -9,7 +9,7 @@ /// If a crash is detected, it captures a dump, exports diagnostics, /// and optionally restores the previous version from backup. /// -/// NuGet: dotnet add package GeneralUpdate.Bowl --version 10.5.0-beta.4 +/// NuGet: dotnet add package GeneralUpdate.Bowl --version 10.5.0-beta.6 /// Note: Reference only GeneralUpdate.Bowl (it transitively includes Core). /// Do NOT reference GeneralUpdate.Core separately when using Bowl. /// diff --git a/.claude/skills/generalupdate-advanced/templates/CustomHooks.cs b/.claude/skills/generalupdate-advanced/templates/CustomHooks.cs index bc44e14..c149b4c 100644 --- a/.claude/skills/generalupdate-advanced/templates/CustomHooks.cs +++ b/.claude/skills/generalupdate-advanced/templates/CustomHooks.cs @@ -2,7 +2,7 @@ using GeneralUpdate.Core.Hooks; /// -/// 【Skill 参考】自定义生命周期 Hooks (v10.5.0-beta.4 可用) +/// 【Skill 参考】自定义生命周期 Hooks (v10.5.0-beta.6 可用) /// /// 通过 IUpdateHooks 接口可以拦截更新流程的各个阶段: /// - OnBeforeUpdateAsync: 更新开始前(可取消) diff --git a/.claude/skills/generalupdate-advanced/templates/CustomStrategy.cs b/.claude/skills/generalupdate-advanced/templates/CustomStrategy.cs index 23ce5e4..e2f1c16 100644 --- a/.claude/skills/generalupdate-advanced/templates/CustomStrategy.cs +++ b/.claude/skills/generalupdate-advanced/templates/CustomStrategy.cs @@ -5,7 +5,7 @@ using GeneralUpdate.Core.Download.Reporting; /// -/// 【Skill 参考】自定义平台策略(v10.5.0-beta.4 可用) +/// 【Skill 参考】自定义平台策略(v10.5.0-beta.6 可用) /// /// 通过 bootstrap.Strategy<T>() 注入自定义策略。 /// 自定义策略需要实现 IStrategy 接口。 diff --git a/.claude/skills/generalupdate-init/SKILL.md b/.claude/skills/generalupdate-init/SKILL.md index e106aa5..782d916 100644 --- a/.claude/skills/generalupdate-init/SKILL.md +++ b/.claude/skills/generalupdate-init/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: "Bash, Read, Write, Edit, Glob, Grep, WebSearch" 帮助开发者在任意 .NET 应用中集成 GeneralUpdate 自动更新。从零开始,覆盖所有配置方式、部署场景和生产环境考量。 -> ⚠️ **针对 NuGet v10.5.0-beta.4**。`Configinfo` 已被 `UpdateRequest` 替代,命名空间已移至 `GeneralUpdate.Core.Configuration`。 +> ⚠️ **针对 NuGet v10.5.0-beta.6**。`Configinfo` 已被 `UpdateRequest` 替代,命名空间已移至 `GeneralUpdate.Core.Configuration`。 --- @@ -176,7 +176,7 @@ await new GeneralUpdateBootstrap() ### 应用角色(AppType) -`AppType` 是一个 enum(v10.5.0-beta.4): +`AppType` 是一个 enum(v10.5.0-beta.6): | 值 | 名称 | 说明 | |----|------|------| @@ -323,14 +323,14 @@ publish/ ## ⚠️ 已知问题 -### NuGet 注意事项(v10.5.0-beta.4) -`GeneralUpdate.Core` 和 `GeneralUpdate.Bowl` **可以同时引用**(v10.5.0-beta.4 中无 CS0433 冲突)。 +### NuGet 注意事项(v10.5.0-beta.6) +`GeneralUpdate.Core` 和 `GeneralUpdate.Bowl` **可以同时引用**(v10.5.0-beta.6 中无 CS0433 冲突)。 - 使用 Core:`dotnet add package GeneralUpdate.Core` - 使用 Bowl:`dotnet add package GeneralUpdate.Bowl`(它**不**传递依赖 Core,需要同时引用 Core) - 差分类型已内嵌在 Core,**无需额外** `GeneralUpdate.Differential` 包 ### 稳定版功能增强 -v10.5.0-beta.4 新增以下功能: +v10.5.0-beta.6 新增以下功能: - ✅ `IUpdateHooks` 生命周期钩子 — `Hooks()` - ✅ 可编程 `Option` 系统 — `SetOption(Option.Silent, true)` - ✅ `SilentPollOrchestrator` 静默轮询 @@ -353,7 +353,7 @@ v10.5.0-beta.4 新增以下功能: ### NuGet & 编译 - [ ] Client 和 Upgrade 项目使用**完全相同**的 GeneralUpdate NuGet 版本 -- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.4 无冲突) +- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.6 无冲突) - [ ] 项目能正常 `dotnet build`(0 errors) - [ ] 无需额外引用 `GeneralUpdate.Differential`(已嵌入 Core) @@ -377,7 +377,7 @@ v10.5.0-beta.4 新增以下功能: |---|--------|------|---------| | 1 | **Core 和 Bowl NuGet 版本不一致** | 运行时 MethodNotFoundException | 使用相同 NuGet 版本 | | 2 | **Bowl 缺少 `GeneralUpdate.Core` 引用** | 编译失败,缺少 Core 类型 | Bowl 不传递依赖 Core,需同时引用 Core | -| 3 | **Bowl 传递依赖 Core 的误解** | 编译失败 | v10.5.0-beta.4 中 Bowl 是独立包,需单独引用 Core | +| 3 | **Bowl 传递依赖 Core 的误解** | 编译失败 | v10.5.0-beta.6 中 Bowl 是独立包,需单独引用 Core | | 4 | **Client/Upgrade NuGet 版本号不一致** | 运行时 MethodNotFoundException | 锁定完全相同版本 | | 5 | **事件监听中做耗时操作(网络 IO / 磁盘 IO)** | Update 进程 UI 卡死,超时被 Kill | 仅更新 UI 状态,耗时操作异步 | | 6 | **IPC 文件编码未设置 UTF-8** | Linux/macOS 中文乱码 | `Encoding.UTF8` | diff --git a/.claude/skills/generalupdate-init/project-scaffold/ClientApp.csproj b/.claude/skills/generalupdate-init/project-scaffold/ClientApp.csproj index 10e7b7d..cbceb80 100644 --- a/.claude/skills/generalupdate-init/project-scaffold/ClientApp.csproj +++ b/.claude/skills/generalupdate-init/project-scaffold/ClientApp.csproj @@ -8,7 +8,7 @@ - + diff --git a/.claude/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj b/.claude/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj index 55ebd68..c891885 100644 --- a/.claude/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj +++ b/.claude/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj @@ -6,12 +6,12 @@ enable - + diff --git a/.claude/skills/generalupdate-init/reference.md b/.claude/skills/generalupdate-init/reference.md index f74f44e..f50007b 100644 --- a/.claude/skills/generalupdate-init/reference.md +++ b/.claude/skills/generalupdate-init/reference.md @@ -1,6 +1,6 @@ # GeneralUpdate 参考手册 -> ⚠️ **针对 NuGet v10.5.0-beta.4 API**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 +> ⚠️ **针对 NuGet v10.5.0-beta.6 API**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 ## NuGet 包 @@ -8,15 +8,15 @@ | 包名 | 用途 | 必需 | .NET 版本 | 典型版本 | |------|------|------|-----------|---------| -| `GeneralUpdate.Core` | 核心引擎(Bootstrap/下载/事件) | ✅ 是 | net8.0;net10.0 | 10.5.0-beta.4 | -| `GeneralUpdate.Differential` | BSDIFF/HDiffPatch 差分补丁 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.4 | -| `GeneralUpdate.Bowl` | 进程崩溃监控、MiniDump、自动回滚 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.4 | +| `GeneralUpdate.Core` | 核心引擎(Bootstrap/下载/事件) | ✅ 是 | net8.0;net10.0 | 10.5.0-beta.6 | +| `GeneralUpdate.Differential` | BSDIFF/HDiffPatch 差分补丁 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.6 | +| `GeneralUpdate.Bowl` | 进程崩溃监控、MiniDump、自动回滚 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.6 | | `GeneralUpdate.Extension` | 插件管理系统 | ❌ 可选 | net8.0;net10.0 | ≥ 10.5.0 | -| `GeneralUpdate.Drivelution` | Windows 驱动更新 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.4 | +| `GeneralUpdate.Drivelution` | Windows 驱动更新 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.6 | -> ⚠️ **NuGet 注意事项**(v10.5.0-beta.4): +> ⚠️ **NuGet 注意事项**(v10.5.0-beta.6): > - `GeneralUpdate.Differential` 的 `DifferentialCore` 等类型已内嵌在 `GeneralUpdate.Core` 中,**不需额外引用**(直接使用 Core 即可) -> - `GeneralUpdate.Bowl` 和 `GeneralUpdate.Core` **可以同时引用**(v10.5.0-beta.4 中 Bowl 与 Core 无共用类型,不再冲突) +> - `GeneralUpdate.Bowl` 和 `GeneralUpdate.Core` **可以同时引用**(v10.5.0-beta.6 中 Bowl 与 Core 无共用类型,不再冲突) > - 使用 Bowl 时仍需引用 `GeneralUpdate.Bowl`(它**不**传递依赖 Core) ## UpdateRequest 字段完整说明 diff --git a/.claude/skills/generalupdate-init/templates/FullIntegration.cs b/.claude/skills/generalupdate-init/templates/FullIntegration.cs index 40c89fa..84efb50 100644 --- a/.claude/skills/generalupdate-init/templates/FullIntegration.cs +++ b/.claude/skills/generalupdate-init/templates/FullIntegration.cs @@ -14,7 +14,7 @@ /// - 错误处理 /// - Upgrade 进程配置 /// -/// 针对 NuGet v10.5.0-beta.4 +/// 针对 NuGet v10.5.0-beta.6 /// public static class FullIntegration { diff --git a/.claude/skills/generalupdate-init/templates/MinimalIntegration.cs b/.claude/skills/generalupdate-init/templates/MinimalIntegration.cs index f397b07..b03b77a 100644 --- a/.claude/skills/generalupdate-init/templates/MinimalIntegration.cs +++ b/.claude/skills/generalupdate-init/templates/MinimalIntegration.cs @@ -16,7 +16,7 @@ /// 如果以上条件不满足,请使用 FullIntegration.cs 显式配置。 /// /// NuGet: dotnet add package GeneralUpdate.Core -/// ⚠️ 针对 NuGet v10.5.0-beta.4 +/// ⚠️ 针对 NuGet v10.5.0-beta.6 /// public static class MinimalIntegration { diff --git a/.claude/skills/generalupdate-migration/SKILL.md b/.claude/skills/generalupdate-migration/SKILL.md index 839dda7..ed1a73d 100644 --- a/.claude/skills/generalupdate-migration/SKILL.md +++ b/.claude/skills/generalupdate-migration/SKILL.md @@ -118,7 +118,7 @@ await new GeneralUpdateBootstrap() ### 编译验证 - [ ] `dotnet build` 无错误 - [ ] 无 `MissingMethodException` 的风险(检查所有方法名是否存在于 v10.4.6) -- [ ] 无 `CS0433` 类型冲突(v10.5.0-beta.4 中 Core + Bowl 无冲突,可同时引用) +- [ ] 无 `CS0433` 类型冲突(v10.5.0-beta.6 中 Core + Bowl 无冲突,可同时引用) ### 架构验证 - [ ] 项目已拆分为 Client + Upgrade 两个独立项目 diff --git a/.claude/skills/generalupdate-strategy/SKILL.md b/.claude/skills/generalupdate-strategy/SKILL.md index dc6c31e..a81b05a 100644 --- a/.claude/skills/generalupdate-strategy/SKILL.md +++ b/.claude/skills/generalupdate-strategy/SKILL.md @@ -25,7 +25,7 @@ allowed-tools: "Read, Write, Edit, Glob" # ⚙️ GeneralUpdate 更新策略完全指南 -> ⚠️ **针对 NuGet v10.5.0-beta.4**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 +> ⚠️ **针对 NuGet v10.5.0-beta.6**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 --- diff --git a/.claude/skills/generalupdate-strategy/examples/ClientServerStrategy.cs b/.claude/skills/generalupdate-strategy/examples/ClientServerStrategy.cs index e5458ef..70bfe13 100644 --- a/.claude/skills/generalupdate-strategy/examples/ClientServerStrategy.cs +++ b/.claude/skills/generalupdate-strategy/examples/ClientServerStrategy.cs @@ -11,7 +11,7 @@ /// - (可选) POST /Upgrade/Report — 状态上报 /// /// NuGet: dotnet add package GeneralUpdate.Core -/// ⚠️ 针对 NuGet v10.5.0-beta.4 +/// ⚠️ 针对 NuGet v10.5.0-beta.6 /// public static class ClientServerStrategy { diff --git a/.claude/skills/generalupdate-strategy/examples/DifferentialStrategy.cs b/.claude/skills/generalupdate-strategy/examples/DifferentialStrategy.cs index f82104d..a3370a4 100644 --- a/.claude/skills/generalupdate-strategy/examples/DifferentialStrategy.cs +++ b/.claude/skills/generalupdate-strategy/examples/DifferentialStrategy.cs @@ -8,12 +8,12 @@ /// 适用于应用体积大(>100MB)或带宽受限的场景。 /// 仅传输变动的文件部分,节省 60-90% 带宽。 /// -/// v10.5.0-beta.4 通过 UseDiffPipeline(Action{DiffPipelineBuilder}) 配置差分。 +/// v10.5.0-beta.6 通过 UseDiffPipeline(Action{DiffPipelineBuilder}) 配置差分。 /// /// NuGet: /// dotnet add package GeneralUpdate.Core /// -/// ⚠️ 注意:GeneralUpdate.Core v10.5.0-beta.4 已内置差分支持, +/// ⚠️ 注意:GeneralUpdate.Core v10.5.0-beta.6 已内置差分支持, /// 无需额外安装 GeneralUpdate.Differential 包。 /// public static class DifferentialStrategy diff --git a/.claude/skills/generalupdate-strategy/examples/SilentStrategy.cs b/.claude/skills/generalupdate-strategy/examples/SilentStrategy.cs index 14a1dcd..a2d4504 100644 --- a/.claude/skills/generalupdate-strategy/examples/SilentStrategy.cs +++ b/.claude/skills/generalupdate-strategy/examples/SilentStrategy.cs @@ -8,7 +8,7 @@ /// 适用于用户长期不关闭应用的场景(如桌面工具、监控面板)。 /// GeneralUpdate 在检测到更新后自动后台下载,下次启动时应用新版本。 /// -/// v10.5.0-beta.4 通过 SetOption(Option.Silent, true) 启用静默模式。 +/// v10.5.0-beta.6 通过 SetOption(Option.Silent, true) 启用静默模式。 /// /// NuGet: dotnet add package GeneralUpdate.Core /// diff --git a/.claude/skills/generalupdate-troubleshoot/reference.md b/.claude/skills/generalupdate-troubleshoot/reference.md index 4633fa9..fb29ad8 100644 --- a/.claude/skills/generalupdate-troubleshoot/reference.md +++ b/.claude/skills/generalupdate-troubleshoot/reference.md @@ -258,7 +258,7 @@ public void OnAppClosing() **修复**:更新到 v10.4.6+(已实现 WriteBack)。旧版本手动处理: ```csharp -/// v10.5.0-beta.4 支持 IUpdateHooks 接口,可通过 Hooks() 注册 UnixPermissionHooks 或自定义实现。 +/// v10.5.0-beta.6 支持 IUpdateHooks 接口,可通过 Hooks() 注册 UnixPermissionHooks 或自定义实现。 /// 如需在更新后回写版本号,可使用 ManifestInfo.TryUpdateVersion()。 ``` @@ -346,7 +346,7 @@ bootstrap.SetOption(Option.RetryCount, 5); bootstrap.Hooks(); ``` -> ✅ v10.5.0-beta.4 支持 IUpdateHooks 接口。Linux 权限问题使用 `bootstrap.Hooks()` 自动解决。 +> ✅ v10.5.0-beta.6 支持 IUpdateHooks 接口。Linux 权限问题使用 `bootstrap.Hooks()` 自动解决。 ### M9. IPC 加密文件被防病毒软件隔离 @@ -526,7 +526,7 @@ bootstrap.Hooks(); | 来源 | #IJQ0Q5 | |------|---------| -| **建议** | v10.5.0-beta.4 支持 Option.Silent 选项 | +| **建议** | v10.5.0-beta.6 支持 Option.Silent 选项 | ### L12. OSS 模式下传的 ZIP 包编码无法解压 diff --git a/.claude/skills/generalupdate-ui/SKILL.md b/.claude/skills/generalupdate-ui/SKILL.md index d6b8ac5..a7946ac 100644 --- a/.claude/skills/generalupdate-ui/SKILL.md +++ b/.claude/skills/generalupdate-ui/SKILL.md @@ -25,7 +25,7 @@ allowed-tools: "Read, Write, Edit, Glob, Grep" 自动检测开发者的 UI 框架类型,生成带真实 GeneralUpdate.Core 事件绑定的完整更新窗口代码。 -> ⚠️ 针对 NuGet v10.5.0-beta.4。`RealDownloadService.cs` 已使用 `UpdateRequest` 和正确的命名空间。 +> ⚠️ 针对 NuGet v10.5.0-beta.6。`RealDownloadService.cs` 已使用 `UpdateRequest` 和正确的命名空间。 --- @@ -150,7 +150,7 @@ allowed-tools: "Read, Write, Edit, Glob, Grep" 所有 UI 模板共享这个桥接类,将 GeneralUpdate.Core 的事件映射到 `IDownloadService` 接口。 -### 桥接逻辑(v10.5.0-beta.4) +### 桥接逻辑(v10.5.0-beta.6) ```csharp // GeneralUpdate.Core 事件 → DownloadStatus 状态机映射: @@ -193,7 +193,7 @@ GeneralUpdateBootstrap.AddListenerException ### 事件桥接 - [ ] 所有 6 个事件都已绑定(UpdateInfo, MultiDownloadStatistics, MultiDownloadCompleted, MultiDownloadError, MultiAllDownloadCompleted, Exception) - [ ] 桥接代码使用正确的 EventArgs 类型(检查命名空间 `GeneralUpdate.Core.Download` / `GeneralUpdate.Core.Event`) -- [ ] `IsCompleted` 属性名正确(v10.5.0-beta.4 使用 `IsCompleted`) +- [ ] `IsCompleted` 属性名正确(v10.5.0-beta.6 使用 `IsCompleted`) ### 线程安全 - [ ] UI 更新操作在正确的线程上执行(WPF/Avalonia 用 `Dispatcher`,WinForms 用 `Invoke`,MAUI 用 `MainThread`) diff --git a/.claude/skills/generalupdate-ui/templates/AntdUIStyle.cs b/.claude/skills/generalupdate-ui/templates/AntdUIStyle.cs index 95056ca..5f579d3 100644 --- a/.claude/skills/generalupdate-ui/templates/AntdUIStyle.cs +++ b/.claude/skills/generalupdate-ui/templates/AntdUIStyle.cs @@ -94,7 +94,7 @@ private async Task StartUpdateAsync(CancellationToken token) InstallPath = ".", }; - // v10.5.0-beta.4 API + // v10.5.0-beta.6 API await new GeneralUpdateBootstrap() .SetConfig(config) .AddListenerMultiDownloadStatistics((_, e) => diff --git a/.claude/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs b/.claude/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs index cbee004..80f6758 100644 --- a/.claude/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs +++ b/.claude/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs @@ -8,7 +8,7 @@ namespace MauiUpdate.ViewModels; /// /// 【Skill 自动生成】MAUI 更新页面 ViewModel -/// 针对 NuGet v10.5.0-beta.4 API +/// 针对 NuGet v10.5.0-beta.6 API /// public partial class UpdateViewModel : ObservableObject { @@ -51,7 +51,7 @@ private async Task StartUpdateAsync() InstallPath = ".", }; - // v10.5.0-beta.4 API:UpdateRequest + SetConfig + LaunchAsync + // v10.5.0-beta.6 API:UpdateRequest + SetConfig + LaunchAsync await new GeneralUpdateBootstrap() .SetConfig(config) .AddListenerUpdateInfo((_, e) => diff --git a/.claude/skills/generalupdate-ui/templates/RealDownloadService.cs b/.claude/skills/generalupdate-ui/templates/RealDownloadService.cs index e89a01e..93bb99a 100644 --- a/.claude/skills/generalupdate-ui/templates/RealDownloadService.cs +++ b/.claude/skills/generalupdate-ui/templates/RealDownloadService.cs @@ -14,7 +14,7 @@ namespace Common.Avalonia.Services; /// 覆盖全部 UI 状态:Idle → Checking → FoundUpdate → Downloading → Paused /// → DownloadError → Applying → Success / Failed → RollingBack /// -/// ⚠️ 针对 NuGet v10.5.0-beta.4 API。 +/// ⚠️ 针对 NuGet v10.5.0-beta.6 API。 /// Configinfo → UpdateRequest 替换,命名空间更新。 /// public class RealDownloadService : IDownloadService diff --git a/.clinerules/01-generalupdate-init.md b/.clinerules/01-generalupdate-init.md index abd163b..dc59909 100644 --- a/.clinerules/01-generalupdate-init.md +++ b/.clinerules/01-generalupdate-init.md @@ -4,7 +4,7 @@ globs: ["**/*.cs", "**/*.csproj", "**/*.json"] tags: ["dotnet", "update", "generalupdate"] --- -# GeneralUpdate 快速集成 (v10.5.0-beta.4 API) +# GeneralUpdate 快速集成 (v10.5.0-beta.6 API) ## NuGet: GeneralUpdate.Core(必需), Bowl(可选, 与Core互斥), Differential(嵌入Core无需额外引用) @@ -13,7 +13,7 @@ tags: ["dotnet", "update", "generalupdate"] new UpdateRequest { ... }.SetConfig().LaunchAsync() ``` -## 核心 API(v10.5.0-beta.4) +## 核心 API(v10.5.0-beta.6) - UpdateRequest 属性: UpdateUrl, AppSecretKey, InstallPath, ClientVersion, MainAppName, ProductId - 零配置入口: `SetSource(updateUrl, appSecretKey)` - 可编程选项: `SetOption(Option.Silent, true)`, `SetOption(Option.MaxConcurrency, 4)` diff --git a/.clinerules/03-generalupdate-strategy.md b/.clinerules/03-generalupdate-strategy.md index f504421..20dabee 100644 --- a/.clinerules/03-generalupdate-strategy.md +++ b/.clinerules/03-generalupdate-strategy.md @@ -36,6 +36,6 @@ tags: ["dotnet", "generalupdate"] | Platform | Notes | |----------|-------| | **Windows** | Uses **Bowl** crash daemon (restarts the app bus on unhandled exception). Full file-system access. | -| **Linux / macOS** | ✅ v10.5.0-beta.4 提供 `UnixPermissionHooks`,通过 `bootstrap.Hooks()` 自动设置执行权限。目标框架建议 .NET 8+。 | +| **Linux / macOS** | ✅ v10.5.0-beta.6 提供 `UnixPermissionHooks`,通过 `bootstrap.Hooks()` 自动设置执行权限。目标框架建议 .NET 8+。 | > For the full Bootstrap pipeline and middleware architecture, see `01-generalupdate-init.md`. diff --git a/.clinerules/04-generalupdate-advanced.md b/.clinerules/04-generalupdate-advanced.md index 20ab3a9..97ec882 100644 --- a/.clinerules/04-generalupdate-advanced.md +++ b/.clinerules/04-generalupdate-advanced.md @@ -4,9 +4,9 @@ globs: ["**/*.cs"] tags: ["dotnet", "generalupdate", "advanced"] --- -# 高级定制 (v10.5.0-beta.4 可用功能 ✅) +# 高级定制 (v10.5.0-beta.6 可用功能 ✅) -## ✅ v10.5.0-beta.4 支持以下扩展点 +## ✅ v10.5.0-beta.6 支持以下扩展点 - ✅ `IUpdateHooks` — 生命周期钩子: `bootstrap.Hooks()` - ✅ `IStrategy` — 自定义策略: `bootstrap.Strategy()` - ✅ `IUpdateReporter` — 自定义上报 @@ -29,7 +29,7 @@ bootstrap.SetOption(Option.SilentPollIntervalMinutes, 120); ## Bowl: procdump->监控->dump->故障报告->AutoRestore(可用,属于独立模块) - Bowl 引用规则:只用 `GeneralUpdate.Bowl`,不额外引用 Core -## AOT: v10.5.0-beta.4 支持 NativeAOT (net8.0+), SignalR 推荐 JSON + JsonSerializerContext +## AOT: v10.5.0-beta.6 支持 NativeAOT (net8.0+), SignalR 推荐 JSON + JsonSerializerContext ## 命名空间速查 - `GeneralUpdate.Core.Hooks` — IUpdateHooks, HookContext, NoOpUpdateHooks, UnixPermissionHooks diff --git a/.cursor/rules/generalupdate-advanced.mdc b/.cursor/rules/generalupdate-advanced.mdc index 3eb71b4..6227a08 100644 --- a/.cursor/rules/generalupdate-advanced.mdc +++ b/.cursor/rules/generalupdate-advanced.mdc @@ -4,9 +4,9 @@ globs: ["**/*.cs", "**/*.csproj"] alwaysApply: false --- -# GeneralUpdate 高级定制 (v10.5.0-beta.4 ✅) +# GeneralUpdate 高级定制 (v10.5.0-beta.6 ✅) -## ✅ v10.5.0-beta.4 支持以下扩展点 +## ✅ v10.5.0-beta.6 支持以下扩展点 - ✅ `Hooks()` — IUpdateHooks 生命周期钩子 - ✅ `Strategy()` — IStrategy 自定义策略注入 - ✅ `HttpAuth()` — IHttpAuthProvider 自定义认证 diff --git a/.cursor/rules/generalupdate-init.mdc b/.cursor/rules/generalupdate-init.mdc index 676dfed..f6299f6 100644 --- a/.cursor/rules/generalupdate-init.mdc +++ b/.cursor/rules/generalupdate-init.mdc @@ -4,14 +4,14 @@ globs: ["**/*.cs", "**/*.csproj", "**/*.json"] alwaysApply: false --- -# GeneralUpdate 快速集成 (v10.5.0-beta.4 API) +# GeneralUpdate 快速集成 (v10.5.0-beta.6 API) ## NuGet -- `GeneralUpdate.Core` — 必需 (10.5.0-beta.4) +- `GeneralUpdate.Core` — 必需 (10.5.0-beta.6) - `GeneralUpdate.Bowl` — 可选(只用 Bowl,不额外引用 Core,两者互斥) - ~~`GeneralUpdate.Differential`~~ — 已嵌入 Core,无需额外引用 -## 最小集成 (v10.5.0-beta.4) +## 最小集成 (v10.5.0-beta.6) ```csharp new UpdateRequest { ... }.SetConfig().LaunchAsync() ``` diff --git a/.cursor/rules/generalupdate-strategy.mdc b/.cursor/rules/generalupdate-strategy.mdc index eae1f2f..27fde70 100644 --- a/.cursor/rules/generalupdate-strategy.mdc +++ b/.cursor/rules/generalupdate-strategy.mdc @@ -25,4 +25,4 @@ alwaysApply: false ## 平台差异 Windows: Hash->解压->Patch+Bowl+Drivelution -Linux/macOS: Hash->解压->Patch(✅ v10.5.0-beta.4 提供 UnixPermissionHooks,通过 `bootstrap.Hooks()` 自动设置执行权限) +Linux/macOS: Hash->解压->Patch(✅ v10.5.0-beta.6 提供 UnixPermissionHooks,通过 `bootstrap.Hooks()` 自动设置执行权限) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 615595f..dbfc655 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,7 +1,7 @@ # GeneralUpdate Auto-Update Integration Guide > Comprehensive reference for integrating GeneralUpdate into .NET applications. -> ⚠️ Targeting **NuGet v10.5.0-beta.4** API (UpdateRequest + SetConfig + LaunchAsync, with SetSource/SetOption/Hooks/Strategy). +> ⚠️ Targeting **NuGet v10.5.0-beta.6** API (UpdateRequest + SetConfig + LaunchAsync, with SetSource/SetOption/Hooks/Strategy). ## Architecture - Dual-process: Client (verification/download/IPC) + Upgrade (file replacement) @@ -14,7 +14,7 @@ - With Bowl: reference **only** `GeneralUpdate.Bowl` (the two conflict if referenced together) - Differential: already embedded in Core, no extra package needed -## Bootstrap Setup (v10.5.0-beta.4) +## Bootstrap Setup (v10.5.0-beta.6) ```csharp var config = new UpdateRequest { @@ -40,7 +40,7 @@ await new GeneralUpdateBootstrap() .LaunchAsync(); ``` -## Events (v10.5.0-beta.4) +## Events (v10.5.0-beta.6) - AddListenerUpdateInfo → UpdateInfoEventArgs (namespace: GeneralUpdate.Core.Download) - AddListenerMultiDownloadStatistics → MultiDownloadStatisticsEventArgs - AddListenerMultiDownloadCompleted → MultiDownloadCompletedEventArgs **(IsCompleted)** diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98a673c..50ae2d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -149,7 +149,7 @@ jobs: enable - + "@ | Out-File -FilePath "$testDir\TestProject.csproj" -Encoding UTF8 diff --git a/BUGS.md b/BUGS.md index 481d843..cdd8858 100644 --- a/BUGS.md +++ b/BUGS.md @@ -1,15 +1,15 @@ # GeneralUpdate Skill CodeGen — 审计报告 > 审计日期:2026-06-16 -> **当前状态:全部模板已针对 NuGet v10.5.0-beta.4 更新,已通过 dotnet build 编译验证(0 errors)** +> **当前状态:全部模板已针对 NuGet v10.5.0-beta.6 更新,已通过 dotnet build 编译验证(0 errors)** --- -## 版本升级:v10.4.6 稳定版 → v10.5.0-beta.4 +## 版本升级:v10.4.6 稳定版 → v10.5.0-beta.6 -套件从 NuGet v10.4.6 稳定版升级到 v10.5.0-beta.4。主要变更: +套件从 NuGet v10.4.6 稳定版升级到 v10.5.0-beta.6。主要变更: -| 功能 | v10.4.6 (旧) | v10.5.0-beta.4 (新) | +| 功能 | v10.4.6 (旧) | v10.5.0-beta.6 (新) | |------|-------------|---------------------| | 配置对象 | `Configinfo` (已移除) | `UpdateRequest` (新) | | 配置命名空间 | `GeneralUpdate.Common.Shared.Object` | `GeneralUpdate.Core.Configuration` | @@ -28,7 +28,7 @@ ## 修复状态 -> ✅ **全部更新完成**。所有模板文件已更新为 v10.5.0-beta.4 API。 +> ✅ **全部更新完成**。所有模板文件已更新为 v10.5.0-beta.6 API。 > ✅ **已知问题全部确认解决**。Bowl API 已验证,NuGet 类型冲突已修复,版本号已统一,CLI 已编译。 | 类别 | 更新内容 | 状态 | @@ -37,7 +37,7 @@ | 🔴 命名空间迁移 | Common.Shared.Object → Core.Configuration | ✅ | | 🔴 事件参数命名空间 | Common.Download → Core.Download | ✅ | | 🟠 IsComplated → IsCompleted | 所有事件处理代码 | ✅ | -| 🟠 BuildProperties.csproj 版本 | 5.* → 10.5.0-beta.4 | ✅ | +| 🟠 BuildProperties.csproj 版本 | 5.* → 10.5.0-beta.6 | ✅ | | 🟡 文档更新 | SKILL.md / reference.md / RULES.md | ✅ | | 🔵 高级模板 | CustomHooks/CustomStrategy 激活 v10.5 功能 | ✅ | @@ -45,10 +45,10 @@ ## 已知剩余问题 -### 1. NuGet 类型冲突(v10.5.0-beta.4 ✅ 已解决) +### 1. NuGet 类型冲突(v10.5.0-beta.6 ✅ 已解决) `GeneralUpdate.Common` 独立命名空间在 v10.4.6 中存在于 `GeneralUpdate.Core` 中,与 `GeneralUpdate.Bowl` 冲突。 -**v10.5.0-beta.4 已解决**:Bowl 项目不再引用 Core,各自使用独立的 `GeneralUpdate.Bowl` / `GeneralUpdate.Core` 命名空间。 +**v10.5.0-beta.6 已解决**:Bowl 项目不再引用 Core,各自使用独立的 `GeneralUpdate.Bowl` / `GeneralUpdate.Core` 命名空间。 | 场景 | 引用方式 | 状态 | |------|---------|:----:| @@ -56,9 +56,9 @@ | 无 Bowl | 只引用 `GeneralUpdate.Core` | ✅ 正常 | | 两者都用 | 同时引用 Core + Bowl | ✅ 无冲突 | -### 2. Bowl LaunchAsync(v10.5.0-beta.4 ✅ 已验证) +### 2. Bowl LaunchAsync(v10.5.0-beta.6 ✅ 已验证) -`Bowl` 类在 v10.5.0-beta.4 中有公开的 `LaunchAsync` 方法: +`Bowl` 类在 v10.5.0-beta.6 中有公开的 `LaunchAsync` 方法: ```csharp public async Task LaunchAsync(BowlContext context, CancellationToken ct = default) diff --git a/README.en.md b/README.en.md index 2886f40..1876544 100644 --- a/README.en.md +++ b/README.en.md @@ -4,7 +4,7 @@ Covers 50+ known issues discovered from real GitHub/Gitee feedback, providing production-ready code generation and deep troubleshooting. -> Version: 0.0.2-beta.1 (2026-06-16) — targets NuGet `GeneralUpdate.Core 10.5.0-beta.4` +> Version: 0.0.2-beta.1 (2026-06-16) — targets NuGet `GeneralUpdate.Core 10.5.0-beta.6` --- @@ -119,7 +119,7 @@ All skill content is derived from real-world sources: > - With Bowl: reference **only** `GeneralUpdate.Bowl` (it transitively includes Core — the two cannot coexist) > - Differential types are already embedded in Core, **no need** for `GeneralUpdate.Differential` -> ⚠️ **API Surface**: v10.5.0-beta.4 introduces the new `UpdateRequest` config system and adds programmable `Option`, `IUpdateHooks`, `IStrategy`, and other extension points. +> ⚠️ **API Surface**: v10.5.0-beta.6 introduces the new `UpdateRequest` config system and adds programmable `Option`, `IUpdateHooks`, `IStrategy`, and other extension points. See [BUGS.md](BUGS.md) for the full audit trail. diff --git a/README.md b/README.md index 321c04e..88a9ba6 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Covers 50+ known issues discovered from real GitHub/Gitee feedback, providing production-ready code generation and deep troubleshooting. -> **Current Version: 0.0.2-beta.1** — targets NuGet `GeneralUpdate.Core 10.5.0-beta.4` -> Compatibility: `v10.5.0-beta.4` (NuGet latest preview) +> **Current Version: 0.0.2-beta.1** — targets NuGet `GeneralUpdate.Core 10.5.0-beta.6` +> Compatibility: `v10.5.0-beta.6` (NuGet latest preview) > All templates verified via `dotnet build` (0 errors). --- @@ -121,7 +121,7 @@ All skill content is derived from real-world sources: > - With Bowl: reference **only** `GeneralUpdate.Bowl` (it transitively includes Core — the two cannot coexist) > - Differential types are already embedded in Core, **no need** for `GeneralUpdate.Differential` -> ⚠️ **API Surface**: v10.5.0-beta.4 introduces the new `UpdateRequest` config system and adds programmable `Option`, `IUpdateHooks`, `IStrategy`, and other extension points. See the full API compatibility table below. +> ⚠️ **API Surface**: v10.5.0-beta.6 introduces the new `UpdateRequest` config system and adds programmable `Option`, `IUpdateHooks`, `IStrategy`, and other extension points. See the full API compatibility table below. See [BUGS.md](BUGS.md) for the full audit trail. @@ -131,13 +131,13 @@ See [BUGS.md](BUGS.md) for the full audit trail. ### 0.0.2-bate.1 — 2026-06-16 -Updated for GeneralUpdate v10.5.0-beta.4 API: +Updated for GeneralUpdate v10.5.0-beta.6 API: - Updated all templates to use `UpdateRequest` instead of `Configinfo` - Fixed namespaces: `GeneralUpdate.Core.Configuration`, `GeneralUpdate.Core.Download`, `GeneralUpdate.Core.Event` - Fixed `IsComplated` → `IsCompleted` - Added `SetSource()`, `SetOption()`, `Hooks()`, `Strategy()` API coverage - Updated CustomHooks.cs and CustomStrategy.cs with active v10.5 implementations -- Updated NuGet versions to 10.5.0-beta.4 +- Updated NuGet versions to 10.5.0-beta.6 ### 0.0.1-bate.1 — 2026-06-16 diff --git a/README.zh-Hans.md b/README.zh-Hans.md index 940e3df..42a6fa3 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -4,8 +4,8 @@ 覆盖 50+ 真实 Issue 发现的已知问题,提供即用型代码生成 + 深度故障排查。 -> 当前版本:0.0.2-beta.1 — 针对 NuGet `GeneralUpdate.Core 10.5.0-beta.4` -> 兼容性:`v10.5.0-beta.4`(NuGet 最新预览版) +> 当前版本:0.0.2-beta.1 — 针对 NuGet `GeneralUpdate.Core 10.5.0-beta.6` +> 兼容性:`v10.5.0-beta.6`(NuGet 最新预览版) > **所有模板已通过 `dotnet build` 编译验证(0 errors)。** --- @@ -121,7 +121,7 @@ > - 使用 Bowl:**只引用** `GeneralUpdate.Bowl`(它传递依赖 Core,两者不能同时引用) > - 差分功能已内嵌在 Core 中,**无需额外引用** `GeneralUpdate.Differential` -> ⚠️ **API 说明**:v10.5.0-beta.4 采用 `UpdateRequest` 配置系统,支持可编程 `Option`、`IUpdateHooks` 生命周期钩子、`SetSource()` 零配置入口等新特性。详情请查看 BUGS.md。 +> ⚠️ **API 说明**:v10.5.0-beta.6 采用 `UpdateRequest` 配置系统,支持可编程 `Option`、`IUpdateHooks` 生命周期钩子、`SetSource()` 零配置入口等新特性。详情请查看 BUGS.md。 详见 [BUGS.md](BUGS.md)。 diff --git a/RULES.md b/RULES.md index 6723d4d..19ab60c 100644 --- a/RULES.md +++ b/RULES.md @@ -11,7 +11,7 @@ - Pre-Delivery Checklist + Anti-Pattern tables in every sub-skill SKILL.md - Always extract user requirements template before generating code (frontmatter in SKILL.md) -## Bootstrap (v10.5.0-beta.4 API) +## Bootstrap (v10.5.0-beta.6 API) - UpdateRequest / SetSource() + SetConfig() + LaunchAsync() - Events: AddListenerUpdateInfo, AddListenerMultiDownloadStatistics, etc. - Zero-config: `SetSource(updateUrl, appSecretKey)` — auto-configures identity from manifest @@ -20,12 +20,12 @@ - Strategy: `Strategy()` — custom update strategy (IStrategy) ## NuGet Package Rules -- Core only: `dotnet add package GeneralUpdate.Core --version 10.5.0-beta.4` -- With Bowl: reference **both** `GeneralUpdate.Core` and `GeneralUpdate.Bowl` (v10.5.0-beta.4: Bowl is standalone, no type conflict) +- Core only: `dotnet add package GeneralUpdate.Core --version 10.5.0-beta.6` +- With Bowl: reference **both** `GeneralUpdate.Core` and `GeneralUpdate.Bowl` (v10.5.0-beta.6: Bowl is standalone, no type conflict) - Differential: types are **embedded in Core**, no extra package needed - Extension, Drivelution: standalone, no conflicts -## AppType (v10.5.0-beta.4 — enum) +## AppType (v10.5.0-beta.6 — enum) - `AppType.Client = 1`, `AppType.Upgrade = 2`, `AppType.OssClient = 3`, `AppType.OssUpgrade = 4` ## UpdateRequest Required @@ -43,7 +43,7 @@ UpdateUrl, AppSecretKey, ClientVersion, MainAppName, ProductId Windows: Hash->Decompress->Patch+Bowl+Drivelution Linux/Mac: Hash->Decompress->Patch (no Bowl) -## Event Args (v10.5.0-beta.4) +## Event Args (v10.5.0-beta.6) - UpdateInfoEventArgs: Info?.Body (List) - MultiDownloadStatisticsEventArgs: ProgressPercentage, Speed, Remaining, TotalBytesToReceive, BytesReceived - MultiDownloadCompletedEventArgs: **Version** (object), **IsCompleted** (bool) diff --git a/SKILL.md b/SKILL.md index 44084e2..d68b529 100644 --- a/SKILL.md +++ b/SKILL.md @@ -6,7 +6,7 @@ description: | configuration (4 methods), full-state update UI (6 frameworks), 6 strategy implementations (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (IPC replacement, Bowl crash daemon, custom Hooks, AOT), and deep troubleshooting (50+ known issues). - All templates target NuGet v10.5.0-beta.4 API. + All templates target NuGet v10.5.0-beta.6 API. Triggers on: "GeneralUpdate", "auto update", "自动更新", "update framework", ".NET update", "Claude Code skill suite", "GeneralUpdate Skill CodeGen", @@ -46,8 +46,8 @@ allowed-tools: "Bash, Read, Write, Edit, Glob, Grep, WebSearch" 覆盖 50+ 真实 Issue 发现的已知问题,提供即用型代码生成 + 深度故障排查。 -> **Current Version: 0.0.2-beta.1** — targets NuGet `GeneralUpdate.Core 10.5.0-beta.4` -> 兼容性:`v10.5.0-beta.4`(NuGet 最新预览版) +> **Current Version: 0.0.2-beta.1** — targets NuGet `GeneralUpdate.Core 10.5.0-beta.6` +> 兼容性:`v10.5.0-beta.6`(NuGet 最新预览版) > 所有模板已通过 `dotnet build` 编译验证(0 errors)。 --- @@ -310,11 +310,11 @@ Q5(接 Q4 成功): 你需要什么? ## API Compatibility > ⚠️ **NuGet Reference Rules**: -> - Core only: `dotnet add package GeneralUpdate.Core --version 10.5.0-beta.4` +> - Core only: `dotnet add package GeneralUpdate.Core --version 10.5.0-beta.6` > - With Bowl: reference **only** `GeneralUpdate.Bowl`(传递依赖 Core,两者不能共存) > - Differential 已嵌入 Core,**无需**额外引用 `GeneralUpdate.Differential` -> ⚠️ **API Surface**: v10.5.0-beta.4 采用了全新的配置系统: +> ⚠️ **API Surface**: v10.5.0-beta.6 采用了全新的配置系统: > - ✅ `UpdateRequest` / `UpdateRequestBuilder` — 替代旧的 Configinfo > - ✅ `SetSource(updateUrl, appSecretKey)` — 零配置入口 > - ✅ `SetOption(Option, T)` — 可编程配置系统 @@ -332,18 +332,18 @@ Q5(接 Q4 成功): 你需要什么? ### 0.0.2-bate.1 — 2026-06-16 -Updated for GeneralUpdate v10.5.0-beta.4 API: +Updated for GeneralUpdate v10.5.0-beta.6 API: - Configinfo → UpdateRequest (namespace: `GeneralUpdate.Core.Configuration`) - Event args moved to `GeneralUpdate.Core.Download` and `GeneralUpdate.Core.Event` - Added SetSource(), SetOption(), Hooks(), Strategy() API coverage - Updated all strategy examples to use the new API - Updated CustomHooks.cs and CustomStrategy.cs to show v10.5 capabilities - Fixed IsComplated → IsCompleted (typo was in NuGet stable, fixed in beta) -- NuGet version bumped to `10.5.0-beta.4` +- NuGet version bumped to `10.5.0-beta.6` ### 0.0.1-bate.1 — 2026-06-16 -Initial beta release. All templates rewritten for NuGet v10.5.0-beta.4 API. +Initial beta release. All templates rewritten for NuGet v10.5.0-beta.6 API. --- diff --git a/cli/assets/scripts/generate.py b/cli/assets/scripts/generate.py index 4a346fc..9ed7677 100644 --- a/cli/assets/scripts/generate.py +++ b/cli/assets/scripts/generate.py @@ -45,7 +45,7 @@ "name": "Differential Update", "slug": "differential", "description": "Delta patch update to save bandwidth (BSDIFF/HDiffPatch)", - "warning": "差分包大小建议不超过 2GB,避免 BSDIFF 整数溢出(v10.5.0-beta.4 已修复 #514)。", + "warning": "差分包大小建议不超过 2GB,避免 BSDIFF 整数溢出(v10.5.0-beta.6 已修复 #514)。", }, "cvp": { "name": "Cross-Version CVP", @@ -183,7 +183,7 @@ def generate_issue_warnings(strategy, variables): - H4: OSS 不区分 Main/Upgrade 更新包,接受此行为 - H5: Upgrade.exe 必须放在 update/ 子目录 - L7: 示例代码中 OSS endpoint/bucket 写死,建议用环境变量 - - M13: OssClient.AppType 值 3-4 在 v10.5.0-beta.4 中可用""", + - M13: OssClient.AppType 值 3-4 在 v10.5.0-beta.6 中可用""", "silent": """⚠️ 静默更新特有已知问题: - H2: 无限升级循环 — 确保 manifest.json 版本号正确 - M19: 静默通知可能不尊重系统的免打扰设置 diff --git a/cli/assets/scripts/generate/templates/bowl_notice.cs.template b/cli/assets/scripts/generate/templates/bowl_notice.cs.template index b0cb2da..ef055bd 100644 --- a/cli/assets/scripts/generate/templates/bowl_notice.cs.template +++ b/cli/assets/scripts/generate/templates/bowl_notice.cs.template @@ -1,6 +1,6 @@ // ⚠️ Bowl 崩溃守护 // dotnet add package GeneralUpdate.Bowl -// NuGet v10.5.0-beta.4: Bowl 与 Core 无类型冲突,可按需同时引用 +// NuGet v10.5.0-beta.6: Bowl 与 Core 无类型冲突,可按需同时引用 // Refer to generalupdate-advanced/templates/BowlIntegration.cs for full example var context = new GeneralUpdate.Bowl.BowlContext { diff --git a/cli/assets/skills/generalupdate-advanced/SKILL.md b/cli/assets/skills/generalupdate-advanced/SKILL.md index f90f0ea..c4f95eb 100644 --- a/cli/assets/skills/generalupdate-advanced/SKILL.md +++ b/cli/assets/skills/generalupdate-advanced/SKILL.md @@ -3,7 +3,7 @@ name: generalupdate-advanced description: | Reference guide for GeneralUpdate internal architecture — Pipeline, middleware, Strategy, Differential engine, Bowl crash monitor, FileTree, blacklist, and AOT. - Covers all extension points available in v10.5.0-beta.4 including Pipeline, Hooks, Bowl, AOT, and DiffPipeline. + Covers all extension points available in v10.5.0-beta.6 including Pipeline, Hooks, Bowl, AOT, and DiffPipeline. Triggers on: "extension points", "custom hooks", "Bowl", "crash dump", "IPC", "named pipe", "shared memory", "custom strategy", "download pipeline", "SSL policy", "auth provider", "custom download", "extension management", @@ -24,8 +24,8 @@ allowed-tools: "Read, Write, Edit, Glob" 涵盖扩展点架构、Pipeline 管道、差分引擎、Bowl 崩溃守护、事件系统、文件系统工具等。 -> ⚠️ **API 版本说明**:本指南基于 **NuGet v10.5.0-beta.4**。 -> 以下功能在 v10.5.0-beta.4 中全部**可用**: +> ⚠️ **API 版本说明**:本指南基于 **NuGet v10.5.0-beta.6**。 +> 以下功能在 v10.5.0-beta.6 中全部**可用**: > - ✅ `IUpdateHooks` 生命周期钩子(`Hooks()`) > - ✅ `IStrategy` 自定义策略注入(`Strategy()`) > - ✅ `SilentPollOrchestrator` 静默轮询器(`Option.Silent`) @@ -65,7 +65,7 @@ allowed-tools: "Read, Write, Edit, Glob" --- -## 1. Pipeline 管道系统(v10.5.0-beta.4 可用) +## 1. Pipeline 管道系统(v10.5.0-beta.6 可用) GeneralUpdate 使用 Pipeline 管道模式处理更新包的校验、解压、补丁应用。 @@ -100,7 +100,7 @@ await new PipelineBuilder(context) --- -## 2. 策略系统(v10.5.0-beta.4 可用) +## 2. 策略系统(v10.5.0-beta.6 可用) GeneralUpdate 内置三种平台策略,通过 `IStrategy` 接口实现: @@ -115,7 +115,7 @@ GeneralUpdate 内置三种平台策略,通过 `IStrategy` 接口实现: --- -## 3. Bowl 崩溃守护(v10.5.0-beta.4) +## 3. Bowl 崩溃守护(v10.5.0-beta.6) Bowl 是一个崩溃监控组件,通过 `MonitorParameter` 配置。 @@ -157,11 +157,11 @@ Console.WriteLine($"Result: Success={result.Success}, Restored={result.Restored} | `DumpType` | DumpType | Mini / Full | Full | | `OnCrash` | delegate | 崩溃回调 | null | -> ⚠️ NuGet v10.5.0-beta.4 中 Bowl 和 Core **无类型冲突**,可以同时引用。 +> ⚠️ NuGet v10.5.0-beta.6 中 Bowl 和 Core **无类型冲突**,可以同时引用。 --- -## 4. EventManager 事件系统(v10.5.0-beta.4 可用) +## 4. EventManager 事件系统(v10.5.0-beta.6 可用) EventManager 是一个全局单例,提供事件的发布和订阅: @@ -188,7 +188,7 @@ EventManager.Instance.Dispose(); --- -## 5. 文件系统工具(v10.5.0-beta.4 可用) +## 5. 文件系统工具(v10.5.0-beta.6 可用) ### BlackList(黑名单) @@ -217,7 +217,7 @@ var snapshot = tree.CreateSnapshot(@"C:\Program Files\MyApp"); --- -## 6. 差分引擎(v10.5.0-beta.4 可用,无需额外安装包) +## 6. 差分引擎(v10.5.0-beta.6 可用,无需额外安装包) 差分类型已内嵌在 `GeneralUpdate.Core` 中,**无需额外**安装 `GeneralUpdate.Differential` 包。 @@ -270,7 +270,7 @@ var dirtyMatcher = new DefaultDirtyMatcher(); // 或实现 IDirtyMatcher ## 7. AOT / NativeAOT 兼容性 -GeneralUpdate.Core v10.5.0-beta.4 支持 .NET Native AOT(`net8.0` 和 `net10.0`): +GeneralUpdate.Core v10.5.0-beta.6 支持 .NET Native AOT(`net8.0` 和 `net10.0`): ```xml @@ -313,26 +313,26 @@ var result = GeneralDrivelution.InstallDriver(driverPath); | 主题 | 可用性 | 参考 | |------|--------|------| -| Pipeline 管道 | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Pipeline` | -| 策略系统 | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Strategy` | -| FileTree | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.FileSystem` | -| BlackList | ✅ v10.5.0-beta.4 | `UpdateRequest.Files/Formats/Directories` → `ToBlackPolicy()` | +| Pipeline 管道 | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Pipeline` | +| 策略系统 | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Strategy` | +| FileTree | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.FileSystem` | +| BlackList | ✅ v10.5.0-beta.6 | `UpdateRequest.Files/Formats/Directories` → `ToBlackPolicy()` | | 差分引擎 | ✅ 内嵌 Core | `DiffPipelineBuilder` / `DiffPipeline` | -| AOT | ✅ v10.5.0-beta.4 | `JsonSerializerContext` 子类 | -| EventManager | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Event` | +| AOT | ✅ v10.5.0-beta.6 | `JsonSerializerContext` 子类 | +| EventManager | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Event` | | Bowl 崩溃守护 | ⚠️ 基础类型 | `GeneralUpdate.Bowl.Bowl` | -| IUpdateHooks | ✅ v10.5.0-beta.4 | `GeneralUpdate.Core.Hooks` — `Hooks()` | -| 自定义 Strategy 注入 | ✅ v10.5.0-beta.4 | `Strategy()` | +| IUpdateHooks | ✅ v10.5.0-beta.6 | `GeneralUpdate.Core.Hooks` — `Hooks()` | +| 自定义 Strategy 注入 | ✅ v10.5.0-beta.6 | `Strategy()` | | IPC 替换接口 | ❌ 暂不支持 | 使用 NamedPipe 替代方案 | -| SilentPollOrchestrator | ✅ v10.5.0-beta.4 | `Option.Silent` + `SetOption()` | -| Option 系统 | ✅ v10.5.0-beta.4 | `SetOption(Option, T)` | +| SilentPollOrchestrator | ✅ v10.5.0-beta.6 | `Option.Silent` + `SetOption()` | +| Option 系统 | ✅ v10.5.0-beta.6 | `SetOption(Option, T)` | --- ## ✅ 高级定制验证清单 ### Bowl 崩溃守护 -- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.4 无冲突) +- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.6 无冲突) - [ ] `MonitorParameter` 的 `ProcessNameOrId` 与实际进程名匹配 - [ ] `TargetPath` 设置为应用安装根目录,非子目录 - [ ] `WorkModel` 根据场景选择 Correct(Normal/Upgrade) diff --git a/cli/assets/skills/generalupdate-advanced/reference.md b/cli/assets/skills/generalupdate-advanced/reference.md index 4ebb1c3..3a532c6 100644 --- a/cli/assets/skills/generalupdate-advanced/reference.md +++ b/cli/assets/skills/generalupdate-advanced/reference.md @@ -1,8 +1,8 @@ # GeneralUpdate 扩展参考 -> ⚠️ 基于 **NuGet v10.5.0-beta.4** API。 +> ⚠️ 基于 **NuGet v10.5.0-beta.6** API。 -## 注入方法调用链(v10.5.0-beta.4) +## 注入方法调用链(v10.5.0-beta.6) ```csharp new GeneralUpdateBootstrap() diff --git a/cli/assets/skills/generalupdate-advanced/templates/BowlIntegration.cs b/cli/assets/skills/generalupdate-advanced/templates/BowlIntegration.cs index 169c026..aa327e3 100644 --- a/cli/assets/skills/generalupdate-advanced/templates/BowlIntegration.cs +++ b/cli/assets/skills/generalupdate-advanced/templates/BowlIntegration.cs @@ -9,7 +9,7 @@ /// If a crash is detected, it captures a dump, exports diagnostics, /// and optionally restores the previous version from backup. /// -/// NuGet: dotnet add package GeneralUpdate.Bowl --version 10.5.0-beta.4 +/// NuGet: dotnet add package GeneralUpdate.Bowl --version 10.5.0-beta.6 /// Note: Reference only GeneralUpdate.Bowl (it transitively includes Core). /// Do NOT reference GeneralUpdate.Core separately when using Bowl. /// diff --git a/cli/assets/skills/generalupdate-advanced/templates/CustomHooks.cs b/cli/assets/skills/generalupdate-advanced/templates/CustomHooks.cs index bc44e14..c149b4c 100644 --- a/cli/assets/skills/generalupdate-advanced/templates/CustomHooks.cs +++ b/cli/assets/skills/generalupdate-advanced/templates/CustomHooks.cs @@ -2,7 +2,7 @@ using GeneralUpdate.Core.Hooks; /// -/// 【Skill 参考】自定义生命周期 Hooks (v10.5.0-beta.4 可用) +/// 【Skill 参考】自定义生命周期 Hooks (v10.5.0-beta.6 可用) /// /// 通过 IUpdateHooks 接口可以拦截更新流程的各个阶段: /// - OnBeforeUpdateAsync: 更新开始前(可取消) diff --git a/cli/assets/skills/generalupdate-advanced/templates/CustomStrategy.cs b/cli/assets/skills/generalupdate-advanced/templates/CustomStrategy.cs index 23ce5e4..e2f1c16 100644 --- a/cli/assets/skills/generalupdate-advanced/templates/CustomStrategy.cs +++ b/cli/assets/skills/generalupdate-advanced/templates/CustomStrategy.cs @@ -5,7 +5,7 @@ using GeneralUpdate.Core.Download.Reporting; /// -/// 【Skill 参考】自定义平台策略(v10.5.0-beta.4 可用) +/// 【Skill 参考】自定义平台策略(v10.5.0-beta.6 可用) /// /// 通过 bootstrap.Strategy<T>() 注入自定义策略。 /// 自定义策略需要实现 IStrategy 接口。 diff --git a/cli/assets/skills/generalupdate-init/SKILL.md b/cli/assets/skills/generalupdate-init/SKILL.md index e106aa5..782d916 100644 --- a/cli/assets/skills/generalupdate-init/SKILL.md +++ b/cli/assets/skills/generalupdate-init/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: "Bash, Read, Write, Edit, Glob, Grep, WebSearch" 帮助开发者在任意 .NET 应用中集成 GeneralUpdate 自动更新。从零开始,覆盖所有配置方式、部署场景和生产环境考量。 -> ⚠️ **针对 NuGet v10.5.0-beta.4**。`Configinfo` 已被 `UpdateRequest` 替代,命名空间已移至 `GeneralUpdate.Core.Configuration`。 +> ⚠️ **针对 NuGet v10.5.0-beta.6**。`Configinfo` 已被 `UpdateRequest` 替代,命名空间已移至 `GeneralUpdate.Core.Configuration`。 --- @@ -176,7 +176,7 @@ await new GeneralUpdateBootstrap() ### 应用角色(AppType) -`AppType` 是一个 enum(v10.5.0-beta.4): +`AppType` 是一个 enum(v10.5.0-beta.6): | 值 | 名称 | 说明 | |----|------|------| @@ -323,14 +323,14 @@ publish/ ## ⚠️ 已知问题 -### NuGet 注意事项(v10.5.0-beta.4) -`GeneralUpdate.Core` 和 `GeneralUpdate.Bowl` **可以同时引用**(v10.5.0-beta.4 中无 CS0433 冲突)。 +### NuGet 注意事项(v10.5.0-beta.6) +`GeneralUpdate.Core` 和 `GeneralUpdate.Bowl` **可以同时引用**(v10.5.0-beta.6 中无 CS0433 冲突)。 - 使用 Core:`dotnet add package GeneralUpdate.Core` - 使用 Bowl:`dotnet add package GeneralUpdate.Bowl`(它**不**传递依赖 Core,需要同时引用 Core) - 差分类型已内嵌在 Core,**无需额外** `GeneralUpdate.Differential` 包 ### 稳定版功能增强 -v10.5.0-beta.4 新增以下功能: +v10.5.0-beta.6 新增以下功能: - ✅ `IUpdateHooks` 生命周期钩子 — `Hooks()` - ✅ 可编程 `Option` 系统 — `SetOption(Option.Silent, true)` - ✅ `SilentPollOrchestrator` 静默轮询 @@ -353,7 +353,7 @@ v10.5.0-beta.4 新增以下功能: ### NuGet & 编译 - [ ] Client 和 Upgrade 项目使用**完全相同**的 GeneralUpdate NuGet 版本 -- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.4 无冲突) +- [ ] 如果用 Bowl:项目中同时引用 `GeneralUpdate.Core` 和 `GeneralUpdate.Bowl`(v10.5.0-beta.6 无冲突) - [ ] 项目能正常 `dotnet build`(0 errors) - [ ] 无需额外引用 `GeneralUpdate.Differential`(已嵌入 Core) @@ -377,7 +377,7 @@ v10.5.0-beta.4 新增以下功能: |---|--------|------|---------| | 1 | **Core 和 Bowl NuGet 版本不一致** | 运行时 MethodNotFoundException | 使用相同 NuGet 版本 | | 2 | **Bowl 缺少 `GeneralUpdate.Core` 引用** | 编译失败,缺少 Core 类型 | Bowl 不传递依赖 Core,需同时引用 Core | -| 3 | **Bowl 传递依赖 Core 的误解** | 编译失败 | v10.5.0-beta.4 中 Bowl 是独立包,需单独引用 Core | +| 3 | **Bowl 传递依赖 Core 的误解** | 编译失败 | v10.5.0-beta.6 中 Bowl 是独立包,需单独引用 Core | | 4 | **Client/Upgrade NuGet 版本号不一致** | 运行时 MethodNotFoundException | 锁定完全相同版本 | | 5 | **事件监听中做耗时操作(网络 IO / 磁盘 IO)** | Update 进程 UI 卡死,超时被 Kill | 仅更新 UI 状态,耗时操作异步 | | 6 | **IPC 文件编码未设置 UTF-8** | Linux/macOS 中文乱码 | `Encoding.UTF8` | diff --git a/cli/assets/skills/generalupdate-init/project-scaffold/ClientApp.csproj b/cli/assets/skills/generalupdate-init/project-scaffold/ClientApp.csproj index 10e7b7d..cbceb80 100644 --- a/cli/assets/skills/generalupdate-init/project-scaffold/ClientApp.csproj +++ b/cli/assets/skills/generalupdate-init/project-scaffold/ClientApp.csproj @@ -8,7 +8,7 @@ - + diff --git a/cli/assets/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj b/cli/assets/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj index 55ebd68..c891885 100644 --- a/cli/assets/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj +++ b/cli/assets/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj @@ -6,12 +6,12 @@ enable - + diff --git a/cli/assets/skills/generalupdate-init/reference.md b/cli/assets/skills/generalupdate-init/reference.md index f74f44e..f50007b 100644 --- a/cli/assets/skills/generalupdate-init/reference.md +++ b/cli/assets/skills/generalupdate-init/reference.md @@ -1,6 +1,6 @@ # GeneralUpdate 参考手册 -> ⚠️ **针对 NuGet v10.5.0-beta.4 API**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 +> ⚠️ **针对 NuGet v10.5.0-beta.6 API**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 ## NuGet 包 @@ -8,15 +8,15 @@ | 包名 | 用途 | 必需 | .NET 版本 | 典型版本 | |------|------|------|-----------|---------| -| `GeneralUpdate.Core` | 核心引擎(Bootstrap/下载/事件) | ✅ 是 | net8.0;net10.0 | 10.5.0-beta.4 | -| `GeneralUpdate.Differential` | BSDIFF/HDiffPatch 差分补丁 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.4 | -| `GeneralUpdate.Bowl` | 进程崩溃监控、MiniDump、自动回滚 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.4 | +| `GeneralUpdate.Core` | 核心引擎(Bootstrap/下载/事件) | ✅ 是 | net8.0;net10.0 | 10.5.0-beta.6 | +| `GeneralUpdate.Differential` | BSDIFF/HDiffPatch 差分补丁 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.6 | +| `GeneralUpdate.Bowl` | 进程崩溃监控、MiniDump、自动回滚 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.6 | | `GeneralUpdate.Extension` | 插件管理系统 | ❌ 可选 | net8.0;net10.0 | ≥ 10.5.0 | -| `GeneralUpdate.Drivelution` | Windows 驱动更新 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.4 | +| `GeneralUpdate.Drivelution` | Windows 驱动更新 | ❌ 可选 | net8.0;net10.0 | 10.5.0-beta.6 | -> ⚠️ **NuGet 注意事项**(v10.5.0-beta.4): +> ⚠️ **NuGet 注意事项**(v10.5.0-beta.6): > - `GeneralUpdate.Differential` 的 `DifferentialCore` 等类型已内嵌在 `GeneralUpdate.Core` 中,**不需额外引用**(直接使用 Core 即可) -> - `GeneralUpdate.Bowl` 和 `GeneralUpdate.Core` **可以同时引用**(v10.5.0-beta.4 中 Bowl 与 Core 无共用类型,不再冲突) +> - `GeneralUpdate.Bowl` 和 `GeneralUpdate.Core` **可以同时引用**(v10.5.0-beta.6 中 Bowl 与 Core 无共用类型,不再冲突) > - 使用 Bowl 时仍需引用 `GeneralUpdate.Bowl`(它**不**传递依赖 Core) ## UpdateRequest 字段完整说明 diff --git a/cli/assets/skills/generalupdate-init/templates/FullIntegration.cs b/cli/assets/skills/generalupdate-init/templates/FullIntegration.cs index f9e2c18..a1baf16 100644 --- a/cli/assets/skills/generalupdate-init/templates/FullIntegration.cs +++ b/cli/assets/skills/generalupdate-init/templates/FullIntegration.cs @@ -13,7 +13,7 @@ /// - 错误处理 /// - Upgrade 进程配置 /// -/// 针对 NuGet v10.5.0-beta.4 +/// 针对 NuGet v10.5.0-beta.6 /// public static class FullIntegration { diff --git a/cli/assets/skills/generalupdate-init/templates/MinimalIntegration.cs b/cli/assets/skills/generalupdate-init/templates/MinimalIntegration.cs index f397b07..b03b77a 100644 --- a/cli/assets/skills/generalupdate-init/templates/MinimalIntegration.cs +++ b/cli/assets/skills/generalupdate-init/templates/MinimalIntegration.cs @@ -16,7 +16,7 @@ /// 如果以上条件不满足,请使用 FullIntegration.cs 显式配置。 /// /// NuGet: dotnet add package GeneralUpdate.Core -/// ⚠️ 针对 NuGet v10.5.0-beta.4 +/// ⚠️ 针对 NuGet v10.5.0-beta.6 /// public static class MinimalIntegration { diff --git a/cli/assets/skills/generalupdate-migration/SKILL.md b/cli/assets/skills/generalupdate-migration/SKILL.md index 839dda7..ed1a73d 100644 --- a/cli/assets/skills/generalupdate-migration/SKILL.md +++ b/cli/assets/skills/generalupdate-migration/SKILL.md @@ -118,7 +118,7 @@ await new GeneralUpdateBootstrap() ### 编译验证 - [ ] `dotnet build` 无错误 - [ ] 无 `MissingMethodException` 的风险(检查所有方法名是否存在于 v10.4.6) -- [ ] 无 `CS0433` 类型冲突(v10.5.0-beta.4 中 Core + Bowl 无冲突,可同时引用) +- [ ] 无 `CS0433` 类型冲突(v10.5.0-beta.6 中 Core + Bowl 无冲突,可同时引用) ### 架构验证 - [ ] 项目已拆分为 Client + Upgrade 两个独立项目 diff --git a/cli/assets/skills/generalupdate-strategy/SKILL.md b/cli/assets/skills/generalupdate-strategy/SKILL.md index dc6c31e..a81b05a 100644 --- a/cli/assets/skills/generalupdate-strategy/SKILL.md +++ b/cli/assets/skills/generalupdate-strategy/SKILL.md @@ -25,7 +25,7 @@ allowed-tools: "Read, Write, Edit, Glob" # ⚙️ GeneralUpdate 更新策略完全指南 -> ⚠️ **针对 NuGet v10.5.0-beta.4**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 +> ⚠️ **针对 NuGet v10.5.0-beta.6**。该版本使用 `UpdateRequest` 配置,支持可编程 `Option` 系统。 --- diff --git a/cli/assets/skills/generalupdate-strategy/examples/ClientServerStrategy.cs b/cli/assets/skills/generalupdate-strategy/examples/ClientServerStrategy.cs index e5458ef..70bfe13 100644 --- a/cli/assets/skills/generalupdate-strategy/examples/ClientServerStrategy.cs +++ b/cli/assets/skills/generalupdate-strategy/examples/ClientServerStrategy.cs @@ -11,7 +11,7 @@ /// - (可选) POST /Upgrade/Report — 状态上报 /// /// NuGet: dotnet add package GeneralUpdate.Core -/// ⚠️ 针对 NuGet v10.5.0-beta.4 +/// ⚠️ 针对 NuGet v10.5.0-beta.6 /// public static class ClientServerStrategy { diff --git a/cli/assets/skills/generalupdate-strategy/examples/DifferentialStrategy.cs b/cli/assets/skills/generalupdate-strategy/examples/DifferentialStrategy.cs index f82104d..a3370a4 100644 --- a/cli/assets/skills/generalupdate-strategy/examples/DifferentialStrategy.cs +++ b/cli/assets/skills/generalupdate-strategy/examples/DifferentialStrategy.cs @@ -8,12 +8,12 @@ /// 适用于应用体积大(>100MB)或带宽受限的场景。 /// 仅传输变动的文件部分,节省 60-90% 带宽。 /// -/// v10.5.0-beta.4 通过 UseDiffPipeline(Action{DiffPipelineBuilder}) 配置差分。 +/// v10.5.0-beta.6 通过 UseDiffPipeline(Action{DiffPipelineBuilder}) 配置差分。 /// /// NuGet: /// dotnet add package GeneralUpdate.Core /// -/// ⚠️ 注意:GeneralUpdate.Core v10.5.0-beta.4 已内置差分支持, +/// ⚠️ 注意:GeneralUpdate.Core v10.5.0-beta.6 已内置差分支持, /// 无需额外安装 GeneralUpdate.Differential 包。 /// public static class DifferentialStrategy diff --git a/cli/assets/skills/generalupdate-strategy/examples/SilentStrategy.cs b/cli/assets/skills/generalupdate-strategy/examples/SilentStrategy.cs index 14a1dcd..a2d4504 100644 --- a/cli/assets/skills/generalupdate-strategy/examples/SilentStrategy.cs +++ b/cli/assets/skills/generalupdate-strategy/examples/SilentStrategy.cs @@ -8,7 +8,7 @@ /// 适用于用户长期不关闭应用的场景(如桌面工具、监控面板)。 /// GeneralUpdate 在检测到更新后自动后台下载,下次启动时应用新版本。 /// -/// v10.5.0-beta.4 通过 SetOption(Option.Silent, true) 启用静默模式。 +/// v10.5.0-beta.6 通过 SetOption(Option.Silent, true) 启用静默模式。 /// /// NuGet: dotnet add package GeneralUpdate.Core /// diff --git a/cli/assets/skills/generalupdate-troubleshoot/reference.md b/cli/assets/skills/generalupdate-troubleshoot/reference.md index 4633fa9..fb29ad8 100644 --- a/cli/assets/skills/generalupdate-troubleshoot/reference.md +++ b/cli/assets/skills/generalupdate-troubleshoot/reference.md @@ -258,7 +258,7 @@ public void OnAppClosing() **修复**:更新到 v10.4.6+(已实现 WriteBack)。旧版本手动处理: ```csharp -/// v10.5.0-beta.4 支持 IUpdateHooks 接口,可通过 Hooks() 注册 UnixPermissionHooks 或自定义实现。 +/// v10.5.0-beta.6 支持 IUpdateHooks 接口,可通过 Hooks() 注册 UnixPermissionHooks 或自定义实现。 /// 如需在更新后回写版本号,可使用 ManifestInfo.TryUpdateVersion()。 ``` @@ -346,7 +346,7 @@ bootstrap.SetOption(Option.RetryCount, 5); bootstrap.Hooks(); ``` -> ✅ v10.5.0-beta.4 支持 IUpdateHooks 接口。Linux 权限问题使用 `bootstrap.Hooks()` 自动解决。 +> ✅ v10.5.0-beta.6 支持 IUpdateHooks 接口。Linux 权限问题使用 `bootstrap.Hooks()` 自动解决。 ### M9. IPC 加密文件被防病毒软件隔离 @@ -526,7 +526,7 @@ bootstrap.Hooks(); | 来源 | #IJQ0Q5 | |------|---------| -| **建议** | v10.5.0-beta.4 支持 Option.Silent 选项 | +| **建议** | v10.5.0-beta.6 支持 Option.Silent 选项 | ### L12. OSS 模式下传的 ZIP 包编码无法解压 diff --git a/cli/assets/skills/generalupdate-ui/SKILL.md b/cli/assets/skills/generalupdate-ui/SKILL.md index d6b8ac5..a7946ac 100644 --- a/cli/assets/skills/generalupdate-ui/SKILL.md +++ b/cli/assets/skills/generalupdate-ui/SKILL.md @@ -25,7 +25,7 @@ allowed-tools: "Read, Write, Edit, Glob, Grep" 自动检测开发者的 UI 框架类型,生成带真实 GeneralUpdate.Core 事件绑定的完整更新窗口代码。 -> ⚠️ 针对 NuGet v10.5.0-beta.4。`RealDownloadService.cs` 已使用 `UpdateRequest` 和正确的命名空间。 +> ⚠️ 针对 NuGet v10.5.0-beta.6。`RealDownloadService.cs` 已使用 `UpdateRequest` 和正确的命名空间。 --- @@ -150,7 +150,7 @@ allowed-tools: "Read, Write, Edit, Glob, Grep" 所有 UI 模板共享这个桥接类,将 GeneralUpdate.Core 的事件映射到 `IDownloadService` 接口。 -### 桥接逻辑(v10.5.0-beta.4) +### 桥接逻辑(v10.5.0-beta.6) ```csharp // GeneralUpdate.Core 事件 → DownloadStatus 状态机映射: @@ -193,7 +193,7 @@ GeneralUpdateBootstrap.AddListenerException ### 事件桥接 - [ ] 所有 6 个事件都已绑定(UpdateInfo, MultiDownloadStatistics, MultiDownloadCompleted, MultiDownloadError, MultiAllDownloadCompleted, Exception) - [ ] 桥接代码使用正确的 EventArgs 类型(检查命名空间 `GeneralUpdate.Core.Download` / `GeneralUpdate.Core.Event`) -- [ ] `IsCompleted` 属性名正确(v10.5.0-beta.4 使用 `IsCompleted`) +- [ ] `IsCompleted` 属性名正确(v10.5.0-beta.6 使用 `IsCompleted`) ### 线程安全 - [ ] UI 更新操作在正确的线程上执行(WPF/Avalonia 用 `Dispatcher`,WinForms 用 `Invoke`,MAUI 用 `MainThread`) diff --git a/cli/assets/skills/generalupdate-ui/templates/AntdUIStyle.cs b/cli/assets/skills/generalupdate-ui/templates/AntdUIStyle.cs index 95056ca..5f579d3 100644 --- a/cli/assets/skills/generalupdate-ui/templates/AntdUIStyle.cs +++ b/cli/assets/skills/generalupdate-ui/templates/AntdUIStyle.cs @@ -94,7 +94,7 @@ private async Task StartUpdateAsync(CancellationToken token) InstallPath = ".", }; - // v10.5.0-beta.4 API + // v10.5.0-beta.6 API await new GeneralUpdateBootstrap() .SetConfig(config) .AddListenerMultiDownloadStatistics((_, e) => diff --git a/cli/assets/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs b/cli/assets/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs index cbee004..80f6758 100644 --- a/cli/assets/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs +++ b/cli/assets/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs @@ -8,7 +8,7 @@ namespace MauiUpdate.ViewModels; /// /// 【Skill 自动生成】MAUI 更新页面 ViewModel -/// 针对 NuGet v10.5.0-beta.4 API +/// 针对 NuGet v10.5.0-beta.6 API /// public partial class UpdateViewModel : ObservableObject { @@ -51,7 +51,7 @@ private async Task StartUpdateAsync() InstallPath = ".", }; - // v10.5.0-beta.4 API:UpdateRequest + SetConfig + LaunchAsync + // v10.5.0-beta.6 API:UpdateRequest + SetConfig + LaunchAsync await new GeneralUpdateBootstrap() .SetConfig(config) .AddListenerUpdateInfo((_, e) => diff --git a/cli/assets/skills/generalupdate-ui/templates/RealDownloadService.cs b/cli/assets/skills/generalupdate-ui/templates/RealDownloadService.cs index e89a01e..93bb99a 100644 --- a/cli/assets/skills/generalupdate-ui/templates/RealDownloadService.cs +++ b/cli/assets/skills/generalupdate-ui/templates/RealDownloadService.cs @@ -14,7 +14,7 @@ namespace Common.Avalonia.Services; /// 覆盖全部 UI 状态:Idle → Checking → FoundUpdate → Downloading → Paused /// → DownloadError → Applying → Success / Failed → RollingBack /// -/// ⚠️ 针对 NuGet v10.5.0-beta.4 API。 +/// ⚠️ 针对 NuGet v10.5.0-beta.6 API。 /// Configinfo → UpdateRequest 替换,命名空间更新。 /// public class RealDownloadService : IDownloadService diff --git a/skill.json b/skill.json index ac70fff..f1e1d0d 100644 --- a/skill.json +++ b/skill.json @@ -1,7 +1,7 @@ { "name": "generalupdate-skill", "displayName": "GeneralUpdate Skill CodeGen", - "description": "AI-powered skill suite for integrating GeneralUpdate (.NET auto-update) into any .NET application. Generates dual-project scaffolding (Client+Upgrade), full-state update UI (6 frameworks), 6 update strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), and deep troubleshooting (50+ known issues). All templates target NuGet v10.5.0-beta.4.", + "description": "AI-powered skill suite for integrating GeneralUpdate (.NET auto-update) into any .NET application. Generates dual-project scaffolding (Client+Upgrade), full-state update UI (6 frameworks), 6 update strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), and deep troubleshooting (50+ known issues). All templates target NuGet v10.5.0-beta.6.", "version": "0.0.2-beta.1", "author": "JusterZhu", "license": "Apache-2.0",