窗口置顶
有些场景,比如在与其它软件交互过程中,接受到某些讯息,需要将Electron窗口显示在最前面,普通的moveTop
并不生效,可以以使用以下方法:
// 设置总是在最前面,后设为false
win.setAlwaysOnTop(true);
setTimeout(() => {
win.setAlwaysOnTop(false);
}, 100);
使用electron-updater
自更新
- 下载更新的exe存放目录一般为:
C:\Users\{用户名}\AppData\Local\{package.json-name}-updater\pending
;删除里面的文件一般可以清除下载缓存重新走下载进度进行下载
下载处理文件相关问题
-
问题一:下载文件修改文件,容易出现文件被占用问题,多半是
browserWindow
对下载句柄未及时释放导致的解决方案:新启一个
browserWindow
来做下载文件相关的逻辑,下载完关闭窗口,接着处理修改文件或目录的操作 -
问题二:当下载窗体设置为
hide()
时,会与360冲突,下载文件速度会很慢解决方案:不要设置
hide()
,可以设置窗体最小化,透明等来模拟窗口不显示
Mac端代码签名
在使用electron-updater
做版本更新逻辑时,没有进行代码签名,在Mac
端是无法使用更新功能的,大致的代码签名逻辑如下:
钥匙串 -> 证书助理 -> 从证书颁发机构请求证书 -> 邮箱随便填,并保持文件到本地
用开发者账号登录
https://developer.apple.com/
->Account
->Certificates,Identifiers & Profiles
下载developer ID Application
证书Mac系统对代码进行签名(设置csc_link=p12证书、xcode引入证书),详情请参考 文档
有可能签名后,会出现闪退问题(一般是权限不足导致),需要进行如下配置:
- 添加
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"
}