Skip to content

Commit 926b72e

Browse files
committed
Merge pull request electron#214 from electron/mas
Mac App Store build
2 parents 9cf8dad + f050bb1 commit 926b72e

File tree

7 files changed

+70
-1
lines changed

7 files changed

+70
-1
lines changed

assets/mac/child.plist

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>com.apple.security.app-sandbox</key>
6+
<true/>
7+
<key>com.apple.security.inherit</key>
8+
<true/>
9+
</dict>
10+
</plist>

assets/mac/info.plist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@
1313
<string>Electron API Demos Protocol</string>
1414
</dict>
1515
</array>
16+
<key>ElectronTeamID</key>
17+
<string>VEKTX9H2N7</string>
1618
</dict>
1719
</plist>

assets/mac/parent.plist

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>com.apple.security.app-sandbox</key>
6+
<true/>
7+
<key>com.apple.security.application-groups</key>
8+
<string>VEKTX9H2N7.com.github.electron-api-demos</string>
9+
</dict>
10+
</plist>

auto-updater.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const path = require('path')
77
var state = 'checking'
88

99
exports.initialize = function () {
10+
if (process.mas) return
11+
1012
autoUpdater.on('checking-for-update', function () {
1113
state = 'checking'
1214
exports.updateMenu()
@@ -37,6 +39,8 @@ exports.initialize = function () {
3739
}
3840

3941
exports.updateMenu = function () {
42+
if (process.mas) return
43+
4044
var menu = Menu.getApplicationMenu()
4145
if (!menu) return
4246

main.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ function initialize () {
6767
// Returns true if the current version of the app should quit instead of
6868
// launching.
6969
function makeSingleInstance () {
70+
if (process.mas) return false
71+
7072
return app.makeSingleInstance(function () {
7173
if (mainWindow) {
7274
if (mainWindow.isMinimized()) mainWindow.restore()

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"package": "npm run pack-mac && npm run pack-win && npm run pack-linux",
1919
"installer": "node ./script/installer.js",
2020
"windows-store": "node ./script/windows-store.js",
21+
"mas": "./script/mas.sh",
2122
"prepare-release": "npm run package && npm run sign-exe && npm run installer && npm run sign-installer",
2223
"release": "node ./script/release.js"
2324
},
@@ -41,7 +42,7 @@
4142
"chai-as-promised": "^5.1.0",
4243
"devtron": "^1.0.0",
4344
"electron-packager": "^7.0.1",
44-
"electron-prebuilt": "~1.0.2",
45+
"electron-prebuilt": "~1.1.3",
4546
"electron-windows-store": "^0.3.0",
4647
"electron-winstaller": "^2.2.0",
4748
"mocha": "^2.3.4",

script/mas.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/bash
2+
3+
set -ex
4+
5+
electron-packager . \
6+
--asar \
7+
--overwrite \
8+
--platform=mas \
9+
--app-bundle-id=com.github.electron-api-demos \
10+
--app-version="$npm_package_version" \
11+
--arch=x64 \
12+
--icon=assets/app-icon/mac/app.icns \
13+
--prune=true \
14+
--out=out \
15+
--extend-info=assets/mac/info.plist
16+
17+
APP="$npm_package_productName"
18+
APP_PATH="./out/$APP-mas-x64/$APP.app"
19+
RESULT_PATH="./out/$APP.pkg"
20+
APP_KEY="3rd Party Mac Developer Application: GitHub (VEKTX9H2N7)"
21+
INSTALLER_KEY="3rd Party Mac Developer Installer: GitHub (VEKTX9H2N7)"
22+
FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks"
23+
CHILD_PLIST="./assets/mac/child.plist"
24+
PARENT_PLIST="./assets/mac/parent.plist"
25+
26+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework"
27+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib"
28+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib"
29+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework"
30+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper"
31+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/"
32+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper EH.app/Contents/MacOS/$APP Helper EH"
33+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper EH.app/"
34+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper NP.app/Contents/MacOS/$APP Helper NP"
35+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper NP.app/"
36+
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/MacOS/$APP"
37+
38+
codesign -s "$APP_KEY" -f --entitlements "$PARENT_PLIST" "$APP_PATH"
39+
40+
productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH"

0 commit comments

Comments
 (0)