Electron开发常见问题

窗口置顶

有些场景,比如在与其它软件交互过程中,接受到某些讯息,需要将Electron窗口显示在最前面,普通的moveTop并不生效,可以以使用以下方法:

// 设置总是在最前面,后设为false
win.setAlwaysOnTop(true);
setTimeout(() => {
  win.setAlwaysOnTop(false);
}, 100);

使用electron-updater自更新

  • 下载更新的exe存放目录一般为:C:\Users\{用户名}\AppData\Local\{package.json-name}-updater\pending;删除里面的文件一般可以清除下载缓存重新走下载进度进行下载

下载处理文件相关问题

  1. 问题一:下载文件修改文件,容易出现文件被占用问题,多半是browserWindow对下载句柄未及时释放导致的

    解决方案:新启一个browserWindow来做下载文件相关的逻辑,下载完关闭窗口,接着处理修改文件或目录的操作

  2. 问题二:当下载窗体设置为hide()时,会与360冲突,下载文件速度会很慢

    解决方案:不要设置hide(),可以设置窗体最小化,透明等来模拟窗口不显示

Mac端代码签名

在使用electron-updater做版本更新逻辑时,没有进行代码签名,在Mac端是无法使用更新功能的,大致的代码签名逻辑如下:

  1. 钥匙串 -> 证书助理 -> 从证书颁发机构请求证书 -> 邮箱随便填,并保持文件到本地

  2. 用开发者账号登录https://developer.apple.com/ -> Account -> Certificates,Identifiers & Profiles 下载developer ID Application证书

  3. Mac系统对代码进行签名(设置csc_link=p12证书、xcode引入证书),详情请参考 文档

  4. 有可能签名后,会出现闪退问题(一般是权限不足导致),需要进行如下配置:

  • 添加entitlements.mac.plist文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
  </dict>
</plist>
  • electron-builder配置引入这个文件
"mac": {
  "hardenedRuntime": true,
  "gatekeeperAssess": false,
  "entitlements": "build/entitlements.mac.plist",
  "entitlementsInherit": "build/entitlements.mac.plist"
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容