Electron:process.defaultApp 和 app.isPackaging 之间的区别

xme*_*eko 5 electron

电子标志process.defaultApp和之间有什么区别app.isPackaged?两者都用于区分开发环境和生产环境。我的观察总是如此Boolean(process.defaultApp) == !app.isPackaged是否存在两者都是true或两者都是的情况false

来自文档和代码:

进程.defaultApp

一个布尔值。当应用程序通过作为参数传递给默认应用程序来启动时,此属性在主进程中为 true,否则未定义。

应用程序已打包

一个布尔属性,如果应用程序已打包,则返回 true,否则返回 false。对于许多应用程序来说,此属性可用于区分开发和生产环境。

从代码中-当 exec 文件不是或app.isPackaged时设置。electronelectron.exe

注意:我知道一个细微的区别是process.defaultApp只能在主进程中使用。

Ale*_*ich 7

两者可以产生相同的结果,但必须对属性采取一些额外的注意process.defaultApp

  • 处理它所在的情况(例如undefined使用运算符)!
  • 在渲染器进程中使用remote.process代替process

主要流程

var isPackaged = !process.defaultApp;
Run Code Online (Sandbox Code Playgroud)

相当于:

var isPackaged = require('electron').app.isPackaged;
Run Code Online (Sandbox Code Playgroud)

渲染器进程

var isPackaged = !require('electron').remote.process.defaultApp;
Run Code Online (Sandbox Code Playgroud)

相当于:

var isPackaged = require('electron').remote.app.isPackaged;
Run Code Online (Sandbox Code Playgroud)

编辑

关于为什么app.isPackaged必须添加该属性的一些额外信息,虽然不是 100% 清晰,可以在相关拉取请求的对话中找到:add app.isPackaging #12656