Sign And Notarize ElectronJS App – Generate One Time Password
This article will discuss how to notarize an ElectronJS I will add to this article it is mainly for me.
First login to you apple members account and create your app identifier.
https://developer.apple.com/account/resources/identifiers/list
You will be using this in your notarize.js file and package.json
You also need to generate a APP-SPECIFIC PASSWORD in your account and add this to a .env file in the root of your project.
Generate your APP-SPECIFIC PASSWORD here.
https://appleid.apple.com/account/manage
You .env file will look like this.
APPLEID=mail@example.co.uk APPLEIDPASS=ihmk-0000-zagl-0000
You can then update you package.json build section like this.
"build": { "appId": "com.example.test", "afterSign": "notarize.js", "dmg": { "sign": true }, "mac": { "hardenedRuntime": true, "gatekeeperAssess": false, "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.plist", "icon": "build/icon.png", "category": "public.app-category.video" }, "files": [ "!notarize.js", "!.env" ] },
Now you want to add this code to your notarize.js file.
require('dotenv').config(); 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({ appBundleId: 'com.example.test', appPath: `${appOutDir}/${appName}.app`, appleId: process.env.APPLEID, appleIdPassword: process.env.APPLEIDPASS, ascProvider: '0000000000', }); };
Hopefully now your app should sign successfully.