What is electron-osx-sign?
The electron-osx-sign package is used to sign and verify macOS applications built with Electron. It ensures that your application is properly signed with a valid Apple Developer ID, which is necessary for distribution and to avoid security warnings.
What are electron-osx-sign's main functionalities?
Code Signing
This feature allows you to sign your macOS application with a valid Apple Developer ID. The code sample demonstrates how to use the `sign` function to sign an application located at 'path/to/your/app' with the specified identity.
const sign = require('electron-osx-sign').sign;
sign({
app: 'path/to/your/app',
identity: 'Developer ID Application: Your Name (XXXXXXXXXX)'
}, function done (err) {
if (err) {
console.error('Error during signing:', err);
} else {
console.log('Application signed successfully');
}
});
Verification
This feature allows you to verify that your macOS application has been correctly signed. The code sample demonstrates how to use the `verify` function to check the signature of an application located at 'path/to/your/app'.
const verify = require('electron-osx-sign').verify;
verify({
app: 'path/to/your/app'
}, function done (err, result) {
if (err) {
console.error('Error during verification:', err);
} else {
console.log('Verification result:', result);
}
});
Entitlements
This feature allows you to sign your macOS application with specific entitlements. The code sample demonstrates how to use the `sign` function to sign an application with entitlements specified in 'path/to/entitlements.plist'.
const sign = require('electron-osx-sign').sign;
sign({
app: 'path/to/your/app',
identity: 'Developer ID Application: Your Name (XXXXXXXXXX)',
entitlements: 'path/to/entitlements.plist'
}, function done (err) {
if (err) {
console.error('Error during signing with entitlements:', err);
} else {
console.log('Application signed successfully with entitlements');
}
});
Other packages similar to electron-osx-sign
electron-builder
electron-builder is a complete solution to package and build a ready-for-distribution Electron app for macOS, Windows, and Linux. It includes features for code signing, auto-updates, and more. Compared to electron-osx-sign, electron-builder offers a broader range of functionalities beyond just signing macOS applications.
appdmg
appdmg is a tool for creating DMG images for macOS applications. While it does not handle code signing directly, it is often used in conjunction with tools like electron-osx-sign to package signed applications into DMG files for distribution. It complements electron-osx-sign by focusing on the packaging aspect.
electron-osx-sign
Code-signing for Electron-packed OS X apps.
Please visit our Wiki hosted here on GitHub for walk-throughs and notes from past projects shipped with electron-packager
and electron-osx-sign
.
Note: The signing procedure implemented in this package is based on what described in Mac App Store Submission Guide.
Installation
npm install electron-osx-sign --save
npm install electron-osx-sign -g
Note: electron-osx-sign
will become a dependency of electron-packager
in a later release for signing apps on OS X. However, please install this package globally for more customization beyond specifying identity and entitlements.
Usage
electron-osx-sign
From the Command Line
electron-osx-sign <app> [additional-binaries...] [--options...]
Example:
electron-osx-sign path/to/my.app
For details on the optional flags, run electron-osx-sign --help
or see electron-osx-sign-usage.txt.
From the API
var sign = require('electron-osx-sign')
sign(opts[, function done (err) {}])
Example:
sign(opts, callback)
var sign = require('electron-osx-sign')
sign({
app: 'path/to/my.app'
}, function done (err) {
if (err) {
return;
}
})
opts
Required
app
- String
Path to the application package.
Needs file extension .app
.
Optional
binaries
- Array
Path to additional binaries that will be signed along with built-ins of Electron.
Default to null
.
entitlements
- String
Path to entitlements file for signing Mac App Store application.
See mas.default.entitlements for default.
entitlements-inherit
- String
Path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. This option only applies when signing with entitlements
provided, or for a mas
platform version.
See mas.inherit.default.entitlements for default.
identity
- String
Name of certificate to use when signing.
Default to retrieve from login.keychain
.
Signing platform mas
will look for 3rd Party Mac Developer Application: * <*>
, and platform darwin
will look for Developer ID Application: * <*>
by default.
platform
- String
Build platform of Electron.
Allowed values: darwin
, mas
.
Default to auto detect from presence of Squirrel.framework
within the application package.
verbose
- Boolean
Verbose flag, to display logs.
Allowed values: true
, false
.
callback
err
- Error
electron-osx-flat
From the Command Line
electron-osx-flat <app> [--options...]
Example:
electron-osx-flat path/to/my.app
For details on the optional flags, run electron-osx-flat --help
or see electron-osx-flat-usage.txt.
From the API
flat(opts, callback)
var flat = require('electron-osx-sign').flat
flat(opts[, function done (err) {}])
Example:
var flat = require('electron-osx-sign').flat
flat({
app: 'path/to/my.app'
}, function done (err) {
if (err) {
return;
}
})
opts
Required
app
- String
Path to the application package.
Needs file extension .app
.
Optional
identity
- String
Name of certificate to use when flattening.
Default to retrieve from login.keychain
.
install
- String
Path to install for the bundle.
Default to /Applications
.
platform
- String
Build platform of Electron. Allowed values: darwin
, mas
.
Default to auto detect from application.
pkg
- String
Path to the output flattened package.
Needs file extension .pkg
.
verbose
- String
Verbose flag, to display logs.
callback
err
- Error
Test
As developer certificates are required for codesign
in OS X, this module may not be tested via online build services. If you wish to test out this module, enter:
npm test
from the dev directory, and tell us if all tests should pass.
When this command is fun for the first time: electron-download
will download all major releases of Electron available for OS X from 0.24.0, and save to ~/.electron/
, which might take up less than 1GB of disk space.
A successful testing should look something like:
$ npm test
> electron-osx-sign@0.3.0-beta test electron-osx-sign
> standard && tape test
Calling electron-download before running tests...
Running tests...
TAP version 13
# setup
# defaults-test:v0.24.0-darwin-x64
ok 1 app signed
ok 2 app flattened
# defaults-test:v0.25.0-darwin-x64
ok 3 app signed
ok 4 app flattened
# defaults-test:v0.26.0-darwin-x64
ok 5 app signed
ok 6 app flattened
# defaults-test:v0.27.0-darwin-x64
ok 7 app signed
ok 8 app flattened
# defaults-test:v0.28.0-darwin-x64
ok 9 app signed
ok 10 app flattened
# defaults-test:v0.29.0-darwin-x64
ok 11 app signed
ok 12 app flattened
# defaults-test:v0.30.0-darwin-x64
ok 13 app signed
ok 14 app flattened
# defaults-test:v0.31.0-darwin-x64
ok 15 app signed
ok 16 app flattened
# defaults-test:v0.32.0-darwin-x64
ok 17 app signed
ok 18 app flattened
# defaults-test:v0.33.0-darwin-x64
ok 19 app signed
ok 20 app flattened
# defaults-test:v0.34.0-darwin-x64
ok 21 app signed
ok 22 app flattened
# defaults-test:v0.34.0-mas-x64
ok 23 app signed
ok 24 app flattened
# defaults-test:v0.35.0-darwin-x64
ok 25 app signed
ok 26 app flattened
# defaults-test:v0.35.0-mas-x64
ok 27 app signed
ok 28 app flattened
# defaults-test:v0.36.0-darwin-x64
ok 29 app signed
ok 30 app flattened
# defaults-test:v0.36.0-mas-x64
ok 31 app signed
ok 32 app flattened
# teardown
1..32
# tests 32
# pass 32
# ok
Collaborators
Thanks to seanchas116, and jasonhinkle for improving the usability of this project implementation.
Related
- electron-packager - package your electron app in OS executables (.app, .exe, etc) via JS or CLI