- Windows x64
- Visual Studio 2019 or newer with MSBuild and the C++ desktop workload
- PowerShell for dependency and packaging scripts
- Inno Setup 6 when creating the installer locally
From the repository root:
msbuild Viewer\Viewer.sln /m /restore /p:Configuration=Release /p:Platform=x64
msbuild Comparer\Comparer.sln /m /restore /p:Configuration=Release /p:Platform=x64Normal builds restore prebuilt OpenCV and libheif dependency archives into
.deps. The OpenCV archive is built with the VS2019 v142 toolset so its
static libraries link with VS2019 and newer MSVC toolsets. Dedicated GitHub
Actions workflows create updated dependency archives when dependency versions
or toolsets change.
The portable core suite verifies raw layout sizing, source-native pixel sampling, RGB conversion outputs, and PSNR/SSIM reference values with small deterministic fixtures.
On macOS or Linux:
./Tests/run_core_regression_tests.shFrom a Visual Studio Developer PowerShell on Windows:
msbuild Tests\CoreRegressionTests.vcxproj /m /p:Configuration=Release /p:Platform=x64
.\Tests\bin\x64\Release\CoreRegressionTests.exeThe Windows GitHub Actions build runs this suite before building the applications.
After both applications are built:
.\build\Package-Q1View.ps1 -Configuration Release -Platform x64
.\build\Build-Q1ViewInstaller.ps1 -SourceDir .\dist\Q1View-windows-x64 -OutputDir .\distThe portable directory contains Viewer.exe, Comparer.exe, and required
runtime DLLs together. The installer places the same runtime set on the target
machine and registers separate Viewer and Comparer Start Menu entries.
Application releases publish two user-facing assets:
Q1ViewSetup-x64.exeQ1View-windows-x64.zip
Dependency artifact releases are separate build inputs and are not end-user application downloads.
MSIX is required for Microsoft Store submission and supports side-loading on Windows 10 (version 1809 or later) and Windows 11.
- Windows 10 SDK — provides
makeappx.exeandsigntool.exe. Install via Visual Studio Installer → Individual components → Windows 10 SDK. - A code-signing certificate whose Subject CN matches the
Publishervalue ininstaller/msix/AppxManifest.xml.- Microsoft Store: use the certificate assigned in Partner Center.
- Side-loading / development: a self-signed certificate works.
- Logo PNG assets in
installer/msix/Assets/(seeinstaller/msix/Assets/README.mdfor required sizes).
Build the applications first, then run:
# Stage binaries
.\build\Package-Q1View.ps1 -Configuration Release -Platform x64
# Create and sign the MSIX
.\build\Package-Q1ViewMsix.ps1 `
-AppVersion 1.0.16.0 `
-Publisher "CN=YourPublisherCN"The signed package is written to dist\Q1View-windows-x64.msix.
To validate the manifest without signing:
.\build\Package-Q1ViewMsix.ps1 -AppVersion 1.0.0.0 -SkipSigninginstaller/msix/AppxManifest.xml defines the package identity, the Viewer
application entry point, and the runFullTrust capability required for
packaged Win32 applications. Comparer.exe remains in the MSIX payload and
is launched through Viewer's Compare action; declaring it as a second
Store entry point fails WACK package compliance.
Before Store submission, update Identity/@Publisher to match the exact
Publisher string shown in Microsoft Partner Center. The Version and
Publisher fields are overridden at build time by Package-Q1ViewMsix.ps1.
To install the MSIX outside the Store:
- Install the signing certificate as a Trusted Root CA (one-time setup).
- Double-click
Q1View-windows-x64.msixor run:Add-AppPackage -Path .\dist\Q1View-windows-x64.msix
Product-facing documentation belongs in docs/, with screenshots in
docs/images/. Prefer current runtime captures over source-directory diagrams
or editable presentation files. When UI behavior changes, update the relevant
screen capture and user guide in the same change.