Skip to main content

πŸ”„ GeneralUpdate Migration Guide

Guide developers through migrating GeneralUpdate from older versions to the latest API (v10.5.0-beta.7).

⚠️ Target Version: NuGet v10.5.0-beta.7 Dev branch (v10.5.0-beta.x) APIs differ fundamentally from stable.


πŸ“‹ Pre-Migration Requirements​

### Current State
- Current GeneralUpdate version: ______ (v9.x / v10.0-10.3 / v10.5.0-beta.x / Not sure)
- Current .NET version: ______
- UI framework: ______
- Using Bowl: ______ (Yes/No)
- Using Differential: ______ (Yes/No)

### Target State
- Target version: ______ (v10.5.0-beta.7 / Stay on dev branch)
- Need new features (Bowl/IPC replacement/AOT): ______

Migration Paths​

Path A: v9.x β†’ v10.5.0-beta.7​

This is the biggest jump. v9.x and v10 architectures are completely different.

v9.x (single process, HttpClient direct)
↓
Breaking Changes:
β”œβ”€β”€ Single process β†’ dual-process architecture (Client + Upgrade)
β”œβ”€β”€ HttpClient direct β†’ GeneralSpacestation server
β”œβ”€β”€ No IPC β†’ AES encrypted IPC file
β”œβ”€β”€ No manifest.json β†’ manifest required
└── All API namespaces renamed
↓
v10.5.0-beta.7 (dual-process, UpdateRequest + Bootstrap)

Migration steps:

// ❌ v9.x syntax (no longer exists)
// var updater = new GeneralUpdater("https://api/method");
// updater.Start();

// βœ… v10.5.0-beta.7 syntax
await new GeneralUpdateBootstrap()
.SetConfig(new UpdateRequest
{
UpdateUrl = "https://your-server.com/Upgrade/Verification",
AppSecretKey = "your-secret-key",
MainAppName = "MyApp.exe",
ClientVersion = "1.0.0.0",
ProductId = "my-product-001",
InstallPath = "."
})
.LaunchAsync();
v9.x APIv10.5.0-beta.7 EquivalentNotes
GeneralUpdaterGeneralUpdateBootstrapCompletely renamed
SetApiUrl() / SetMethod()UpdateRequest.UpdateUrlUnified into UpdateRequest
CheckUpdateAsync().LaunchAsync()Returns Bootstrap instance
Single-process updateClient + Upgrade dual-processMust create separate Upgrade project
N/Ageneralupdate.manifest.jsonMust ship with first release

Path B: v10.5.0-beta.x (dev branch) β†’ v10.5.0-beta.7​

Dev Branch API (v10.5.0-beta.x)Stable Replacement (v10.5.0-beta.7)Handling
new Option() / SetOption()Exists and compatibleUse directly, namespace adjusted
.Hooks<T>() / IUpdateHooksExists and compatibleUse directly
.Strategy<T>() / IStrategyExists and compatibleUse directly
SilentPollOrchestratorExistsOption.Silent + SetOption()
ISslValidationPolicyExistsUse directly
ConfiginfoRemovedUse UpdateRequest instead
OssClient (AppType=3,4)ExistsUse AppType.OssClient and AppType.OssUpgrade
Hardcoded versionUpdateRequest.ClientVersionUse Assembly.GetEntryAssembly()?.GetName()?.Version

Migration Verification Checklist​

Build Verification​

  • dotnet build with no errors
  • No risk of MissingMethodException
  • No CS0433 type conflicts (no conflict between Core + Bowl in v10.5.0-beta.7)

Architecture Verification​

  • Project split into Client + Upgrade independent projects
  • Upgrade project AppType = 2
  • Client project AppType = 1
  • generalupdate.manifest.json exists and configured correctly

Runtime Verification​

  • Version check API returns normally
  • Upgrade process starts after download
  • Main app restarts after update completes
  • IPC file encoding set to Encoding.UTF8

⚠️ Migration Anti-Patterns​

#Anti-PatternConsequenceCorrect Approach
1Updating NuGet version without modifying codeMany build errorsClean old API references first, then upgrade NuGet
2Assuming v9.x config object is UpdateRequestUpdateRequest property names completely differentRewrite UpdateRequest per documentation
3Using dev-branch APIs on v10.4.6 stableMissingMethodExceptionCheck API availability table
4Not testing Upgrade process after migrationMain app updates but Upgrade crashesTest both sides
5Keeping old v9.x references without deletingType conflictsClean csproj and re-add references

  • /generalupdate-init β€” Integration guide from scratch
  • /generalupdate-troubleshoot β€” Migration issue diagnosis
  • /generalupdate-security-audit β€” Post-migration security audit