Skip to content

Instantly share code, notes, and snippets.

@mkscrg

mkscrg/README.md Secret

Last active March 30, 2016 20:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mkscrg/a6f85dba729be431748b to your computer and use it in GitHub Desktop.
Save mkscrg/a6f85dba729be431748b to your computer and use it in GitHub Desktop.

(RESOLVED) Electron code signing issue

On a machine running OSX 10.11.4:

  • Edit compile to set your signing cert identity
  • Run ./compile, confirm that codesign --verify passes

Move the packaged .app to a machine running OSX 10.11.3 or lower:

  • Run codesign --verify 'Codesign Test.app', confirm breakage:

    .../Codesign Test.app/: invalid signature (code or signature have been modified)
    In subcomponent: .../Codesign Test.app/Contents/Frameworks/Codesign Test Helper EH.app
    
#!/usr/bin/env bash
set -ex
# attempts
# - node 4.2.2 ep 5.2.1 manual signing NO cs-v
# - node 4.2.2 ep 5.2.1 manual "deep" signing NO cs-v
# - node 5.9.1 ep 6.0.0 --osx-sign YES cs-v
# - node 5.9.1 ep 6.0.0 e-o-s 0.3.0 YES cs-v
# - node 4.2.2 ep 6.0.0 e-o-s 0.3.0 YES cs-v
# - node 4.2.2 ep 5.2.1 e-o-s 0.3.0 NO cs-v
# - node 4.2.2 ep 6.0.0 manual signing YES cs-v
app_name='Codesign Test'
dist_dir="dist/${app_name}-darwin-x64"
npm install
rm -rf dist
./node_modules/.bin/electron-packager . "$app_name" \
--platform=darwin \
--arch=x64 \
--version=0.37.3 \
--out=dist \
--overwrite
# set your own cert identity @ --sign
# (you can use Certificate Assistant (via Keychain Access) to create a self-signed cert)
codesign --deep --force \
--sign 'mkscrg Electron Codesign Test' \
"$dist_dir/$app_name.app"
codesign -vvvv --verify "$dist_dir/$app_name.app"
( cd "$dist_dir"; zip -r --symlinks "../$app_name.zip" "$app_name.app"; )
<!DOCTYPE html>
<html lang="en">
<body>
<h1>Codesign Test</h1>
</body>
</html>
var app = require('app');
var BrowserWindow = require('browser-window');
var path = require('path');
app.on('ready', function() {
var mainWindow = new BrowserWindow({
width: 800,
height: 600,
title: 'Codesign Test',
show: true
});
mainWindow.loadUrl(path.join('file://', __dirname, 'index.html'));
});
{
"name": "electron-sign-test",
"version": "1.0.0",
"main": "main.js",
"dependencies": {
"electron-packager": "6.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment