小编Ale*_*man的帖子

Electron.js:如何为窗口创建单独的下载 webContents.session?

我有一个 Electron文件管理器应用程序,它为不同的目的创建了 2 个窗口:

  • quickView用于预览本地文件的渲染器窗口。它使用“will-download”侦听器通过阻止下载来检测不受支持的文件。

  • main主渲染器窗口。它使用“will-download”侦听器来下载文件。

每个都有自己的will-download听众附加到他们的会话。但是由于某种原因,quickView侦听器覆盖了main侦听器。

窗口 1

在下一行中,我正在will-download为“主”进程创建一个侦听器。这个监听器的目的是下载文件:

https://github.com/aleksey-hoffman/sigma-file-manager/blob/55fd2462cf83898610883191807b7488fb5bdf89/src/utils/downloadManager.js#L133

win.webContents.session.on('will-download', listener)
Run Code Online (Sandbox Code Playgroud)

windows.main下面一行中的参数是win上面一行中的引用:

https://github.com/aleksey-hoffman/sigma-file-manager/blob/55fd2462cf83898610883191807b7488fb5bdf89/src/electronMain.js#L516

const resultInfo = await downloadManager.download(windows.main, {
Run Code Online (Sandbox Code Playgroud)

窗口 2

在下一行中,我正在will-download为“quickView”窗口创建一个侦听器。此侦听器的目的是检测不受支持的文件(在 Chromium 中触发下载事件)并阻止下载事件:

https://github.com/aleksey-hoffman/sigma-file-manager/blob/55fd2462cf83898610883191807b7488fb5bdf89/src/electronMain.js#L232

windows.quickViewWindow.webContents.session.once('will-download', _willDownloadHandler)
Run Code Online (Sandbox Code Playgroud)

我还没有找到另一种检测不受支持的文件的方法,这就是我will-download首先使用事件的原因。

问题

出于某种原因,will-download在处理程序的quickView窗口覆盖的处理程序main

当我在此处触发应用更新下载事件时(来自main流程):

https://github.com/aleksey-hoffman/sigma-file-manager/blob/55fd2462cf83898610883191807b7488fb5bdf89/src/electronMain.js#L516

const resultInfo = await downloadManager.download(windows.main, {
Run Code Online (Sandbox Code Playgroud)

它触发quickView渲染器窗口的事件处理程序:

https://github.com/aleksey-hoffman/sigma-file-manager/blob/55fd2462cf83898610883191807b7488fb5bdf89/src/electronMain.js#L241

function _willDownloadHandler (event, item, webContents) {
  ...
  windows.main.webContents.send('load:webview::failed', {path: …
Run Code Online (Sandbox Code Playgroud)

javascript chromium node.js electron

14
推荐指数
1
解决办法
496
查看次数

如何从 powershell 打开已安装的 Microsoft Store 应用程序?

我使用以下命令获取已安装的 Microsoft Store 应用程序的列表:

Get-AppxPackage -AllUsers
Run Code Online (Sandbox Code Playgroud)

然后我尝试打开一个应用程序:

powershell -Command "Start-Process 'C:\Program Files\WindowsApps\Microsoft.Windows.Photos_2021.21070.22007.0_x64__8wekyb3d8bbwe\Microsoft.Photos.exe' -Verb runAs"
Run Code Online (Sandbox Code Playgroud)

我收到访问错误:

This command cannot be run due to the error: Access is denied.
Run Code Online (Sandbox Code Playgroud)

windows powershell appx

5
推荐指数
1
解决办法
4599
查看次数

标签 统计

appx ×1

chromium ×1

electron ×1

javascript ×1

node.js ×1

powershell ×1

windows ×1