Skip to content

feat: Integrate IProcessInfoProvider IPC into core workflow #408

@JusterZhu

Description

@JusterZhu

Summary

The IProcessInfoProvider abstraction and all 4 implementations (NamedPipe / SharedMemory / EncryptedFile / AutoFallback) are fully implemented, but the core workflow still uses the old Environments.SetEnvironmentVariable("ProcessInfo", ...) approach for Client-to-Upgrade IPC.

Current State

  • ClientUpdateStrategy.ExecuteStandardWorkflowAsync() serializes ProcessInfo to Environments
  • GeneralUpdateBootstrap.InitializeFromEnvironment() reads via Environments.GetEnvironmentVariable()
  • IProcessInfoProvider with NamedPipeProcessInfoProvider, SharedMemoryProcessInfoProvider, EncryptedFileProcessInfoProvider, and AutoProcessInfoProvider are all implemented but unused

Expected

  1. Client-side: use AutoProcessInfoProvider.SendAsync() to pass ProcessInfo (auto-fallback: NamedPipe, SharedMemory, EncryptedFile)
  2. Upgrade-side: use AutoProcessInfoProvider.ReceiveAsync() to receive ProcessInfo
  3. Remove the old Environments usage for ProcessInfo IPC (keep for other env variables if needed)

Benefits

  • NamedPipe: zero file residue, most secure
  • SharedMemory: Linux-friendly, no fs residue
  • EncryptedFile: fallback when pipes/shm unavailable
  • Auto-fallback ensures maximum cross-platform compatibility

Ref

Refactoring plan v2: Sub Issue 6 (ProcessInfo IPC re-design)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions