Skip to content

[B5] Bundle install-id scoping + Windows atomic flip #42

@radical

Description

@radical

Track B implementation. Depends on Q2 (#31) and Q6 (#36).

Two related changes:

  1. Bundle scoping: change ~/.aspire/bundle/<ver>/ to ~/.aspire/bundle/<install-id>/<ver>/ so two installs at the same version don't collide on extraction or reparse-flip. Reparse-point target moves under <install-id>/.

  2. Windows atomic flip: ReparsePoint.cs:72-78 uses RemoveIfExists+Move. Replace with MoveFileExW(MOVEFILE_REPLACE_EXISTING) or directory junction transactional swap. From reparse-flip-risk.md.

Plus: tighten TryCleanupStaleVersions to operate within a single install-id, fix the legacy managed/ migration hard-failure path.

Code touched

  • src/Aspire.Cli/Bundles/BundleService.cs (TryFlipLinks, TryRestoreLinks, TryCleanupStaleVersions, EnsureExtractedAsync)
  • src/Aspire.Cli/Bundles/ReparsePoint.cs:72-78

Scenarios advanced

S5.1–S5.5, S7.1, S7.2.


Part of: #29

Metadata

Metadata

Assignees

No one assigned

    Labels

    acquisitionAspire CLI acquisition coherence worktrack-b-implTrack B: implementation (install-route awareness etc.)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions