.\installer\Build-Msi.ps1 -Version 0.1.0 # -> artifacts\msi\XrealScreen-0.1.0-x64.msi (the only file to copy)Double-click the MSI: Welcome → License (MIT) → Install folder (Change...) → Virtual display driver (check box; only when the driver is bundled) → Install (Windows asks for administrator rights). Or silently:
msiexec /i XrealScreen-0.1.0-x64.msi /qn /l*v install.log # app + driver (when bundled)
msiexec /i XrealScreen-0.1.0-x64.msi /qn INSTALLDRIVER=0 # app only
msiexec /i XrealScreen-0.1.0-x64.msi /qn INSTALLDIR="D:\Apps\XrealScreen\" # other folder
msiexec /x XrealScreen-0.1.0-x64.msi /qn # uninstall- Installs the unpackaged, self-contained app (+
xrs.exe) toC:\Program Files\XrealScreenand a Start menu shortcut. - Virtual display driver (only when
artifacts\driverwas built,driver\Build-Driver.ps1): runsxrs driver install— keeps an existing virtual-display-rs driver, otherwise trusts the driver's test certificate and installs the driver. Uninstall removes only what it installed (xrs driver statusshows the state). - Built with FalkForge (
installer\msi\Program.cs; CLI pinned indotnet-tools.json). ICE validation needs the Windows SDK MSI tools (darice.cub), otherwise it is skipped. - Unsigned for now. Signing:
-CertificateThumbprint <thumbprint>signs our exes/DLLs and the MSI; a public release needs a trusted certificate and an attestation-signed driver (ADR-0013).
.github/workflows/release.yml builds the MSI on a GitHub runner and attaches it (plus XrealScreen-Driver.zip) to the
release. The driver is not built on GitHub: the workflow downloads it from the pre-release driver-v0.4.0.1.
- Once per driver version (here, with the toolchain installed):
Create a GitHub pre-release with tag
.\installer\driver\Build-Driver.ps1 # -> artifacts\driver (signed with the driver test certificate) .\installer\Build-DriverPackage.ps1 # -> artifacts\driver-installer\XrealScreen-Driver.zip
driver-v0.4.0.1and uploadXrealScreen-Driver.zipto it (a new driver version: new tag, and updateDRIVER_TAGin the workflow). - Publish a release with a tag
vX.Y.Z(e.g.v0.2.0): the workflow buildsXrealScreen-X.Y.Z-x64.msiand uploads it (~10 min). Actions → Release MSI → Run workflow builds a test MSI as a workflow artifact.
- Fallback: without the driver pre-release the workflow builds the driver itself if the secrets
DRIVER_PFX_BASE64(base64 ofinstaller\.signing\driver\XrealScreen-driver.pfx) andDRIVER_PFX_PASSWORDexist (+~15 min, cached); otherwise the MSI has no driver page. Keeping the key off GitHub is safer (it signs a root certificate users trust).
- Copy this folder to the PC.
- Open PowerShell as administrator in this folder and run:
Set-ExecutionPolicy -Scope Process Bypass .\Install-XrealScreen.ps1
- Start XrealScreen from the Start menu.
The package is self-contained (.NET and Windows App SDK included). It is signed with a test certificate; the script trusts it on this PC (Local Machine → Trusted People).
The virtual display driver (virtual-display-rs 0.4, MIT, built from upstream source) is in driver\. If the PC already has a virtual-display-rs driver (for example from VertoXR) it is kept; -UpdateDriver replaces it with the bundled build. Otherwise the script asks before it trusts the driver's test certificate "XrealScreen Driver (test)" in Trusted Root + Trusted Publishers — Windows installs self-signed drivers only then — and installs the driver.
- Windows 11, x64.
- XREAL One-series glasses (tested: XREAL 1S).
- Nothing else: the virtual display driver is bundled (see above).
.\Uninstall-XrealScreen.ps1Removes the app, and the driver + driver certificate only if this installer installed them.
.\installer\driver\Build-Driver.ps1 # → artifacts\driver\ (needs rustup, WDK 10.0.26100, LLVM 18; see the script)
.\installer\Build-Package.ps1 # → artifacts\installer\ (bundles artifacts\driver)
.\installer\Build-Package.ps1 -Version 0.2.0.0The Store build has no driver: see store\README.md (Build-StorePackage.ps1, Build-DriverPackage.ps1).