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
Commit 96c5a42
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: technical-documentation/engineering/build-and-packaging.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,7 @@ OpenScreen builds its renderer, Electron main process, preload bridge, native he
11
11
|`npm run build`| Runs TypeScript checking, Vite, then unrestricted `electron-builder`. This is the full generic packaging command, but it does not proactively build platform helpers. **On Windows, prefer `build:win`** — see [Stale native artifacts](#stale-native-artifacts). |
12
12
|`npm run build:mac`| Builds the ScreenCaptureKit and cursor helpers, checks TypeScript, runs Vite, and packages the macOS target. |
13
13
|`npm run build:win`| Builds WGC/cursor helpers and the D3D11 compositor addon, fetches FFmpeg, checks TypeScript, runs Vite, and packages the Windows NSIS target without npm rebuild. |
14
+
|`npm run build:win:arm64`| The same for Windows on ARM, into `electron/native/bin/win32-arm64/`. It has to run on an ARM64 host: the FFmpeg and ONNX Runtime fetches provision for the host. |
14
15
|`npm run build:win:store`| Performs the Windows native and renderer build, then asks electron-builder for the configured AppX Store package. |
15
16
|`npm run build:linux`| Checks TypeScript, runs Vite, then packages AppImage, Debian, pacman, and RPM artifacts without npm rebuild. Its explicit `--linux` target list overrides `linux.target` in `electron-builder.json5`, so a target added to the config alone is never built. |
16
17
|`npm run build:native:mac`| Uses SwiftPM to build requested single-architecture ScreenCaptureKit and macOS cursor helpers and stages them under `electron/native/bin/darwin-*`. |
@@ -99,7 +100,7 @@ The fix is to link the CRT statically, which removes the dependency instead of o
99
100
- CMake helpers — `set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")` in `electron/native/wgc-capture/CMakeLists.txt`. These are standalone processes that share no CRT state with anything, so `/MT` costs about 100 KB each and nothing else.
100
101
- Rust addon — `-C target-feature=+crt-static` in `crates/.cargo/config.toml`. Safe for the napi cdylib: only opaque `napi_value`s cross the boundary, and Buffers handed to Node carry a finalizer that frees, in the addon, what the addon allocated.
101
102
102
-
`scripts/before-pack.cjs` reads the import table of every `.exe`/`.dll`/`.node` in `electron/native/bin/win32-x64/` and refuses to package a binary that needs a redistributable DLL **the package does not ship**. The `api-ms-win-crt-*` api-sets are deliberately not flagged: that is the UCRT, which does ship with Windows 10 and later.
103
+
`scripts/before-pack.cjs` reads the import table of every `.exe`/`.dll`/`.node` in every shipped `electron/native/bin/win32-*/`folder and refuses to package a binary that needs a redistributable DLL **the package does not ship**, or one built for another architecture than its folder. The `api-ms-win-crt-*` api-sets are deliberately not flagged: that is the UCRT, which does ship with Windows 10 and later.
103
104
104
105
#### `vcomp140.dll`: the member that got away
105
106
@@ -285,7 +286,7 @@ Copies of the same three files also remain at their old `public/` paths, because
285
286
286
287
### Windows
287
288
288
-
The default electron-builder target is NSIS, with an assisted installer that allows users to change the installation directory. `npm run build:win:store` explicitly selects the configured `appx` target for Microsoft Store packaging. The AppX identity, publisher, capabilities, and Store languages come from `electron-builder.json5`. Release CI builds and retains both the NSIS installer and AppX package, although the GitHub release publisher currently downloads only the `openscreen-windows`NSIS artifact.
289
+
The default electron-builder target is NSIS, with an assisted installer that allows users to change the installation directory. `npm run build:win:store` explicitly selects the configured `appx` target for Microsoft Store packaging. The AppX identity, publisher, capabilities, and Store languages come from `electron-builder.json5`. Release CI builds and retains both the NSIS installer and AppX package, although the GitHub release publisher currently downloads only the `openscreen-windows-x64` and `openscreen-windows-arm64`NSIS artifacts.
Copy file name to clipboardExpand all lines: technical-documentation/engineering/ci-workflows.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -98,7 +98,7 @@ Jobs that need the root dependencies use `.github/actions/setup`, which requests
98
98
99
99
A `v*` tag or manual dispatch starts platform builds. Dispatch accepts `arch` (`arm64`, `x64`, or `both`) for macOS and an optional `release_tag` that enables publication.
100
100
101
-
-`build-windows` runs `npm run build:win` and uploads `openscreen-windows`for 30 days.
101
+
-`build-windows`is an `x64`/`arm64` matrix, each on a runner of its own arch (`windows-latest`, `windows-11-arm`). It runs `npm run build:win`or `npm run build:win:arm64`and uploads `openscreen-windows-x64` or `openscreen-windows-arm64`for 30 days, with a JSON sidecar that `publish-release` folds into one `latest.yml` listing both installers.
102
102
-`build-windows-store` runs `npm run build:win:store` and uploads `openscreen-windows-store` for 30 days.
103
103
-`build-macos` is an `arm64`/`x64` matrix. It builds Vite/Electron and native helpers, packages and optionally signs the app, creates DMGs, notarizes every signed build including pre-releases, and uploads one artifact per architecture for 30 days.
104
104
-`build-linux` produces AppImage, deb, pacman, and rpm files and uploads `openscreen-linux` for 30 days. It asserts one artifact per format before uploading, because `if-no-files-found: error` evaluates the union of the upload globs and so cannot catch a single format that stopped being produced. No zsync: it was electron-updater's older AppImage delta format, and app-builder-lib 26.x embeds a block map in the AppImage instead — which is what the in-app updater (`electron/auto-updater.ts`) reads for a differential download.
Copy file name to clipboardExpand all lines: technical-documentation/testing/manual-e2e-checklist.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,12 +49,12 @@ A release candidate is tested on what CI built, not on a dev build. The artifact
49
49
50
50
```bash
51
51
gh run list -R getopenscreen/openscreen --workflow build.yml --branch <branch>
52
-
gh run download <run-id> -R getopenscreen/openscreen -n openscreen-windows
52
+
gh run download <run-id> -R getopenscreen/openscreen -n openscreen-windows-x64
53
53
```
54
54
55
55
| Artifact | What it holds |
56
56
|---|---|
57
-
|`openscreen-windows`|`Openscreen.Setup.<version>.exe`, the NSIS installer, with its `.blockmap` and `latest.yml`|
57
+
|`openscreen-windows-x64`, `openscreen-windows-arm64`|`Openscreen.Setup.<version>-x64.exe` or `Openscreen.Setup.<version>-arm64.exe`, the NSIS installer, with its `.blockmap` and the update-feed JSON|
58
58
|`openscreen-windows-store`|`Openscreen.Setup.<version>.appx`, the Store package |
59
59
|`openscreen-mac-arm64`, `openscreen-mac-x64`|`Openscreen-macOS-Apple-Silicon-<version>.dmg` or `Openscreen-macOS-Intel-<version>.dmg`, with the update ZIP and its JSON |
60
60
|`openscreen-linux`|`Openscreen-Linux-<version>` as `.AppImage`, `.deb`, `.rpm` and `.pacman`, with `latest-linux.yml`|
0 commit comments