A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/electron/osx-sign below:

electron/osx-sign: Codesign Electron macOS apps

Codesign Electron macOS apps

@electron/osx-sign minimizes the extra work needed to eventually prepare your apps for shipping, providing options that work out of the box for most applications. Additional configuration is available via its API.

There are two main functionalities exposed via this package:

@electron/osx-sign is integrated into other Electron packaging tools, and can be configured accordingly:

You can also install @electron/osx-sign separately if your packaging pipeline does not involve those tools:

npm install --save-dev @electron/osx-sign

The signing procedure implemented in this package is based on what described in Electron's Code Signing Guide.

In order to distribute your application either inside or outside the Mac App Store, you will have to have the following certificates from Apple after becoming a registered developer.

Certificates can be created through the Certificates, Identities & Profiles page in the Apple Developer website or via Account Preferences in Xcode.

For distribution inside the Mac App Store, you will need to create:

For distribution outside the Mac App Store:

After you create the necessary certifications, download them and open each so that they are installed in your keychain. We recommend installing them in your system default keychain so that @electron/osx-sign can detect them automatically.

Tip

Apple developer certificates tend to come in related pairs. It’s simplest to install both of them for future use. However, if you only want to distribute outside the Mac App Store, there is no need to have the 3rd Party Mac Developer ones installed, and vice versa.

import { sign } = from '@electron/osx-sign'
const opts = {
  app: 'path/to/my.app'
};
sign(opts)
  .then(function () {
    // Application signed
  })
  .catch(function (err) {
    // Handle the error
  })

The only mandatory option for sign is a path to your .app package. Configuration for most Electron apps should work out of the box. For full configuration options, see the [API documentation].

Signing for Mac App Store distribution
import { sign } from '@electron/osx-sign'
const opts = {
  app: 'path/to/my.app',
  // optional parameters for additional customization
  platform: "mas", // should be auto-detected if your app was packaged for MAS via Packager or Forge
  type: "distribution", // defaults to "distribution" for submission to App Store Connect
  provisioningProfile: 'path/to/my.provisionprofile', // defaults to the current working directory
  keychain: 'my-keychain', // defaults to the system default login keychain
};
sign(opts)
  .then(function () {
    // Application signed
  })
  .catch(function (err) {
    // Handle the error
  })

Mac App Store apps require a Provisioning Profile for submission to App Store Connect. We recommend having the provisioning profile for distribution placed in the current working directory and the signing identity installed in the default keychain.

The app is not expected to run after codesigning since there is no provisioned device, and it is intended only for submission to App Store Connect. Since @electron/osx-sign adds the entry com.apple.developer.team-identifier to a temporary copy of the specified entitlements file (with the default option preAutoEntitlements), distribution builds can no longer be run directly.

To run an app codesigned for distribution locally after codesigning, you may manually add ElectronTeamID in your Info.plist and com.apple.security.application-groups in the entitlements file, and set preAutoEntitlements: false for @electron/osx-sign to avoid this extra bit. Note that "certain features are only allowed across apps whose team-identifier value match" (Technical Note TN2415).

Alternatively, set the app's type to development to codesign a development version of your app, which will allow it to be run on your development provisioned machine. Apps signed for development will not be eligible for submission via App Store Connect.

Some subresources that you may include in your Electron app may need to be signed with --deep. This is not typically safe to apply to the entire Electron app and therefore should be applied to just your file.

sign({
  app: 'path/to/my.app',
  optionsForFile: (filePath) => {
    // For our one specific file we can pass extra options to be merged
    // with the default options
    if (path.basename(filePath) === 'myStrangeFile.jar') {
      return {
        additionalArguments: ['--deep'],
      };
    }

    // Just use the default options for everything else
    return null;
  },
});
Signing legacy versions of Electron

@electron/osx-sign maintains backwards compatibility with older versions of Electron, but generally assumes that you are on the latest stable version.

If you are running an older unsupported version of Electron, you should pass in the version option as such:

sign({
  app: 'path/to/my.app',
  version: '0.34.0',
});

This module also handles the creation of flat installer packages (.pkg installers).

Note

Modern .pkg installers are also named "flat" packages for historical purposes. Prior to Mac OS X Leopard (10.5), installation packages were organized in hierarchical directories. OS X Leopard introduced a new flat package format that is used for modern .pkg installers.

import { flat } = '@electron/osx-sign'
flat({
  app: 'path/to/my.app'
})
  .then(function () {
    // Application flattened
  })
  .catch(function (err) {
    // Handle the error
  })

The only mandatory option for flat is a path to your .app package. For full configuration options, see the [API documentation].

@electron/osx-sign also exposes a legacy command-line interface (CLI) for both signing and installer generation. However, we recommend using the JavaScript API as it has a more complete API surface (e.g. optionsForFile is only available via JS).

# install the package locally into devDependencies
npm install --save-dev @electron/osx-sign

# Sign a packaged .app bundle
npx electron-osx-sign path/to/my.app [options ...]

# Create a .pkg installer from a packaged .app bundle
npx electron-osx-flat path/to/my.app [options ...]

For full options, use the --help flag for either command.

The debug module is used to display advanced logs and messages. If you are having problems with signing your app with @electron/osx-sign, run your signing scripts with the DEBUG=electron-osx-sign* environment variable.

The project's configured to run automated tests on GitHub Actions.

If you wish to manually test the module, you need to first generate a self-signed certificate via the spec/ci/generate-identity.sh script.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4