I'm trying to embed a Finder Sync extension written in Swift in my app written with Electron. How can I manage to make them work together and communicate with each other? I have read the Apple documentation but it only explains how to add a target to a native application. I also noticed that I can manually inject the .appex
compiled file (produced by XCode) in the application Plugins
folder using electron builder.
How can I develop and test the extension in XCode and embed it correctly in a custom Electron app?
Any suggestion?
Thank you very much for any suggestion
Create PlugIns folder in your Electron root folder.
Copy the .appex file into PlugIns folder.
If you are using electron-builder, modify the package.json file - add:
"extraFiles": ["PlugIns/"]
in the "mac" section.
Build. The Contents of your app package will contain the PlugIns folder and your appex file inside, and the appex will get loaded into your app's process.
How to embed a mac app extension in an Electron app?
I would compile it as an independent binary and include it in some dir to be executed from the electron app using child_process.execFile
You can use arguments when executing the binary with execFile, here is an example (using promise)
const util = require('util');
const execFile = util.promisify(require('child_process').execFile);
async function FinderSyncExtPlugin(ARGUMENTS) {
const { stdout } = await execFile('YourBinary', ARGUMENTS);
console.log(stdout);
}
FinderSyncExtPlugin(['argument1','argument2','...']);
You could then use the stdout to know the status/result of the requested operation.
来源:https://stackoverflow.com/questions/45612515/how-to-embed-a-mac-app-extension-in-an-electron-app