本文へスキップ
MameTechNews
フロントエンド

Electron 45、画面共有の権限名とASARの読み出しを変更

## POINTS

  • 画面共有の許可はmediaからdisplay-captureへ変わる。mediaだけを許しているハンドラは、上げた直後に共有が失敗する。
  • ASAR内ファイルのopenは一時コピーを返さず、生のfdをネイティブや別プロセスへ渡すコードはEBADFになる。書き込みopenはEACCESだ。
  • サンドボックスのpreloadからBuffer、events、timers、url、setImmediateが外れる。使っているならpolyfillを足す。

Electron 45.0.0は10月21日に公開された。基盤はChromium 156.0.8078.48、Node.js 24.22.0、V8 15.6.75.19だ。

画面、ウィンドウ、タブのキャプチャ要求は、setPermissionRequestHandlerへdisplay-captureとして届く。mediaだけを許可しているハンドラは、display-captureも許可しないと画面共有が止まる。chromeMediaSource: 'desktop'は、desktopCapturer.getSourcesの画面とウィンドウのIDしか受け付けず、WebContentsのIDはInvalid stateになる。タブはchromeMediaSource: 'tab'とwebContents.getMediaSourceId()、またはsetDisplayMediaRequestHandlerを使う。

ASAR内のfs.openは、一時ファイルへ展開せずアーカイブから直接読む記述子を返す。fs.readやcreateReadStreamは動く。記述子自体は中身を持たないので、ネイティブアドオン、child_processのstdio、net.Socketのfd、workerへ移したFileHandleはEBADFになる。書き込みフラグのopenはEACCESで失敗する。

サンドボックスのpreloadからは、events、timers、urlと、Buffer、setImmediate、clearImmediateが外れる。使うならpolyfillを入れる。webviewTagを有効にしない限り、サンドボックスのレンダラでElectron自身のJavaScript束は評価されない。

macOSではapp.configureWebAuthn()で、iCloudキーチェーンのパスキーUIを出せる。同期のsafeStorageは非推奨で、46で削除される。