Merge pull request #4198 from h3poteto/mas/packager

Fix build process for mac and mas
This commit is contained in:
AkiraFukushima 2023-03-16 09:34:31 +09:00 committed by GitHub
commit 0b1bdda5d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 202 additions and 477 deletions

View File

@ -21,8 +21,8 @@ if (process.env.BUILD_TARGET === 'clean') clean()
else build()
function clean() {
del.sync(['build/*', '!build/icons', '!build/icons/icon.*', '!build/sounds', '!build/sounds/*'])
del.sync(['packages/*'])
del.sync(['build/*', '!build/icons', '!build/icons/icon.*', '!build/sounds', '!build/sounds/*', '!build/notarize.js'])
del.sync(['packages/*', '!packages/universal.js', '!packages/packager.js', "!packages/socialwhalebirdapp_MAS.provisionprofile"])
console.log(`\n${doneLog}\n`)
process.exit()
}

View File

@ -20,7 +20,6 @@ mac:
mas:
yarn run build:clean
yarn run package:mas
./appStore.sh
linux:
yarn run package:linux

View File

@ -1,43 +0,0 @@
#!/bin/zsh -f
# Name of your app.
APP="Whalebird"
# The path of your app to sign.
APP_PATH="./build/mas-universal/Whalebird.app"
# The path to the location you want to put the signed package.
RESULT_PATH="./packages/$APP.pkg"
# The name of certificates you requested.
APP_KEY="3rd Party Mac Developer Application: Akira Fukushima (HB4N6B2YVM)"
INSTALLER_KEY="3rd Party Mac Developer Installer: Akira Fukushima (HB4N6B2YVM)"
# The path of your plist files.
CHILD_PLIST="./plist/child.plist"
PARENT_PLIST="./plist/parent.plist"
LOGINHELPER_PLIST="./plist/loginhelper.plist"
FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libvk_swiftshader.dylib"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (GPU).app/Contents/MacOS/$APP Helper (GPU)"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (GPU).app/"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Plugin).app/Contents/MacOS/$APP Helper (Plugin)"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Plugin).app/"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Renderer).app/Contents/MacOS/$APP Helper (Renderer)"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Renderer).app/"
codesign -s "$APP_KEY" -f --entitlements "$LOGINHELPER_PLIST" "$APP_PATH/Contents/Library/LoginItems/$APP Login Helper.app/Contents/MacOS/$APP Login Helper"
codesign -s "$APP_KEY" -f --entitlements "$LOGINHELPER_PLIST" "$APP_PATH/Contents/Library/LoginItems/$APP Login Helper.app/"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/MacOS/$APP"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/Resources/app.asar.unpacked/node_modules/sqlite3/lib/binding/napi-v6-darwin-unknown-x64/node_sqlite3.node"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/Resources/app.asar.unpacked/node_modules/sqlite3/lib/binding/napi-v{napi_build_version}-darwin-unknown-x64/node_sqlite3.node"
codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/Resources/app.asar.unpacked/node_modules/sqlite3/lib/binding/napi-v{napi_build_version}-darwin-unknown-arm64/node_sqlite3.node"
codesign -s "$APP_KEY" -f --entitlements "$PARENT_PLIST" "$APP_PATH"
productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH"

20
build/notarize.js Normal file
View File

@ -0,0 +1,20 @@
const { notarize } = require('@electron/notarize')
exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context
if (electronPlatformName !== 'darwin') {
return
}
const appName = context.packager.appInfo.productFilename
return await notarize({
tool: 'notarytool',
appBundleId: 'social.whalebird.app',
ascProvider: process.env.ASC_PROVIDER,
appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD,
teamId: process.env.TEAM_ID
})
}

View File

@ -11,9 +11,9 @@
],
"files": [
"dist/electron/**/*",
"build/icons/*",
"!node_modules/**/*.{mk,a,o,h,forge-meta}"
"build/icons/*"
],
"afterSign": "build/notarize.js",
"dmg": {
"sign": false,
"contents": [
@ -52,10 +52,8 @@
"extendInfo": {
"ITSAppUsesNonExemptEncryption": "false"
},
"notarize": {
"teamId": "HB4N6B2YVM"
},
"singleArchFiles": "*"
"mergeASARs": false,
"asarUnpack": "node_modules/**/*.node"
},
"win": {
"icon": "build/icons/icon.ico",

View File

@ -2,7 +2,7 @@
"productName": "Whalebird",
"appId": "social.whalebird.app",
"artifactName": "${productName}-${version}-${os}-${arch}.${ext}",
"buildVersion": "154",
"buildVersion": "161",
"directories": {
"output": "build"
},
@ -12,8 +12,7 @@
],
"files": [
"dist/electron/**/*",
"build/icons/*",
"!node_modules/**/*.{mk,a,o,h,forge-meta}"
"build/icons/*"
],
"mas": {
"type": "distribution",
@ -24,7 +23,8 @@
"gatekeeperAssess": false,
"extendInfo": {
"ITSAppUsesNonExemptEncryption": "false"
}
},
"provisioningProfile": "./packages/socialwhalebirdapp_MAS.provisionprofile"
},
"mac": {
"icon": "build/icons/icon.icns",
@ -43,7 +43,7 @@
"extendInfo": {
"ITSAppUsesNonExemptEncryption": "false"
},
"notarize": false,
"singleArchFiles": "*"
"mergeASARs": false,
"asarUnpack": "node_modules/**/*.node"
}
}

View File

@ -1,6 +1,6 @@
{
"name": "Whalebird",
"version": "5.0.1",
"version": "5.0.2",
"author": "AkiraFukushima <h3.poteto@gmail.com>",
"description": "An Electron based Mastodon client for Windows, Mac and Linux",
"license": "MIT",
@ -30,7 +30,7 @@
"package:win32": "electron-builder --win --ia32 --publish never --config electron-builder.json",
"package:win64": "electron-builder --win --x64 --publish never --config electron-builder.json",
"package:pacman": "electron-builder --linux pacman --publish never --config electron-builder.json",
"package:appx2": "electron-builder --win --x64 --config electron-builder.json && electron-windows-store --assets .\\build\\icons --input-directory .\\build\\win-unpacked --output-directory .\\build\\appx --package-name Whalebird --package-display-name Whalebird --package-version 5.0.1.1 --publisher-display-name h3poteto --identity-name 45610h3poteto.Whalebird",
"package:appx2": "electron-builder --win --x64 --config electron-builder.json && electron-windows-store --assets .\\build\\icons --input-directory .\\build\\win-unpacked --output-directory .\\build\\appx --package-name Whalebird --package-display-name Whalebird --package-version 5.0.2.0 --publisher-display-name h3poteto --identity-name 45610h3poteto.Whalebird",
"pack": "yarn run pack:main && yarn run pack:renderer",
"pack:main": "webpack --node-env=production --mode production --progress --config .electron-vue/webpack.main.config.js",
"pack:renderer": "webpack --node-env=production --mode production --progress --config .electron-vue/webpack.renderer.config.js",
@ -121,6 +121,7 @@
"@babel/preset-env": "^7.20.2",
"@babel/register": "^7.21.0",
"@babel/runtime": "7.21.0",
"@electron/notarize": "^1.2.3",
"@types/auto-launch": "^5.0.2",
"@types/better-sqlite3": "^7.6.3",
"@types/electron-json-storage": "^4.5.0",
@ -151,7 +152,7 @@
"del": "^6.1.1",
"devtron": "^1.4.0",
"electron": "20.3.12",
"electron-builder": "24.0.0",
"electron-builder": "23.6.0",
"electron-debug": "^3.2.0",
"electron-devtools-installer": "^3.2.0",
"electron-mock-ipc": "^0.3.12",

View File

@ -4,8 +4,6 @@
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<string>HB4N6B2YVM.social.whalebird.app</string>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.network.client</key>

580
yarn.lock

File diff suppressed because it is too large Load Diff