7

我正在尝试使用注册协议处理程序app.setAsDefaultProtocolClient并且我已经让它在 macOS 上运行良好但在 Windows 10 上我得到一个对话框说

Error launching app  
Unable to find Electron app at 'C:\Program Files(x86)\Google\Chrome\Application\60.0.3….. Ect
Cannot find module 'C:\Program Files(x86)\Google\Chrome\Application\60.0.3….. Ect

它在 Chrome\Application 文件夹中查找是否正确?如果我使用 npm start 或使用 electron-packager 从打包的应用程序运行,我会遇到同样的错误。

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

4

1 回答 1

8

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

最初,我有这样的东西,它适用于 OSX 和 Windows 上的 packaged.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

于 2018-12-14T20:04:15.937 回答