You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: adapt simulation testing to GeneralUpdate refactored API (#77)
* feat: generate generalupdate.manifest.json alongside sample project structure
When the user clicks 'Generate Sample Project Structure', the tool now
also writes generalupdate.manifest.json into the sample output directory.
This makes the sample output self-contained — users get both the
published binaries and the update manifest in one step.
Changes:
- SamplePublisherService.PublishAsync: add optional ManifestModel parameter;
if provided, serialize and write generalupdate.manifest.json into output root
- ConfigViewModel.GenerateSample: build ManifestModel from UI fields
(falling back to parsed csproj data via ManifestGeneratorService.FromCsprojInfo)
and pass it to PublishAsync
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: use IsNullOrWhiteSpace in FromCsprojInfo and add semver validation to GenerateSample
- ManifestGeneratorService.FromCsprojInfo: replace ?? with
!string.IsNullOrWhiteSpace() so that empty/unset UI fields
correctly fall back to parsed csproj values (MainAppName,
AppType, UpdateAppName, UpdatePath).
- ConfigViewModel.GenerateSample: run semver validation on
ClientVersion and UpgradeClientVersion before writing the
manifest, matching the behavior of the Generate pipeline.
Fixes review feedback from Copilot on PR #75.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat: adapt simulation testing to GeneralUpdate refactored API
- Replace NuGet package references with project references to local GeneralUpdate.Core source
- Rewrite test client (ClientSample) to use GeneralUpdateBootstrap with SetConfig()
- Rewrite test upgrade (UpgradeSample) to align with GeneralUpdate-Samples/src/Upgrade pattern
- Rewrite LocalUpdateServer to match GeneralUpdate-Samples/src/Server:
- Version filtering via Version.TryParse (only return higher versions)
- Proper VerifyDTO / VerificationResultDTO with all required fields
- Always HTTP 200 with semantic Code in JSON body (never 204)
- No fallback/last-resort matching that causes update loops
- Update DiffService from DifferentialCore.Clean() to DiffPipeline.CleanAsync()
- Switch dotnet publish from self-contained single-file to framework-dependent
(matching SamplePublisherService pattern in Config Generator)
- Fix trailing backslash in output directory breaking dotnet publish command line
- Generate generalupdate.manifest.json in simulation app directory
- Read ClientVersion from manifest on startup to prevent update loops
(WriteBackClientVersion persists updated version between runs)
- Add UpdatePath UI field to simulation view with localization
- Use real project output names (ClientSample.exe, UpgradeSample.exe)
instead of renamed names to match Config Generator directory structure
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: address Copilot review feedback
- Version filter: exclude unparseable versions instead of silently including them
- RecordId: use stable incrementing counter instead of GetHashCode
- DisposeAsync: log exceptions instead of empty catch
- Comment: update Client.exe → ClientSample.exe
- AppType: use switch expression for clarity
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments