电子 - MAC保持在码头

时间:2018-06-15 13:15:14

标签: macos electron

有没有办法保留我在码头开发的Electron应用程序?我的目标是让用户下载.app文件,启动它(它自动执行),然后在MAC" Keep In Dock"他们关闭之后。我知道这可以用dockutil完成,但我需要一种方法在应用程序中完成它。

2 个答案:

答案 0 :(得分:0)

我在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' });
}

答案 1 :(得分:0)

以下是一些改进的code执行初始测试(img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2,None) 管道传输到None),以确保只有一个应用实例永久保存在Dock中。它已在macOS Yosemite和El Capitan上成功测试......

defaults read