- Dual-process: Client (verification/download/IPC) + Upgrade (file replacement)
- 4 scenes: None/UpgradeOnly/MainOnly/Both
- IPC: Encrypted file (AES-CBC, default)
- Root SKILL.md contains developer roadmap: 6 scenarios → which skill to use → next step
- 5-question decision tree helps first-timers locate their starting skill
- Pre-Delivery Checklist + Anti-Pattern tables in every sub-skill SKILL.md
- Always extract user requirements template before generating code (frontmatter in SKILL.md)
- UpdateRequest / SetSource() + SetConfig() + LaunchAsync()
- Events: AddListenerUpdateInfo, AddListenerMultiDownloadStatistics, etc.
- Zero-config:
SetSource(updateUrl, appSecretKey)— auto-configures identity from manifest - Hooks:
Hooks<T>()— lifecycle hooks (IUpdateHooks) - Options:
SetOption(Option.Silent, true),SetOption(Option.MaxConcurrency, 4), etc. - Strategy:
Strategy<T>()— custom update strategy (IStrategy)
- Core only:
dotnet add package GeneralUpdate.Core --version 10.5.0-beta.6 - With Bowl: reference both
GeneralUpdate.CoreandGeneralUpdate.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.Client = 1,AppType.Upgrade = 2,AppType.OssClient = 3,AppType.OssUpgrade = 4
UpdateUrl, AppSecretKey, ClientVersion, MainAppName, ProductId
- Client-Server (needs backend)
- OSS (S3/MinIO, no backend)
- Silent (background polling with
Option.Silent) - Differential (delta patches with
UseDiffPipeline()) - CVP (cross-version jump)
- SignalR Push (server-initiated)
Windows: Hash->Decompress->Patch+Bowl+Drivelution Linux/Mac: Hash->Decompress->Patch (no Bowl)
- UpdateInfoEventArgs: Info?.Body (List)
- MultiDownloadStatisticsEventArgs: ProgressPercentage, Speed, Remaining, TotalBytesToReceive, BytesReceived
- MultiDownloadCompletedEventArgs: Version (object), IsCompleted (bool)
- MultiDownloadErrorEventArgs: Exception, Version (object)
- MultiAllDownloadCompletedEventArgs: IsAllDownloadCompleted, FailedVersions
- ProgressEventArgs: Progress (DownloadProgress?), DiffProgress (DiffProgress?)
- ExceptionEventArgs: Exception, Message
GeneralUpdate.Core— GeneralUpdateBootstrapGeneralUpdate.Core.Configuration— UpdateRequest, UpdateRequestBuilder, Option, AppTypeGeneralUpdate.Core.Download— UpdateInfoEventArgs, MultiDownloadStatisticsEventArgs, etc.GeneralUpdate.Core.Event— ExceptionEventArgs, ProgressEventArgs, IUpdateEventListenerGeneralUpdate.Core.Hooks— IUpdateHooks, HookContext, DownloadContext, NoOpUpdateHooks, UnixPermissionHooksGeneralUpdate.Core.Strategy— IStrategy, AbstractStrategyGeneralUpdate.Core.Pipeline— PipelineContext, PipelineBuilder, DiffPipelineBuilderGeneralUpdate.Core.Download.Reporting— IUpdateReporter, HttpUpdateReporterGeneralUpdate.Core.Download.Models— DownloadProgress, DownloadAsset
- Use
.claude/scripts/generate.pyfor parameterized code generation:python3 .claude/scripts/generate.py --framework wpf --strategy oss --bowl --project-name MyApp
- Generates 5 files: Bootstrap.cs, manifest.json, UpgradeProgram.cs, DeploymentChecklist.md, IssuesWarning.md
- Covers 336 combinations: 6 strategies × 7 frameworks × 2 Bowl × 4 scenes
- Use BM25 search engine before manual reference.md lookup:
python3 skills/generalupdate-troubleshoot/scripts/search.py "<symptom>" --domain issue - CSV database covers 50+ known issues (51 entries: 8C + 11H + 20M + 12L)
- Strategies are also searchable:
--domain strategy
- Template files use
{{PLACEHOLDER}}syntax for parameter substitution - Conditional blocks:
{{#KEY}}...{{/KEY}}(show if KEY truthy),{{^KEY}}...{{/KEY}}(show if falsy) - Templates stored in
.claude/scripts/generate/templates/
- Upgrade not starting: Check UpdatePath
- Method not found: Align NuGet versions
- Chinese garbled: Ensure UTF-8 ZIP encoding
- Linux no exec:
bootstrap.Hooks<UnixPermissionHooks>() - Version wrong: Use 4-segment
- Infinite loop: WriteBack after update
- NuGet versions match
- manifest.json valid
- UpgradeApp.exe exists
- Server API reachable
- Logs in Logs/generalupdate-trace *.log
- Use BM25 search engine for known issues