- Fetch the latest release metadata from
optiscaler/OptiScaler. - Select the first
.7zor.ziprelease asset. - Download the asset into
cache/optiscaler_downloads. - Extract
.7zwith bundled/system7z.exe; extract.zipwith Pythonzipfile. - Copy
OptiScaler.dllto the selected proxy filename, for exampledxgi.dll. - Copy the remaining release payload dynamically, preserving relative paths.
- Write
.optiscaler-gui-install.jsonwith installed files, directories, selected proxy filename, and OptiScaler release version.
Current OptiScaler releases can use 7z compression filters such as BCJ2 that py7zr cannot extract reliably. The portable release therefore bundles 7z.exe, and release CI verifies that the ZIP contains it.
New installs write an install manifest. Uninstall first uses that manifest to remove only files the GUI installed. Legacy installs without a manifest still use the older broad OptiScaler-file detection path for compatibility.
The scanner supports Steam, Epic Games, GOG, Xbox Game Pass, Heroic metadata, and manual paths. Library roots are cached to avoid repeated expensive scans. Steam image lookup uses local manifests first and then background SteamSpy data.
Create releases by pushing an annotated v* tag. The GitHub release workflow runs tests, builds the portable package on Windows, verifies 7z.exe is included, and uploads the ZIP to the GitHub release.