はじめまして。
Mac の Electron アプリに Go で作ったhttpサーバーをインクルードしたものを作りました。
それ自体は動作するのですが、ストアに掲載するために証明書を取得して署名すると、署名自体は成功するにもかかわらず、実行すると次のエラーで終了します。
LSOpenURLsWithRole() failed with error -10810 for the file pkg/elec.app
いろいろ調べてみたのですが、動かすための方法を突き止められずにいます。どなたか回避方法をご存知でしたら教えていただけますでしょうか。
なお、Electron抜きでGoをMacアプリ化したものは正常に署名できることは確認済みなので、Electronに他のバイナリをインクルードした場合の署名方法(後述のスクリプト)のオプション設定に問題があるのではないかと推測しています。Goそのものはおそらく問題とは無関係ではないかと考えています。
再現用サンプルアプリ
問題を再現するために、別途サンプルアプリを作り、署名ありとなしのアプリをそれぞれ置きました。
https://drive.google.com/folderview?id=0B8jpVsBA-4FrQTBJQkZVdlBMaWc&usp=sharing
- elec.app_signed.zip(署名したアプリ: 動かない)
- elec.app_unsigned.zip(署名してないアプリ: 動く)
- child.plist(entitlementで使った設定)
- parent.plist(entitlementで使った設定)
- signing.sh(署名スクリプト: APP_KEYは伏せてあるので、自分のコード署名キー名を指定する必要があります)
アプリの起動シーケンス
アプリは次の段取りで起動します(自分でもイレギュラーだと思います)。
0. アプリを起動する
0. GoのHTTPサーバーが起動する(場所: Contents/MacOS/)
0. そのHTTPサーバーから、同じディレクトリにあるElectronバイナリを起動する
0. Electronが起動し、周辺のヘルパーアプリなども起動される
署名スクリプト
以下は、署名スクリプトsigning.shのコアの部分です。
codesign --deep -fs "$APP_KEY" --entitlements $CHILD $OP "$FRAMEWORKS_PATH/$FW/"
codesign --deep -fs "$APP_KEY" --entitlements $CHILD $OP "$FRAMEWORKS_PATH/$APPSHORT Helper.app/"
codesign --deep -fs "$APP_KEY" --entitlements $CHILD $OP "$FRAMEWORKS_PATH/$APPSHORT Helper EH.app/"
codesign --deep -fs "$APP_KEY" --entitlements $CHILD $OP "$FRAMEWORKS_PATH/$APPSHORT Helper NP.app/"
codesign --deep -fs "$APP_KEY" --entitlements $CHILD $OP "$ENNOBINPATH/$MYELECTRON"
codesign --deep -fs "$APP_KEY" --entitlements $PARENT $OP "$APP_PATH"
追加情報
なおElectronアプリは、以下の「参考」に示したv0.35.6のMAS(Mac App Store)バイナリをベースに、Info.plistを書き換えるなどして使っています。これより新しいバージョンだと署名なしでも動きませんでした。
参考
- http://qiita.com/9m/items/9df6eb44fefb14cb7ceb#comment-70b7971252579c19ec10
- https://github.com/atom/electron/releases?after=v0.35.6
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/20 22:59
2016/03/21 00:06
2016/03/21 00:34