Skip to main content

⚙️ GeneralUpdate Strategy Complete Guide

⚠️ Targeting NuGet v10.4.6 stable. This version uses Configinfo configuration, with no programmatic Option system.


Strategy Decision Tree

Does your app have a backend service?
├── Yes
│ ├── Need server-push updates? → SignalR Push
│ └── No → Standard Client-Server

└── No (only object storage S3/MinIO/OSS)
└── OSS Standard

6 Strategy Comparison

StrategyServerDescription
① Standard Client-Server✅ GeneralSpacestationMedium/large apps with backend (recommended starting point)
② OSS Object Storage❌ S3/MinIO onlyNo backend, lowest cost
③ Silent Update✅ Same as ① or ②Background silent upgrade
④ Differential Update✅ Needs differential buildsIncremental patches to save bandwidth
⑤ Cross Version (CVP)✅ Needs CVP buildsSkip intermediate versions
⑥ SignalR Push✅ Needs SignalR HubServer-initiated updates

Mixed Strategy Combinations

CombinationTypical Scenario
OSS + SilentGame launcher / kiosk — pulls from CDN, no user interaction
Standard + DifferentialFull download on first update, patches thereafter
CVP + DifferentialCross-version jump as a single binary patch
Standard + PushBackend pushes notification, user clicks to download

Platform Differences

PlatformNotes
WindowsFull functionality. Bowl crash daemon (restarts app bus on unhandled exception). Full filesystem access.
Linux / macOS⚠️ v10.4.6 has no UnixPermissionHooks, need manual chmod +x. Target .NET 8+.

Known Issues

#IssueWorkaround
1OSS mode doesn't distinguish Main/Upgrade updatesAccept this behavior
2UpgradeApp.exe must be in update/ subdirectoryDeploy as specified
3NuGet version mismatch causes "Method not found"Use same version for Client and Upgrade
4Infinite update loopEnsure manifest.json version is correct
5SignalR HubConnection crashes after DisposeSet connection to null when disposing