Shared interface design

Altium Environment Interfaces

Discovery models for local Altium Designer installs and ProgramData profile extension state.

AltiumInstall

Rationale

Launcher and diagnostic commands need stable install metadata without depending on machine-local registry shape.

Purpose

Represents one discovered Altium Designer installation with name, label, major version, root path, X2.exe path, runtime target framework, registry version, unique id, and discovery source.

Test Requirements

Environment tests must create fake AD25 and AD26 roots, verify deterministic latest-first sorting, and verify version selection by AD major.

Working Definition

Working when installs, launch, and the ad alias can select the intended executable from filesystem, environment, registry, or explicit path inputs.

AltiumProfile

Rationale

Installer and cleanup workflows need a reviewable profile model before modifying ProgramData extension folders.

Purpose

Represents one Altium ProgramData profile folder, selected extension module paths, registry state, registered version, DLL presence, and last write time.

Test Requirements

Environment tests must build a temporary profile tree, verify list state, verify dry-run cleanup, and verify real cleanup removes only the selected module directory and registry item.

Working Definition

Working when profiles list can explain extension state per profile and profiles clean can safely target one profile or all profiles without touching paths outside the selected profile Extensions root.