macos - 电子 - MAC 保持在码头
问题描述
有没有办法将我开发的 Electron 应用程序保留在 Dock 中?我的目标是让用户下载 .app 文件,启动它(它会自动执行),然后在他们关闭它后在 MAC“保持在 Dock”上。我知道这可以使用dockutil 来完成,但我需要一种在应用程序中执行此操作的方法。
解决方案
我在 macOS 10.11.6 (El Capitan) 上有一些工作代码,它将当前应用程序永久添加到 Dock,但不幸的是我真的不知道如何检查图标是否已经在 Dock 中,所以再次运行代码每次都会添加一个新的。
另请注意,杀死 Dock 是更新它所必需的,但这可能会在它消失几秒钟时让用户感到不安......
无论如何,这里是代码,可以用作起始基础:
const electron = require ('electron');
const app = electron.app || electron.remote.app;
const path = require ('path');
const url = require ('url');
const { spawnSync } = require ('child_process');
let packagePath = path.join (app.getPath ('exe'), '..', '..', '..');
let packageURL = url.format ({ protocol: 'file', slashes: true, pathname: packagePath });
let entry = `<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>${packageURL}</string><key>_CFURLStringType</key><integer>15</integer></dict></dict></dict>`;
let defaults = spawnSync ('defaults', [ 'write', 'com.apple.dock', 'persistent-apps', '-array-add', entry ], { encoding: 'utf8' });
if (!defaults.error)
{
let killall = spawnSync ('killall', [ 'Dock' ], { encoding: 'utf8' });
}
推荐阅读
- amazon-s3 - 亚马逊 S3 | 生命周期管理是否考虑上传日期或最后访问日期?
- flutter - 如何在 Dart 中模拟 File 的实例
- .net - AAD B2C:按 PrincipalName 搜索用户
- pubmed - Pubmed API 返回的结果少于 Web 界面
- python - 特定情况下 Python 中的列表推导
- python - 有没有办法使用 numpy 或 opencv 对图像进行切片,以使切片图像具有至少一个感兴趣对象的实例?
- api - 添加资源的最 RESTFul 方式是什么?
- twilio - Twilio 使用自定义参数将呼叫转接到另一个 Twilio 号码
- python - 是否可以模拟 os.scandir 及其属性?
- c++ - 在c++中运行程序时没有输出