From 18f3a9320d780aab43accecda16f26a12b6bde48 Mon Sep 17 00:00:00 2001 From: Quang Lam Date: Sun, 27 Dec 2020 19:49:42 +0700 Subject: [PATCH 1/2] x --- .github/workflows/macos.yml | 2 - .../entitlements.mac.inherit.plist | 18 ------- build-resources/entitlements.mac.plist | 18 ------- dist.js | 51 +------------------ package.json | 1 - yarn.lock | 8 --- 6 files changed, 1 insertion(+), 97 deletions(-) delete mode 100644 build-resources/entitlements.mac.inherit.plist delete mode 100644 build-resources/entitlements.mac.plist diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index e9411e16..d1b5150e 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -47,8 +47,6 @@ jobs: env: CI: true CI_PULL_REQUEST: ${{ github.event_name == 'pull_request' }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} CSC_LINK: ${{ secrets.CSC_LINK }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/build-resources/entitlements.mac.inherit.plist b/build-resources/entitlements.mac.inherit.plist deleted file mode 100644 index 733a7b2f..00000000 --- a/build-resources/entitlements.mac.inherit.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - com.apple.security.network.client - - com.apple.security.files.user-selected.read-only - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.allow-dyld-environment-variables - - com.apple.security.cs.disable-library-validation - - - \ No newline at end of file diff --git a/build-resources/entitlements.mac.plist b/build-resources/entitlements.mac.plist deleted file mode 100644 index 733a7b2f..00000000 --- a/build-resources/entitlements.mac.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - com.apple.security.network.client - - com.apple.security.files.user-selected.read-only - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.allow-dyld-environment-variables - - com.apple.security.cs.disable-library-validation - - - \ No newline at end of file diff --git a/dist.js b/dist.js index 3b92e51c..70cf7c4a 100644 --- a/dist.js +++ b/dist.js @@ -8,39 +8,13 @@ const fs = require('fs-extra'); const builder = require('electron-builder'); const glob = require('glob'); const del = require('del'); -const { notarize } = require('electron-notarize'); const semver = require('semver'); -const { exec, spawn } = require('child_process'); +const { spawn } = require('child_process'); const { getSignVendorPath } = require('app-builder-lib/out/codeSign/windowsCodeSign'); const packageJson = require('./package.json'); const displayLanguages = require('./public/libs/locales/languages'); -// sometimes, notarization works but *.app does not have a ticket stapled to it -// this ensure the *.app has the notarization ticket -const verifyNotarizationAsync = (filePath) => new Promise((resolve, reject) => { - // eslint-disable-next-line no-console - console.log(`xcrun stapler validate ${filePath.replace(/ /g, '\\ ')}`); - - exec(`xcrun stapler validate ${filePath.replace(/ /g, '\\ ')}`, (e, stdout, stderr) => { - if (e instanceof Error) { - reject(e); - return; - } - - if (stderr) { - reject(new Error(stderr)); - return; - } - - if (stdout.indexOf('The validate action worked!') > -1) { - resolve(stdout); - } else { - reject(new Error(stdout)); - } - }); -}); - // https://stackoverflow.com/a/17466459 const runCmd = (cmd, args, callBack) => { const child = spawn(cmd, args); @@ -174,29 +148,6 @@ const opts = { resolve(); } }), - afterSign: (context) => { - // Only notarize app when forced in pull requests or when releasing using tag - const shouldNotarize = process.platform === 'darwin' && context.electronPlatformName === 'darwin' && process.env.CI_BUILD_TAG; - if (!shouldNotarize) return null; - - console.log('Notarizing app...'); - // https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/ - const { appOutDir } = context; - - const appName = context.packager.appInfo.productFilename; - const appPath = `${appOutDir}/${appName}.app`; - return notarize({ - appBundleId: 'com.moderntranslator.app', - appPath, - appleId: process.env.APPLE_ID, - appleIdPassword: process.env.APPLE_ID_PASSWORD, - }) - .then(() => verifyNotarizationAsync(appPath)) - .then((notarizedInfo) => { - // eslint-disable-next-line no-console - console.log(notarizedInfo); - }); - }, }, }; diff --git a/package.json b/package.json index 1e2f6205..b4564177 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "dotenv": "8.2.0", "electron": "11.1.1", "electron-builder": "22.10.4", - "electron-notarize": "1.0.0", "eslint": "6.8.0", "eslint-config-airbnb": "18.2.1", "eslint-plugin-header": "3.1.0", diff --git a/yarn.lock b/yarn.lock index f1e9057b..000a1721 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5436,14 +5436,6 @@ electron-is-dev@1.2.0: resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw== -electron-notarize@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.0.0.tgz#bc925b1ccc3f79e58e029e8c4706572b01a9fd8f" - integrity sha512-dsib1IAquMn0onCrNMJ6gtEIZn/azG8hZMCYOuZIMVMUeRMgBYHK1s5TK9P8xAcrAjh/2aN5WYHzgVSWX314og== - dependencies: - debug "^4.1.1" - fs-extra "^9.0.1" - electron-positioner@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/electron-positioner/-/electron-positioner-4.1.0.tgz#e158f8f6aabd6725a8a9b4f2279b9504bcbea1b0" From 63ae64bfa46bab1d9e2844531c52b73ed48aca99 Mon Sep 17 00:00:00 2001 From: Quang Lam Date: Sun, 27 Dec 2020 23:44:01 +0700 Subject: [PATCH 2/2] x --- .../embedded-development.provisionprofile | Bin 0 -> 7658 bytes dist.js | 12 ++++++++---- package.json | 2 +- public/preload/shared.js | 1 + src/helpers/take-screenshot-to-blob-async.js | 5 ++--- 5 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 build-resources/embedded-development.provisionprofile diff --git a/build-resources/embedded-development.provisionprofile b/build-resources/embedded-development.provisionprofile new file mode 100644 index 0000000000000000000000000000000000000000..cb324a5e6eec0d750a7d61d98560e9c3ba48db93 GIT binary patch literal 7658 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 literal 0 HcmV?d00001 diff --git a/dist.js b/dist.js index 70cf7c4a..19222415 100644 --- a/dist.js +++ b/dist.js @@ -33,8 +33,8 @@ const appVersion = fs.readJSONSync(path.join(__dirname, 'package.json')).version let targets; switch (process.platform) { case 'darwin': { - targets = Platform.MAC.createTarget(['mas'], Arch.universal); - // targets = Platform.MAC.createTarget(['mas-dev'], Arch.universal); + // targets = Platform.MAC.createTarget(['mas'], Arch.universal); + targets = Platform.MAC.createTarget([process.env.FORCE_DEV ? 'mas-dev' : 'mas'], Arch.universal); break; } case 'win32': { @@ -51,6 +51,9 @@ switch (process.platform) { const opts = { targets, config: { + asarUnpack: [ + 'node_modules/node-mac-permissions/build', + ], appId: 'com.moderntranslator.app', // Backward compatibility // https://github.com/electron-userland/electron-builder/issues/3730 buildVersion: process.platform === 'darwin' ? appVersion : undefined, @@ -83,8 +86,9 @@ const opts = { }, mas: { category: 'public.app-category.productivity', - provisioningProfile: 'build-resources/embedded.provisionprofile', - // provisioningProfile: 'build-resources/embedded-development.provisionprofile', # mas-dev + provisioningProfile: process.env.FORCE_DEV + ? 'build-resources/embedded-development.provisionprofile' // mas-dev + : 'build-resources/embedded.provisionprofile', darkModeSupport: true, }, linux: { diff --git a/package.json b/package.json index b4564177..9a3808fb 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test-ui": "react-scripts test --env=jsdom", "eject": "react-scripts eject", "dist": "yarn run build && babel-node dist.js", - "dist-dev": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=false yarn dist", + "dist-dev": "cross-env FORCE_DEV=1 yarn dist", "lint": "eslint ./src ./public ./*.js ./test --ext js", "test": "mocha" }, diff --git a/public/preload/shared.js b/public/preload/shared.js index b895cb1f..a99656b5 100644 --- a/public/preload/shared.js +++ b/public/preload/shared.js @@ -23,3 +23,4 @@ window.ipcRenderer = ipcRenderer; window.desktopCapturer = desktopCapturer; window.machineId = machineId.machineIdSync(); +window.macPermissions = process.platform === 'darwin' ? require('node-mac-permissions') : null; diff --git a/src/helpers/take-screenshot-to-blob-async.js b/src/helpers/take-screenshot-to-blob-async.js index 3f7c0565..2d05250d 100644 --- a/src/helpers/take-screenshot-to-blob-async.js +++ b/src/helpers/take-screenshot-to-blob-async.js @@ -7,10 +7,9 @@ const takeScreenshotToBlob = () => { // shell.openExternal('x-apple.systempreferences...') is not sufficient as it doesn't ensure // the app is added to app list in system pref if (window.process.platform === 'darwin') { - const permissions = window.remote.require('node-mac-permissions'); - const authStatus = permissions.getAuthStatus('screen'); + const authStatus = window.macPermissions.getAuthStatus('screen'); if (authStatus === 'denied' || authStatus === 'restricted') { - permissions.askForScreenCaptureAccess(); + window.macPermissions.askForScreenCaptureAccess(); return Promise.resolve(); } }