mirror of
https://github.com/netzbegruenung/jitsi-meet-electron.git
synced 2024-05-04 09:43:42 +02:00
Enhancements to make it more Mac App Store (mas) compatible
- disable the autoupdater if running as mas (was not working anyway, just logging an error on every start) - replace check via app.requestSingleInstanceLock() with LSMultipleInstancesProhibited in Info.plist due to https://github.com/electron/electron/issues/15958 - Quit the app also when all windows are closed to conform to macOS Human Interface Guidelines Comments from review: If the application is a single-window app, it might be appropriate to save data and quit the app when the main window is closed. - "asarUnpack": "**/*.node" to also sign the native addons when packaging - add the required mas-specific entitlements which include the app-sandbox key Signed-off-by: Christoph Settgast <csett86@web.de>
This commit is contained in:
parent
9b09a4bfa9
commit
5c49372e11
12
main.js
12
main.js
|
@ -162,7 +162,9 @@ function createJitsiMeetWindow() {
|
||||||
setApplicationMenu();
|
setApplicationMenu();
|
||||||
|
|
||||||
// Check for Updates.
|
// Check for Updates.
|
||||||
autoUpdater.checkForUpdatesAndNotify();
|
if (!process.mas) {
|
||||||
|
autoUpdater.checkForUpdatesAndNotify();
|
||||||
|
}
|
||||||
|
|
||||||
// Load the previous window state with fallback to defaults.
|
// Load the previous window state with fallback to defaults.
|
||||||
const windowState = windowStateKeeper({
|
const windowState = windowStateKeeper({
|
||||||
|
@ -290,8 +292,9 @@ function handleProtocolCall(fullProtocolCall) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Force Single Instance Application.
|
* Force Single Instance Application.
|
||||||
|
* Handle this on darwin via LSMultipleInstancesProhibited in Info.plist as below does not work on MAS
|
||||||
*/
|
*/
|
||||||
const gotInstanceLock = app.requestSingleInstanceLock();
|
const gotInstanceLock = process.platform === 'darwin' ? true : app.requestSingleInstanceLock();
|
||||||
|
|
||||||
if (!gotInstanceLock) {
|
if (!gotInstanceLock) {
|
||||||
app.quit();
|
app.quit();
|
||||||
|
@ -345,10 +348,7 @@ app.on('second-instance', (event, commandLine) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.on('window-all-closed', () => {
|
app.on('window-all-closed', () => {
|
||||||
// Don't quit the application on macOS.
|
app.quit();
|
||||||
if (process.platform !== 'darwin') {
|
|
||||||
app.quit();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// remove so we can register each time as we run the app.
|
// remove so we can register each time as we run the app.
|
||||||
|
|
|
@ -39,11 +39,18 @@
|
||||||
"hardenedRuntime": true,
|
"hardenedRuntime": true,
|
||||||
"entitlements": "entitlements.mac.plist",
|
"entitlements": "entitlements.mac.plist",
|
||||||
"entitlementsInherit": "entitlements.mac.plist",
|
"entitlementsInherit": "entitlements.mac.plist",
|
||||||
|
"asarUnpack": "**/*.node",
|
||||||
"extendInfo": {
|
"extendInfo": {
|
||||||
"NSCameraUsageDescription": "Jitsi Meet requires access to your camera in order to make video-calls.",
|
"NSCameraUsageDescription": "Jitsi Meet requires access to your camera in order to make video-calls.",
|
||||||
"NSMicrophoneUsageDescription": "Jitsi Meet requires access to your microphone in order to make calls (audio/video)."
|
"NSMicrophoneUsageDescription": "Jitsi Meet requires access to your microphone in order to make calls (audio/video).",
|
||||||
|
"LSMultipleInstancesProhibited": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"mas": {
|
||||||
|
"entitlements": "resources/entitlements.mas.plist",
|
||||||
|
"entitlementsInherit": "resources/entitlements.mas.inherit.plist",
|
||||||
|
"hardenedRuntime": false
|
||||||
|
},
|
||||||
"linux": {
|
"linux": {
|
||||||
"artifactName": "jitsi-meet-${arch}.${ext}",
|
"artifactName": "jitsi-meet-${arch}.${ext}",
|
||||||
"category": "VideoConference;AudioVideo;Audio;Video;Network",
|
"category": "VideoConference;AudioVideo;Audio;Video;Network",
|
||||||
|
|
10
resources/entitlements.mas.inherit.plist
Normal file
10
resources/entitlements.mas.inherit.plist
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?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.app-sandbox</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.inherit</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
16
resources/entitlements.mas.plist
Normal file
16
resources/entitlements.mas.plist
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?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.app-sandbox</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.network.client</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.device.camera</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.device.audio-input</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.device.microphone</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
Loading…
Reference in a new issue