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