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
{{ message }}
Repository navigation
Read the installed game version from KSA.dll's version resource #38
Borea needs to read which game build is installed.
RFC 0017 gives an ordered chain: KSA.dll PE FileVersion, then PE ProductVersion, then the build field of the newest Content/Versions/*.json. This issue covers the first two; the Content/Versions fallback is a follow-up.
IInstalledGameVersionProvider in Borea.Core/Game, implemented in Borea.Storage/Game, following the ILatestVersionPing and IGamePathProvider precedent of interface in Core, I/O outside it.
Take the directory from IGamePathProvider.GetGameDirectoryPath(), which is nullable. Read FileVersionInfo, try FileVersion then ProductVersion. GameVersion.TryParse already accepts a leading v, a -suffix and a +hash, so ProductVersion parses unchanged.
Return the parsed GameVersion? next to the raw string, mirroring LatestVersionInfo. RFC 0017 says an unparseable version "becomes Unknown rather than being discarded", so the string stays displayable.
Three failure modes: the game path is null, KSA.dll is missing (GetVersionInfo throws), and the file has no version resource (FileVersion comes back null).
Tests in Borea.Storage.Tests, where TestGamePathProvider already roots a temp game folder per test: path null, KSA.dll missing, present but unparseable, present and valid.
For the valid case add a tiny fixture class library under tests/Borea.Storage.Tests/Fixtures/ with <FileVersion>2026.8.3.5117</FileVersion> and copy its output in as KSA.dll.
Activity