电子协议处理程序在窗口上不起作用



我正在尝试使用app.setAsDefaultProtocolClient注册协议处理程序,并且它在 macOS 上工作正常,但在 Windows 10 上我得到一个对话框说

Error launching app  
Unable to find Electron app at 'C:Program Files(x86)GoogleChromeApplication60.0.3….. Ect
Cannot find module 'C:Program Files(x86)GoogleChromeApplication60.0.3….. Ect

它在Chrome\应用程序文件夹中查找是正确的吗?如果我使用 npm start 或使用电子打包器从打包的应用程序运行,我会收到同样的错误。

我是否缺少需要为 Windows 配置的内容?喜欢 mac 上的 plist?我一直在四处寻找,但似乎找不到任何东西。让我知道我可以添加的任何信息来提供帮助。

我遇到了同样的问题:协议处理程序在 Windows 上的开发环境中找不到应用程序的位置。一切都可以在OSX上运行,Windows只有在打包时才运行。此处的解决方法是在注册协议时手动提供应用的路径。

最初,我有这样的东西,它可以在OSX上工作并在Windows上打包.exe:

if(!app.isDefaultProtocolClient('app')) {
app.setAsDefaultProtocolClient('app');
}

以下是更正在 Windows 上进行开发的路径问题的修复:

// remove so we can register each time as we run the app. 
app.removeAsDefaultProtocolClient('app');
// If we are running a non-packaged version of the app && on windows
if(process.env.NODE_ENV === 'development' && process.platform === 'win32') {
// Set the path of electron.exe and your app.
// These two additional parameters are only available on windows.
app.setAsDefaultProtocolClient('app', process.execPath, [path.resolve(process.argv[1])]);        
} else {
app.setAsDefaultProtocolClient('app');
}

我设置了项目,以便process.env.NODE_ENV告诉我我是否在开发环境中。如果在开发环境中,则需要传入两个附加参数以app.setAsDefaultProtocolClient。第一个参数当然是你想要注册的协议,第二个参数应该是电子可执行文件的路径。process.execPath是默认值,计算结果应为/path/to/your/project/node_modules/electron/dist/electron.exe或类似值。

第三个参数是要运行electron.exe的参数数组。就我而言,我想运行我的应用程序,所以我传入包含在数组[]中的路径。process.argv[1]只是获取开发应用路径的一种方式,其计算结果应为/path/to/your/project/dist/electron/main.js或类似。

有关更多信息:https://electronjs.org/docs/api/app#appsetasdefaultprotocolclientprotocol-path-args

相关内容

  • 没有找到相关文章

最新更新